锁定老帖子 主题:17486行的java 类文件
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-30
我见过更长了,维护起来让人恶心。
|
|
返回顶楼 | |
发表时间:2011-08-30
我有洁癖,一般代码都不超过300行
|
|
返回顶楼 | |
发表时间:2011-08-30
george_space 写道 说的委婉点:这个类写得不怎么样;
说得难听点:这个类就是一坨屎。 类中n多类似这样的硬编码: getStrByID("4008bill", "UPP4008bill-000064") .getStrByID("4008bill", "UPP4008bill-000340" gvo.getHeaderValue("vbillcode") .getItemValue(0, "idesatype"); getStrByID("4008bill", "UPP4008bill-000013") n多if-elseif n多变量掺和在方法之间,类变量并没有集中定义, 类中宁可使用 /** * 创建者:王乃军 功能:签字 参数: 返回: 例外: 日期:(2001-5-9 9:23:32) * * 修改日期,修改人,修改原因,注释标志: 修改人:刘家清 修改日期:2007-11-14下午03:51:17 修改原因:签字时间由后台处理。 */ 这样的自己格式的注释,也不使用标准的javadoc注释,更不用谈什么设计模式了。 下面是我写得一个类,虽然算不上什么牛类,但是可以跟楼主的万行大类对比一下,看看什么是标准的Javadoc注释,什么是条理性: /* * Programming by: George [it is a secret@gmail.com] * Copyright (C) George And George Companies to Working For, All Rights Reserved. */ package com.[It is a secret].web.[secret].service.cm.helper; import com.[secret].web.base.contentmodule.beans.CustomFieldViewBean; import com.[secret].web.base.contentmodule.beans.entities.SysCmFieldsDataTypeApi; import com.[secret].web.base.contentmodule.beans.entities.SysCmFieldsRegApi; import com.[secret].web.base.contentmodule.beans.entities.SysCmFieldsViewTypeApi; import com.[secret].web.base.contentmodule.command.CmfDataTypeBeanListCommand; import com.[secret].web.base.contentmodule.command.CmfViewTypeBeanListCommand; import com.[secret].web.[secret].service.bean.Sro; import com.[secret].web.[secret].service.cm.component.CmfComponentListContext; import com.[secret].web.[secret].service.cm.component.CmfScriptEngineHelper; import com.[secret].web.[secret].service.cm.component.CustomFieldListHelper; import com.[secret].web.[secret].service.cm.component.FieldDataTypeBeanMapHelper; import com.[secret].web.[secret].service.cm.component.FieldViewTypeBeanMapHelper; import com.[secret].web.[secret].service.cm.component.GetCustomFieldBeanListCmd; import java.util.HashMap; import java.util.List; /** * * @author George [it is a secret@gmail.com] */ public class CmfComponentsHelper { /** * 得到内容模型自定义字段的组件列表 * @param doType 操作类型,Add=添加,Edit=编辑,此字符串参数从{@link DoTypeDef}类获得 * @param rootUriOfCurrentPage 页面根URI * @param getCustomFieldBeanListCmd 得到自定义字段bean list的命令对象 * @param cmfViewTypeBeanListCommand 得到视图层bean list 的命令对象 * @param cmfDataTypeBeanListCommand 得到数据类型bean list的命令对象 * @return 内容模型自定义字段组件列表 * @since v 1.9 2010-5-1 */ public static Sro<CustomFieldViewBean> getCustomFieldComponentList( String doType, String rootUriOfCurrentPage, GetCustomFieldBeanListCmd getCustomFieldBeanListCmd, CmfViewTypeBeanListCommand cmfViewTypeBeanListCommand, CmfDataTypeBeanListCommand cmfDataTypeBeanListCommand) { Sro<CustomFieldViewBean> returnValue = new Sro<CustomFieldViewBean>(); //创建系列职责链结点 CustomFieldListHelper customFieldListHelper = new CustomFieldListHelper(getCustomFieldBeanListCmd); FieldViewTypeBeanMapHelper fieldViewTypeBeanMapHelper = new FieldViewTypeBeanMapHelper(cmfViewTypeBeanListCommand); FieldDataTypeBeanMapHelper fieldDataTypeBeanMapHelper = new FieldDataTypeBeanMapHelper(cmfDataTypeBeanListCommand); CmfScriptEngineHelper cmfScriptEngineHelper = new CmfScriptEngineHelper(); //组装职责链 customFieldListHelper.setNextChain(fieldViewTypeBeanMapHelper); fieldViewTypeBeanMapHelper.setNextChain(fieldDataTypeBeanMapHelper); fieldDataTypeBeanMapHelper.setNextChain(cmfScriptEngineHelper); //组装职责链上下文对象 CmfComponentListContext context = new CmfComponentListContext(); context.setDoType(doType); context.setRootUriOfCurrentPage(rootUriOfCurrentPage); //执行职责链 context = customFieldListHelper.process(context); //从职责链上下文中得到结果对象 CustomFieldViewBean customFieldViewBean = context.getCustomFieldViewBean(); returnValue.addReturnValue(customFieldViewBean).success(); return returnValue; } /** * 根据自定义字段配置信息和视图展现类型,得到展现的html列表 * @param customFieldList 自定义字段列表 * @param fieldsValueMap 字段值map * @param viewTypeBeanMap 视图层战线类型bean map * @param dataTypeBeanMap 数据类型 bean map * @param doType doType 操作类型,Add=添加,Edit=编辑,此字符串参数从{@link DoTypeDef}类获得 * @param rootUriOfCurrentPage 页面根URI * @return 视图层战线类型bean列表 */ public static Sro<CustomFieldViewBean> getCustomFieldComponentList( List<? extends SysCmFieldsRegApi> customFieldList, HashMap<String, Object> fieldsValueMap, HashMap<String, SysCmFieldsViewTypeApi> viewTypeBeanMap, HashMap<String, SysCmFieldsDataTypeApi> dataTypeBeanMap, String doType, String rootUriOfCurrentPage) { Sro<CustomFieldViewBean> returnValue = new Sro<CustomFieldViewBean>(); //创建系列职责链结点 CustomFieldListHelper customFieldListHelper = new CustomFieldListHelper(customFieldList); FieldViewTypeBeanMapHelper fieldViewTypeBeanMapHelper = new FieldViewTypeBeanMapHelper(viewTypeBeanMap); FieldDataTypeBeanMapHelper fieldDataTypeBeanMapHelper = new FieldDataTypeBeanMapHelper(dataTypeBeanMap); CmfScriptEngineHelper cmfScriptEngineHelper = new CmfScriptEngineHelper(); //组装职责链 customFieldListHelper.setNextChain(fieldViewTypeBeanMapHelper); fieldViewTypeBeanMapHelper.setNextChain(fieldDataTypeBeanMapHelper); fieldDataTypeBeanMapHelper.setNextChain(cmfScriptEngineHelper); //组装职责链上下文对象 CmfComponentListContext context = new CmfComponentListContext(); context.setDoType(doType); context.setRootUriOfCurrentPage(rootUriOfCurrentPage); //执行职责链 context = customFieldListHelper.process(context); //从职责链上下文中得到结果对象 CustomFieldViewBean customFieldViewBean = context.getCustomFieldViewBean(); returnValue.addReturnValue(customFieldViewBean).success(); return returnValue; } //...... //省略若干方法 //...... } /* * Programming by: George [it is a secret@gmail.com] * Copyright (C) George And George Companies to Working For, All Rights Reserved. */ package com.[secret].web.[secret].service.cm.component; /** * * @author George [it is a secret@gmail.com] */ public class CmfScriptEngineHelper extends AbstractCmfComponentListHelperChain { public CmfScriptEngineHelper() { } /** * 内容模型自定义字段职责链中的一个节点:负责自定义字段页面渲染的模板解析引擎 * @param context 内容模型自定义字段展现处理的上下文对象 * @return 内容模型自定义字段展现处理的上下文对象 */ @Override public CmfComponentListContext process(CmfComponentListContext context) { //创建模板解析器创建者实现对象 CmfScriptResolverBuilderImpl scriptResolverBuilder = new CmfScriptResolverBuilderImpl(); //创建解析器创建者导演 CmfScriptResolverDirector scriptResolver = new CmfScriptResolverDirector(scriptResolverBuilder); //执行模板脚本解析 context = scriptResolver.doResolving(context).getContext(); //设置上下文状态 context.getExecution().success(); return context; } } 类不在长,有条理则灵; 智商不在高,够细心则灵; 代码不怕多,有标准注释则灵。 注释不错, +1 |
|
返回顶楼 | |
发表时间:2011-08-30
你想说明什么
|
|
返回顶楼 | |
发表时间:2011-08-30
wison_wu 写道 我这边一个类两万多行,service,dao,action全在一个类里面。我找谁说理去
好奇! |
|
返回顶楼 | |
发表时间:2011-08-30
这个没什么,最近在维护,一个方法8000多行 基本上没注视 看的一个纠结。
|
|
返回顶楼 | |
发表时间:2011-08-30
十多年了
才1W多行。。。 不多吧。。。。 查了一下,2001年5月 jdk1.3.1刚刚发布。。。。。 那时我才高二。。。 |
|
返回顶楼 | |
发表时间:2011-08-30
类长 不算什么,但是寿命长, 还是值得围观一下
|
|
返回顶楼 | |
发表时间:2011-08-31
这个模块的类哥以前维护过,30000多行的也有
不过话说回来,这么复杂的业务逻辑重构一次起码要1-2年以上 |
|
返回顶楼 | |
发表时间:2011-08-31
VERY BAD and Fire your developer!
|
|
返回顶楼 | |