论坛首页 海阔天空论坛

目前项目的暴强代码风格 + 把它重构了!

浏览 31850 次
精华帖 (0) :: 良好帖 (31) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-16  
如果说doProcessIfParentOfTaskIsTaskNode还勉强能看懂
这句话我是无论如何没法从字面上猜出意思来的:isShouldDouldDoProcess
0 请登录后投票
   发表时间:2008-12-16  
我记得java里不提倡把方法名和变量名缩写。

cust是customer还是custard?
num是number还是numerology?
——例子来自《Agile Java》

想一个简练的名字就好了,当句子来写也有点过了。。
不过有时候名字不好起,感觉用中文还比较容易描述。。。不好办哪
0 请登录后投票
   发表时间: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的意思。

改过来了      谢谢提醒!!!!
0 请登录后投票
   发表时间:2008-12-16   最后修改:2008-12-16
sg552 写道

我个人在编码的时候是最不喜欢看到单词简写的方法。而且java代码规范是
骆驼表示法,所以我一直都是这样用的。

如果有维护人员看到我的代码骂我也没关系,我在项目结束之后都会写个
比较详细的文档,注明如果读者有任何问题可以随时跟我联系。


呃。。。我写错了!
我还纳闷呢。。。Dould 是啥意思。。。。
我当时是想命名成: isShouldDoProcess ,也就是 是否应该xx的意思。

改过来了      谢谢提醒!!!!



还不如叫process1, process2 好了,反正都要看你的详细doc,还比你的鬼骆驼好记.
0 请登录后投票
   发表时间:2008-12-16  
doProcessIfParentOfTaskIsTaskNode
要是我来写,这个直接写成processTask,方法里面具体是怎么判断的,打开方法看代码就好了。我觉得没必要把一个方法里判断的条件都用方法名描述出来。

那个isShouldDoProcess改成shouldBeProcessed会不会好些?
0 请登录后投票
   发表时间:2008-12-16  
深秋小雨 写道
doProcessIfParentOfTaskIsTaskNode
要是我来写,这个直接写成processTask,方法里面具体是怎么判断的,打开方法看代码就好了。我觉得没必要把一个方法里判断的条件都用方法名描述出来。

那个isShouldDoProcess改成shouldBeProcessed会不会好些?


我觉得你的更好一点 :)
0 请登录后投票
   发表时间:2008-12-16   最后修改:2008-12-16
我只是写了个c风格的名字

如果要求不简写,并且骆驼,那么这么写:

processTransaction(Instance instance, boolean isTransaction)

事实上,不会被重用的短短几行,我觉得完全没必要抽出来。
0 请登录后投票
   发表时间: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)


0 请登录后投票
   发表时间:2008-12-17  
庄表伟 写道
我认为,重构中,最重要的一项是:“命名”。修改函数的名称,修改变量的名称,抽取函数、分解函数后,同样需要给新的函数命名。
不理解程序,你如何命名?

如果重构的目的,仅仅是为了保持代码的行为不变,当然只需要考虑“形式化的过程”。

我很理解你会这样说,因为你并没有在一个完全不熟悉的、超级复杂的系统里去专门做重构──大多数人做的大多数重构,都是与自己的开发实践结合在一起的,这固然是很正常的,但是也决定了大多数人缺乏机会去专门思考重构本身的技术实践。
简单的说,在你重构的过程中,你就逐渐理解原来的程序了
这才使得重构成为一个可操作的实践。否则你就会遇到一个两难境地:你要先理解原来程序才重构,但最需要重构的程序是你无法理解的。
3 请登录后投票
   发表时间:2008-12-17   最后修改:2008-12-17
gigix 写道
引用
然后用看程序。大概耗时30分钟。加了注释,

我只想说,你这步就做得很差劲
像这么简单的程序,打开Eclipse或者IDEA就直接开始搞,一边重构一边就能看懂了
重构首先是一个形式化的过程:如果必须把代码看懂了才能重构的话,那么你就会让自己陷入一个悖论,因为最需要重构的代码你是看不懂的
你接着做吧…我只是想告诉你,有时候其实是五十步笑百步而已

你确定你懂形式化吗,形式化是要有严格数学推导的,如果重构是形式化的、不需要理解代码的,那么重构就不需要人来做了,完全可以写个工具去自动完成所有的重构
0 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics