有位同学在我的另一个贴里面写:
抱怨毛啊。
说个事吧,以前有个项目(网游),有个同事离职了,后来没有人看得懂他的代码,然后就都重新写了。。。
说实话,我在一些地方曾经说过:做“架构”最重要的就是平衡一事,比如要注意团队的理解能力和技术的先进性之间的平衡。上面这位同学说的情况,很多时候就是我说的这个平衡问题。当然,也有代码写得很烂不知道是个什么意思的。
不过我想无论是代码真写得烂,还是平衡性做得不好,都是有槽点的。前者毋庸置疑那就是烂,后者需要看情况了。比如说连DRY都不知道何物,代码到处Copy Paste,有人用更好的方式进行重构结果被抱怨看不懂,然后稀里哗啦改回了Copy Paste模式。对啊,每一处都很好懂,可是一旦改起来就非老鼻子劲了。这个问题不多说了,能懂的我再写也是罗嗦,不懂的写多少都不会动,直到你撞冰山的时候你才会觉得自己错了。关于这个问题在补充一下,那个自动隐藏物内容的列,老板打算针对每一个DataGrid当中的每一个有可能没有内容的列,写一遍:
<mx:DataGridColumn ... labelFunction="showXXX()" />
function showXXX() : void
{
...
if (...)
column.visible = false;
else
column.visible = true;
}
呵呵,每列的判断代码还些微有些不同,但你看这怎么都是几乎一个意思。有个页面有两个DataGrid,每个有十来个列,所以就有大概三十来个这样的短小精悍意思一样的函数出现。
如果你仔细思考,你还会发现这种奇葩的代码并不是根据某一列是否有任意内容来决定某一列的显示和隐藏的,而是根据某一个单元格来决定某一列是否显示。脑补一下吧,如果更新数据的时候,这一列交叉出现有和没有的内容,那么这一列就要不停的设置显示然后隐藏然后再显示在隐藏。性能问题我就不说了,虽然看着很难受但反正现在CPU能力足够我也不在意这些。关键是,如果最后该列最后一行是没有内容的,那么尽管前面的列都有内容,这一列仍然是不会显示的。
这种明显的错误,我都不好意思指出来。原因倒不是我觉得太伤人面子,而是我模拟运行了一下对方的大脑,觉得最后的结果是听不懂的几率大概有一半,到时候我还得替大家找台阶下。
是的,我当时想Fix这个Bug来的,顺便将这种自动隐藏功能封装在一个地方,一旦有问题或者需要改,定位和处理都会比较方便。总不至于像现在这样,想要Fix这个Bug还要挨个DataGrid来读和修改。不过,既然理解不了,那就算了咯。
我郁闷的是,让人做A,结果A没有给我汇报结果,去修改B了,幸好我中间去问下,做的怎么样了?然后发现B业务逻辑上是不应该去修改的,应该在更上层做处理,然后巴拉巴拉的说了一大堆,终于让人听明白了。
顺带求问sumtec,如何带领下面的人?
8楼 @ichenxiaodao 我想对事不对人,给出原贴连接主要是把前因后果贴一遍很多余。其实,我还是有点不理解你说的“先让你知道”是哪一种意思。如果是说为什么不圈你,那么除了前面的解答外,我想其实不圈你不也看到了么?如果你的意思是别的意思,那就另当别论了。
clean code确实非常难,即使我现在的环境,rd都非常在意clean code,经常会讨论程序的架构设计的问题,但是鉴于精力有限以及个人能力的局限性,各种脏的东西总是会慢慢冒出来。说实话,维护一个项目是个异常复杂的事情。超过一定时间,建议做重构。一个是技术升级了,一个是系统已经难以维护了。这个时间依赖于维护有多优秀