论坛首页 海阔天空论坛

看看这个笑死我的帖子:"说一说编程恶习"

浏览 12541 次
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-10-19  
Julien 写道
我还搞过一大堆PB里面的数据处理程序要转事务过程
完全傻了,一大堆几乎完全一摸一样的script,但是又不是这个等于那个,数据表处理的部分肯定不同,此外还有一些很细微的赋值转换之类
感情他们写程序就是从一个拷贝成另外一个然后稍微改一下……
于是扔掉eclipse,扎进ultraedit的文本比较器里头泡了泡一个星期,最后大概把整个的规模合并到原来的1/4了


是的!这种情况看来比较普遍。
这种情况下代码逻辑的冗余非常大。
但是(N年前)当我那个同事第一次编写这类程序时,他觉得很爽,这样又快又有成就感(代码量迅速上升),我还记得他经典的一句"我觉得我的代码可移植性还不错。",敢情他的可移植性就是利于Copy & Paste & 改动一点。也不是嘲笑人家,谁不经历成长期?觉得挺有趣的。

近两年搞了一个项目,里面有很复杂的报表。其中好几个是类似和相关的,我的同事做的就跟上面说得差不多。大段的代码是相似但绝不相同,改动了少量地方。我数了一下,这样的大段有12处,大约是由于3x4的变化引起的。即第一个因素有3种可能,第二种因素有4种可能。可以推断,再加一个变化因素,会以倍数增加!

(重构谈得多了,我们这里举一些大家亲身体会的例子更有效果。)

后来我重构了一把,花了一周整理和测试,代码量也是成倍减少,但适应变化的能力提高了。不用担心用户再加一个因素。而且,出错的机会减少了,都是用一套代码,而不是看上去差不多,但各有不同的代码。




0 请登录后投票
   发表时间:2006-10-19  
gigix 写道
simohayha 写道
唉,我们公司 就差不多,整个全是拼音,数据库命名,变量命名,类命名,全是拼音,nnd每次猜得我都郁闷了.

有没有见过“test_0601221453”这样的命名?
名字是写这个测试案例的时间……


这个也够有创意的...这样搞的话,都可以自动命名了。
0 请登录后投票
   发表时间:2006-10-23  
我就是啊  命名规则=英文_拼音缩写
0 请登录后投票
   发表时间:2006-10-23  
adamzhao 写道
simohayha 写道
唉,我们公司 就差不多,整个全是拼音,数据库命名,变量命名,类命名,全是拼音,nnd每次猜得我都郁闷了.


你可曾见过拼音+英文的命名方式? 呵呵,一个变量名足足让人猜了半年才明白是什么意思。

 

呵呵,说不定还能练本领。可以参加天才gogogo
0 请登录后投票
   发表时间:2006-10-23  
Lucas Lee 写道
我刚学编程的时候也不会命名,随便搞个字母就好了,或者什么a1,a2的。
后来也用过一阵子拼音。
在后来还是觉得应该用英语,比较cool。哈哈

其实这种方式并没有什么问题,至少我以前指导的几个公司都用这个方法。
当然我会维护一个程序数据字典,里面对a1、a2这些名称都有对应的中文或者英文名字,如果愿意还可以有简单的介绍(不过我强烈建议这个介绍就免了,因为我相信名字就应该自己说明自己)。并且有小工具可以直接替换这些名字。其实这样也是一种测试的方法。
0 请登录后投票
   发表时间:2006-10-23  
ozzzzzz 写道
Lucas Lee 写道
我刚学编程的时候也不会命名,随便搞个字母就好了,或者什么a1,a2的。
后来也用过一阵子拼音。
在后来还是觉得应该用英语,比较cool。哈哈

其实这种方式并没有什么问题,至少我以前指导的几个公司都用这个方法。
当然我会维护一个程序数据字典,里面对a1、a2这些名称都有对应的中文或者英文名字,如果愿意还可以有简单的介绍(不过我强烈建议这个介绍就免了,因为我相信名字就应该自己说明自己)。并且有小工具可以直接替换这些名字。其实这样也是一种测试的方法。


敢问用啥写的程序阿? 如果a1 a2这种的,从类名到局部变量名,到函数名,到..... 都有的话,怎莫对应呢?

不知道是啥样的小工具,“直接替换这些名字“,是文本形式的呢,还是语义形式的呢?

语义形式的的话,基本上就等价 rename的refactor了,CDT可是折腾了半天才出来一个rename的refactor的。

0 请登录后投票
   发表时间:2006-10-23  
ozzzzzz 写道
Lucas Lee 写道
我刚学编程的时候也不会命名,随便搞个字母就好了,或者什么a1,a2的。
后来也用过一阵子拼音。
在后来还是觉得应该用英语,比较cool。哈哈

其实这种方式并没有什么问题,至少我以前指导的几个公司都用这个方法。
当然我会维护一个程序数据字典,里面对a1、a2这些名称都有对应的中文或者英文名字,如果愿意还可以有简单的介绍(不过我强烈建议这个介绍就免了,因为我相信名字就应该自己说明自己)。并且有小工具可以直接替换这些名字。其实这样也是一种测试的方法。


局部变量如果生存范围很小的话,用a1,a2的命名方式影响不大,比如在只有两三行的method里这么用(即便是这样我还是宁愿使用带意义的命名,比如result)。

如果在instant,class 变量里这么用,危害比较大了。维护一个数据字典不如自己说明自己的命名,省去了翻字典的过程。易读性好多了。
0 请登录后投票
   发表时间:2006-10-26  
基于文本的就行了,不用搞基于语义的那么复杂。其实我说的这种情况稍微有点开发时间的人都遇到过。当然我们这样做的目的也仅仅是基于商业竞争的考虑。
0 请登录后投票
   发表时间:2006-10-26  
又一个参与挖坟行列的。

此风不可涨啊,此风不可涨。
0 请登录后投票
   发表时间:2006-10-26  
召唤t1,以前听他说过他的在两三个文件里面跳转的指针,真的想看看人类智慧飞跃到什么地步了。 
0 请登录后投票
论坛首页 海阔天空版

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