从代码质量去看背后的利益与人件冲突

从代码里你可以看到什么?
服务器君一共花费了353.184 ms进行了5次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

经常有小同事和我说,这程序的代码写的太垃圾了,什么水平。确实如此,大部分持续存在一段时间的程序代码质量都不怎么样。

从圈复杂度的角度看,超过15的代码就很看了会头疼了,但可怕的是圈复杂度到70、80的也不是没有。谁要去负责改这种代码,估计上吊的心都有:不改不行,改了谁知道出什么问题? 

从这种代码里能看出来什么,很说明的人的心境。说看到技术水平较差的大多是刚毕业的兄弟。说看到利益纠葛,人心世道的大概就是成年老鸟了。 我持后一种观点。 

为什么世界上会有这么多垃圾代码,这绝对不只是因为技术不行。如果世界只由技术因素主宰,那么按理说只要一个软件存在的时间足够长,投入的人力足够多,代码一定会变的足够好。但事实恰恰与这相反,存在时间越长的代码往往越垃圾。

这可以做简单理解。

既存的代码表征着一种市场价值,如果改了它那么一旦造成的损失谁来负责?程序员来负责?经理来负责?

没人来负责,那么只能破坏逻辑清晰性来保证妥当性,代码自然就会变得越来越垃圾。所以说这里首先是利益纠葛问题。

这是非常有意思的一个课题,因为改好代码长期有收益,短期必然有风险---再牛的人也没办法保证自己的修改毫无偏差。宏观来看,保证好代码真的很简单:找一帮有责任心的很牛的人,让他们不考虑市场因素的持续进行重构,那代码必然越变越好。

而关键则是,如果你是CEO,你愿意这么干么?所以说在闭源的前景下,谁要是真想保证代码质量,先要摆平利益纠葛。软件工程离了这个就真像任人打扮的小姑娘,实质上可以是翠花、可以红袖,但就不能是自己。 

接下来是个人的问题,假设说是闭源的代码,同时更进一步,Review不怎么做,或者说做了也就意思一下,那会怎么样?结果也很简单,代码这时候会成为负面心思的大集合。

想换工作的、家里有事的、感觉公司里不重视技术的都在写代码,赶进度的、加班熬夜的也在写代码,作为结果代码也就成了种种心思的具体体现。

很多代码一看就是没怎么思考,抱着能用就行的心思写的。很多代码一看就是为了安全起见写的,写的人大多时候应该能认识到,长期来看这不好。

当然前面说的技术不足也会和这些因素混合在一起影响最终呈现出来的代码。但要想代码质量好,利益纠葛之后,要摆平人的心思——这大致就是人件的基本出发点。 

国内很有意思的一个现象是ISO,CMMI这类东西往往会在异常火爆之后折戟沉沙。很多人对此做不同的解释,但如果让我来解释,我会讲,纯工程这个维度太没力量,在利益纠葛,人心世道面前完全就不是个有重量的砝码,所以方法论特别容易挂。

这不一定对,但同我个人的某些经历以及看到的案例来验证的话,也还算勉强有道理。让人开心的是,从各种报道来看,愿意脚踏实地整代码的组织似乎越来越多了。 

最后说一句,从这个角度看,开源具有绝对的优势。虽然没有官方统计,但至少从日常感受来看,开源代码的质量远高于闭源的代码——学习或参与优秀的开源项目应该对技术提升非常有帮助。

本文地址:http://www.nowamagic.net/librarys/veda/detail/2356,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/2356

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《编程之美:微软技术面试心得》 《编程之美》小组 (作者)

《编程之美:微软技术面试心得》是一本让人着迷的书!阅读起来。有些题目的内容会引起强烈的共鸣,尤其是那些自己非常熟悉并且又深知解答的题目;也有一些题目让我异常惊诧,原来除了我所知道的解答思路之外,还有更好的解答以及更深层次的原因。还有一些题目是从来没想到过的。阅读过程是一次愉快的享受,也是脑细胞持续活跃的过程。

更多计算机宝库...