`
climber2002
  • 浏览: 63484 次
  • 性别: Icon_minigender_1
  • 来自: 法国
社区版块
存档分类
最新评论

一个应该忏悔的代码片段

阅读更多
请看下面这段代码:

// append every msisdn string in msisdnArray to target list file
			for (int i = 0; i < msisdnArray.length; i++) {

				//disable the function of check the duplicated MSISDN in target list
			//	if (!this.existInTodayFile(msisdnArray[i])) {

					this.addMsisdnToCache(msisdnArray[i]);
					writer.write(msisdnArray[i] + "\r\n");
					log.debug("The MSISDN: " + msisdnArray[i] + " was add to TargetList file successfully!");
			//	}
			} // end of for


这段代码不是我写的,不过整个项目基本上是我设计的,现在这个项目需要维护,existInTodayFile这个函数是检查文件中MSISDN是否已经存在,今天一个维护的同事问我为什么要把这行注释掉,我依稀记得注释掉这行代码的决定是我做的,但时至今日,我已经根本想不起来为什么要把这一行注释掉了。
分享到:
评论
31 楼 yangtao309 2009-04-25  
项目开发的时候 先做测试是必要的
用Junit进行单体测试 或者用DBunit测试都可以

我是习惯现在测试表间关系 以及配置关系 然后再具体的开发功能
可能前期很话时间 真的可以避免很多问题

最近的一个项目 一同事觉得测试费时间 就直接上手现实功能部分
要数据就自己在数据表里面添加
然后就出错误了 而且还很难找到原因
最后发现是oracle下建的序列没有开始滚动

而我之先 对自己负责的表关系都进行了增加删除 级联的操作
就没有出现这样的问题
同样 后面要数据 也是在数据表里面加的

测试费事 但却是保证后续开发的高效完成
30 楼 黑暗浪子 2009-04-25  
hsbljyy 写道
这就应该忏悔啦?我碰到过从头到尾一大堆注释掉的代码,可是解释都不解释为什么,而且代码功能也都不写注释,最为关键的是,我要去修改、维护这些代码,而我又不是那种喜欢说三道四的人,给我任务,我会蒙头把代码一行行看完,弄清楚是为什么再改,这样速度就慢了,慢了就有人催,催着就急着做,急着做就容易出问题,结果老是被骂,有的时候真的想说一点三字经,骂远些写代码的人。PS:其实Java代码还好,比较规范,容易懂,你想想看,已要维护一个JSP页面4K多行的JS代码时,你想想看那痛苦程度了!而且都是一坨一坨的。

说道这个,我向各位兄弟说一下。在上海找工作千万不要去一家叫“协同”的公司,他们就是JSP里面7,8K行代码的。
我一个师弟做了两个月就“逃”出来了。这公司还有分公司呢,看起来蛮大的。
29 楼 抛出异常的爱 2009-04-25  
引用

引用
兄台没有碰到因为JSP过长,JVM不能编译的情况吧。我就碰到过,大家可以猜猜里面是啥东东了。


JVM都不能编译?JSP不是在运行时才编译的吗?你是指在Web Container中不能编译?不会吧!?


java也有可能过不了jvm的
28 楼 heavener 2009-04-25  
大家在真正部署项目的时候都会把注释去掉吗?js都会压缩吗?
27 楼 hsbljyy 2009-04-25  
<div class="quote_title">jansel 写道</div>
<div class="quote_div">兄台没有碰到因为JSP过长,JVM不能编译的情况吧。我就碰到过,大家可以猜猜里面是啥东东了。</div>
<p> </p>
<p> JVM都不能编译?JSP不是在运行时才编译的吗?你是指在Web Container中不能编译?不会吧!?</p>
26 楼 jansel 2009-04-25  
hsbljyy 写道
这就应该忏悔啦?我碰到过从头到尾一大堆注释掉的代码,可是解释都不解释为什么,而且代码功能也都不写注释,最为关键的是,我要去修改、维护这些代码,而我又不是那种喜欢说三道四的人,给我任务,我会蒙头把代码一行行看完,弄清楚是为什么再改,这样速度就慢了,慢了就有人催,催着就急着做,急着做就容易出问题,结果老是被骂,有的时候真的想说一点三字经,骂远些写代码的人。PS:其实Java代码还好,比较规范,容易懂,你想想看,已要维护一个JSP页面4K多行的JS代码时,你想想看那痛苦程度了!而且都是一坨一坨的。


兄台没有碰到因为JSP过长,JVM不能编译的情况吧。我就碰到过,大家可以猜猜里面是啥东东了。
25 楼 hsbljyy 2009-04-25  
最关键的是,代码都没怎么测试就上线啦,你说晕不晕哦。。。整个公司4个人,3条产品线在开发,有一个还是生产型的系统,而我负责的正式那个生产型的系统,晕死。
24 楼 hsbljyy 2009-04-25  
这就应该忏悔啦?我碰到过从头到尾一大堆注释掉的代码,可是解释都不解释为什么,而且代码功能也都不写注释,最为关键的是,我要去修改、维护这些代码,而我又不是那种喜欢说三道四的人,给我任务,我会蒙头把代码一行行看完,弄清楚是为什么再改,这样速度就慢了,慢了就有人催,催着就急着做,急着做就容易出问题,结果老是被骂,有的时候真的想说一点三字经,骂远些写代码的人。PS:其实Java代码还好,比较规范,容易懂,你想想看,已要维护一个JSP页面4K多行的JS代码时,你想想看那痛苦程度了!而且都是一坨一坨的。
23 楼 黑暗浪子 2009-04-25  
night_stalker 写道
fantasybei 写道

原来在js里写了很多注释,现在要求全部删除,说是为了减小文件大小。


发布时用 js 压缩工具筛掉就可以了,开发版本还是留着注释好。

我就非常喜欢那些JS小工具,其实JS研究透了,也很博大精深啊~
22 楼 whaosoft 2009-04-25  
时间太久 忘了吧 呵呵 没版本控制??
21 楼 baiuterfk 2009-04-24  
原来设计应该是,一个MSISDN在一天当中只记录一次到文件中,即TodayFile;后来用户改了需求,说“有就记,不用管别的,按照时间顺序,来一次记一次……”等。然后你就改了,不加判断了。
20 楼 fjlyxx 2009-04-24  
vlinux 写道
fjlyxx 写道
this.addMsisdnToCache(msisdnArray[i]);  我不知道你这是不是一个缓存, 如果是,说实话我很害怕别人写这种代码.因为我无法保证msisdnArray这个东西 外部调用的时候会不会进行重新赋值,如果会 那么我加到缓存里面的都是最后一次的外部赋值.所以建议msisdnArray里面的东西要实现克隆接口.



你的担心是没必要的哦,对方只是想把手机号码缓存起来而已,并不会对原有的数组进行操作


呵呵 我的担心是这样的

看下面代码(简单写下,见谅)
//这个暂且将上面的把对象加入到缓存的过程看成这个函数吧
public void addCache(Object o){
     addMsisdnToCache(o);
}
看下面的调用函数
//创建一个对象
Object o=new Object();

for(;;){
    o.setXXX(...);
    addCache(o);
}
我担心的就是上面这种情况,模块化的东西这种错误还是经常可以看见的.(如线程的队列,个人建议线程中队列的节点对象必须要实现克隆的接口,当然缓存也这么建议(初始化的时候))
for(;;){
    Object o=new Object();
    o.setXXX(...);
    addCache(o);
}
这两种写法有着本质的区别.

另外SVN的提交是可以设置成必须写备注的.不过如果没有严格的规范写了也是白写.所以我觉得分支还是有必要搞的.
19 楼 night_stalker 2009-04-24  
fantasybei 写道

原来在js里写了很多注释,现在要求全部删除,说是为了减小文件大小。


发布时用 js 压缩工具筛掉就可以了,开发版本还是留着注释好。
18 楼 fantasybei 2009-04-24  

原来在js里写了很多注释,现在要求全部删除,说是为了减小文件大小。
17 楼 linhong_1001 2009-04-24  
注释像是废话
16 楼 vlinux 2009-04-24  
regular 写道
一般不加comment的,提交的内容应该被打回。
如果提交的东西导致编译失败的,应该被打回。

楼主的这段代码,代码中没有明显的说明注释原因,注释者,注释时间。
提交的时候也不加任何说明,当属被打回之列。


人家那是开发阶段,一切都是没经过验证的,总不能写一行代码加一段注释呀。而且根据楼主的描述,他似乎就是这个模块的负责人了。开发阶段一般很少有人检查那么细致的
15 楼 vlinux 2009-04-24  
fjlyxx 写道
this.addMsisdnToCache(msisdnArray[i]);  我不知道你这是不是一个缓存, 如果是,说实话我很害怕别人写这种代码.因为我无法保证msisdnArray这个东西 外部调用的时候会不会进行重新赋值,如果会 那么我加到缓存里面的都是最后一次的外部赋值.所以建议msisdnArray里面的东西要实现克隆接口.



你的担心是没必要的哦,对方只是想把手机号码缓存起来而已,并不会对原有的数组进行操作
14 楼 jspine 2009-04-24  
要么不写要写就一定要写个大家都看的明白的。。。。。不然简直是在给自己找罪。。。
13 楼 dwwind 2009-04-24  
这样的注释留着不直接删除的危害要大。
见过代码中70%左右的都给注释掉的程序,那注释让我很为难:也许是有用的,但是现在没用到?
最后看到了这样的注释直接的干掉了,免得后人又为难!
12 楼 抛出异常的爱 2009-04-24  
黑暗浪子 写道
抛出异常的爱 写道
很可能是
当时msisdn里面没数据
又懒的加测试用数据.
还想要把这个程序页面展现出来

这一般是不作测试用例常见的问题

如果是msisdn里面没数据。注释不注释都不执行for里面的代码。
我认为是那个if里面永远是false,不会执行if里面的代码。也就是每天的文件里都会有msisdn数据,因此加这个if就没什么必要。所以注释了,不知道我的推理对不对。

是没看清楚
不过更有可能是用来判断文件中存不存重的代码在本程序的其它地方还有一处......
本处再用就是重复了.而且i/o很降效率

相关推荐

Global site tag (gtag.js) - Google Analytics