只为那一抹释然
一切没有目标的努力,都是瞎忙活儿。 - Tony Bai 刚实施回来,就又投入到新工作中,到今天才有那么一点点时间写写这件事儿。 * 缘起 我们的遗留系统性能一直不高,导致这一局面的因素有很多,比如最初设计和实现的“考虑不足”、后续维护人员的“随波逐流”甚至缺少勇气对影响性能的关 键代码进行重构等等。技术债务就这样一直积累着。直到两年前,我们终见其导致的巨大的影响了。 ...
一切没有目标的努力,都是瞎忙活儿。 - Tony Bai 刚实施回来,就又投入到新工作中,到今天才有那么一点点时间写写这件事儿。 * 缘起 我们的遗留系统性能一直不高,导致这一局面的因素有很多,比如最初设计和实现的“考虑不足”、后续维护人员的“随波逐流”甚至缺少勇气对影响性能的关 键代码进行重构等等。技术债务就这样一直积累着。直到两年前,我们终见其导致的巨大的影响了。 ...
新三年,旧三年,修修补补又三年。 — 中国俗语。 上面的这句俗语用来形容很多遗留软件系统(legacy software system)的现状是再合适不过了。 今天下午做了一下午的代码评审,对象是一个运行了7年的遗留系统。会上除了几处明显的代码逻辑错误我发言指了出来外,涉及业务流程以及代码设计的问题,我 大多保持沉默。因为我清楚,即便我明确指出问题,可能也得不到修正。也许参与评审代码的其他同事也都知晓这些问题,只是觉得现在还不能去改…。 ...
今天一位网上的朋友在使用reviewboard时遇到了问题,我们在评论中探讨了一下。他的问题目前已经定位,大致是这样的:他在Windows上用svn diff生成的patch文件在提交给reviewboard时出错,但在linux上生成的patch文件是没有问题的。后来他发现这两个patch文件内容稍有区别:Windows上的patch文件中的diff结果包含中文,比如“版本 10”;而在linux下生成的那份patch文件中,“版本 10"变成了"revision 10”。reviewboard拒绝了带中文的那份patch,估计是reviewboard的字符编码设置让其无法识别windows下的那个字符集。 ...
记得上次折腾Review Board这个在线代码评审工具还是在一年前,那时的Review Board版本是1.0.3;这周部门的一位同事也在折腾Review Board,不过现在的版本已经升级到了1.5.1了。新版Review Board显然修正了许多旧版本中存在的问题,另外无法支持ssl邮件端口的问题也被我这位同事通过更换django源文件的方式搞定了。Review Board好用了,下一步需要关注的就是怎样才能用好Review Board的问题了。 ...
一口气读了七章"Code Complete 2nd(以下称CC2e)“中的内容,从第七章的"高质量的子程序"到第十三章的"不常见的数据类型”。之所以一口气读这么多,是因为被其中的内容吸引了。这两天的下午一直在做代码评审,所以晚上看CC2e的时候,思维不停的在项目代码和书中内容之间跳转。一直把"代码大全2nd"当作一门百科全书式的手册类图书,买回来后一直陈放在书架上没有问津。直到今天在考虑一个关于断言使用的问题时,才想起来去查查这本百科全书,想看看书中是如何阐述断言的。于是便拿起了这本书。 ...
CHECKLIST多是类似如下的东西,举一个代码CHECKLIST的例子: 参数的书写是否完整?不要贪图省事只写参数的类型而省略参数名字。 - 参数命名、顺序是否合理? - 参数的个数是否太多? - 是否使用类型和数目不确定的参数? - 是否省略了函数返回值的类型? - 函数名字与返回值类型在语义上是否冲突? 我们常常遇到的一个问题就是在进行source peer review的时候是根据每一个CHECK item去从头到尾看一遍代码(如果有50个CHECK items的话,那就从头到尾看50遍代码)还是记住所有CHECK items,然后只看一遍代码,显然我觉得后者在目前实施的可能性是最大的,也是实施最普遍的。 ...