锁定老帖子 主题:目前项目的暴强代码风格 + 把它重构了!
精华帖 (0) :: 良好帖 (31) :: 灌水帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-16
如果说doProcessIfParentOfTaskIsTaskNode还勉强能看懂
这句话我是无论如何没法从字面上猜出意思来的:isShouldDouldDoProcess |
|
返回顶楼 | |
发表时间:2008-12-16
我记得java里不提倡把方法名和变量名缩写。
cust是customer还是custard? num是number还是numerology? ——例子来自《Agile Java》 想一个简练的名字就好了,当句子来写也有点过了。。 不过有时候名字不好起,感觉用中文还比较容易描述。。。不好办哪 |
|
返回顶楼 | |
发表时间:2008-12-16
seen 写道 3. 1 选中下面的这段代码,然后 alt + shift + m。 起个名字,叫。。。呃。。。。
setTransitionPathOrEndOrSignalAnInstanceIfIsTransition吧。 我想表达的意思是:当 isTransition的时候,setTransitionPath或者signal()或者end()一个instance... Java代码 if (isTransition) if (!instance.hasEnded()) { if (transitionPath != null && !"".equals(transitionPath)) instance.signal(transitionPath); else instance.signal(); } else { instance.end(); } } -------------- 按照你的描述,我会这么写: proc_inst(struct instance inst, int is_trans) 我个人在编码的时候是最不喜欢看到单词简写的方法。而且java代码规范是 骆驼表示法,所以我一直都是这样用的。 如果有维护人员看到我的代码骂我也没关系,我在项目结束之后都会写个 比较详细的文档,注明如果读者有任何问题可以随时跟我联系。 ![]() seen 写道 如果说doProcessIfParentOfTaskIsTaskNode还勉强能看懂
这句话我是无论如何没法从字面上猜出意思来的:isShouldDouldDoProcess 呃。。。我写错了! 我还纳闷呢。。。Dould 是啥意思。。。。 我当时是想命名成: isShouldDoProcess ,也就是 是否应该xx的意思。 改过来了 ![]() |
|
返回顶楼 | |
发表时间:2008-12-16
最后修改:2008-12-16
sg552 写道 我个人在编码的时候是最不喜欢看到单词简写的方法。而且java代码规范是 骆驼表示法,所以我一直都是这样用的。 如果有维护人员看到我的代码骂我也没关系,我在项目结束之后都会写个 比较详细的文档,注明如果读者有任何问题可以随时跟我联系。 ![]() 呃。。。我写错了! 我还纳闷呢。。。Dould 是啥意思。。。。 我当时是想命名成: isShouldDoProcess ,也就是 是否应该xx的意思。 改过来了 ![]() 还不如叫process1, process2 好了,反正都要看你的详细doc,还比你的鬼骆驼好记. |
|
返回顶楼 | |
发表时间:2008-12-16
doProcessIfParentOfTaskIsTaskNode
要是我来写,这个直接写成processTask,方法里面具体是怎么判断的,打开方法看代码就好了。我觉得没必要把一个方法里判断的条件都用方法名描述出来。 那个isShouldDoProcess改成shouldBeProcessed会不会好些? |
|
返回顶楼 | |
发表时间:2008-12-16
深秋小雨 写道 doProcessIfParentOfTaskIsTaskNode
要是我来写,这个直接写成processTask,方法里面具体是怎么判断的,打开方法看代码就好了。我觉得没必要把一个方法里判断的条件都用方法名描述出来。 那个isShouldDoProcess改成shouldBeProcessed会不会好些? 我觉得你的更好一点 :) |
|
返回顶楼 | |
发表时间:2008-12-16
最后修改:2008-12-16
我只是写了个c风格的名字
如果要求不简写,并且骆驼,那么这么写: processTransaction(Instance instance, boolean isTransaction) 事实上,不会被重用的短短几行,我觉得完全没必要抽出来。 |
|
返回顶楼 | |
发表时间:2008-12-16
最后修改:2008-12-16
laiseeme 写道 那么package要是有两个单词怎么整?
下划线? 自己看看呗 org.aopalliance.aop (AOP Alliance) org.apache.commons.beanutils (apache-commons) org.dom4j.datatype (dom4j) org.apache.hivemind.methodmatch (Hivemind) org.hibernate.bytecode.javassistr (Hibernate) org.springframework.stereotype (Spring) org.apache.tapestry.scriptaculous (Tapestry) javax.management.modelmbean (JBoss ?) org.jfree.chart.imagemap (JFreeChart) org.acegisecurity.securechannel (Acegi) |
|
返回顶楼 | |
发表时间:2008-12-17
庄表伟 写道 我认为,重构中,最重要的一项是:“命名”。修改函数的名称,修改变量的名称,抽取函数、分解函数后,同样需要给新的函数命名。
不理解程序,你如何命名? 如果重构的目的,仅仅是为了保持代码的行为不变,当然只需要考虑“形式化的过程”。 我很理解你会这样说,因为你并没有在一个完全不熟悉的、超级复杂的系统里去专门做重构──大多数人做的大多数重构,都是与自己的开发实践结合在一起的,这固然是很正常的,但是也决定了大多数人缺乏机会去专门思考重构本身的技术实践。 简单的说,在你重构的过程中,你就逐渐理解原来的程序了。 这才使得重构成为一个可操作的实践。否则你就会遇到一个两难境地:你要先理解原来程序才重构,但最需要重构的程序是你无法理解的。 |
|
返回顶楼 | |
发表时间:2008-12-17
最后修改:2008-12-17
gigix 写道 引用 然后用看程序。大概耗时30分钟。加了注释,
我只想说,你这步就做得很差劲 像这么简单的程序,打开Eclipse或者IDEA就直接开始搞,一边重构一边就能看懂了 重构首先是一个形式化的过程:如果必须把代码看懂了才能重构的话,那么你就会让自己陷入一个悖论,因为最需要重构的代码你是看不懂的 你接着做吧…我只是想告诉你,有时候其实是五十步笑百步而已 你确定你懂形式化吗,形式化是要有严格数学推导的,如果重构是形式化的、不需要理解代码的,那么重构就不需要人来做了,完全可以写个工具去自动完成所有的重构 |
|
返回顶楼 | |