从代码里你可以看到什么?
2013-01-18 14:53
239 查看
/article/1354840.html
经常有小同事和我说,这程序的代码写的太垃圾了,什么水平。
确实如此,大部分持续存在一段时间的程序代码质量都不怎么样。
从圈复杂度的角度看,超过15的代码就很看了会头疼了,但可怕的是圈复杂度到70,、80的也不是没有。
谁要摊上改这种代码,估计上吊的心都有:不改不行,改了谁知道出什么问题?
从这种代码里能看出来什么,很说明的人的心境。
说看到技术水平较差的大多是刚毕业的兄弟。
说看到利益纠葛,人心世道的大概就是成年老鸟了。
我持后一种观点。
为什么世界上会有这么多垃圾代码,这绝对不只是因为技术不行。
如果世界只由技术因素主宰,那么按理说只要一个软件存在的时间足够长,投入的人力足够多,代码一定会变的足够好。
但事实恰恰与这相反,存在时间越长的代码往往越垃圾。
这可以做简单理解。
既存的代码表征着一种市场价值,如果改了它那么一旦造成的损失谁来负责?
程序员来负责?经理来负责?
没人来负责,那么只能破坏逻辑清晰性来保证妥当性,代码自然就会变得越来越垃圾。
所以说这里首先是利益纠葛问题。
这是非常有意思的一个课题,因为改好代码长期有收益,短期必然有风险---再牛的人也没办法保证自己的修改毫无偏差。
宏观来看,保证好代码真的很简单:找一帮有责任心的很牛的人,让他们不考虑市场因素的持续进行重构,那代码必然越变越好。
而关键则是,如果你是CEO,你愿意这么干么?
所以说在闭源的前景下,谁要是真想保证代码质量,先要摆平利益纠葛。
软件工程离了这个就真像任人打扮的小姑娘,实质上可以是翠花、可以红袖,但就不能是自己。
接下来是个人的问题,假设说是闭源的代码,同时更进一步,Review不怎么做,或者说做了也就意思一下,那会怎么样?
结果也很简单,代码这时候会成为负面心思的大集合。
想换工作的、家里有事的、感觉公司里不重视技术的都在写代码,赶进度的、加班熬夜的也在写代码,作为结果代码也就成了种种心思的具体体现。
很多代码一看就是没怎么思考,抱着能用就行的心思写的。很多代码一看就是为了安全起见写的,写的人大多时候应该能认识到,长期来看这不好。
当然前面说的技术不足也会和这些因素混合在一起影响最终呈现出来的代码。
但要想代码质量好,利益纠葛之后,要摆平人的心思--这大致就是人件的基本出发点。
国内很有意思的一个现象是ISO,CMMI这类东西往往会在异常火爆之后折戟沉沙。
很多人对此做不同的解释,但如果让我来解释,我会讲,纯工程这个维度太没力量,在利益纠葛,人心世道面前完全就不是个有重量的砝码,所以方法论特别容易挂。
这不一定对,但同我个人的某些经历以及看到的案例来验证的话,也还算勉强有道理。
让人开心的是,从各种报道来看,愿意脚踏实地整代码的组织似乎越来越多了。
最后说一句,从这个角度看,开源具有绝对的优势。
虽然没有官方统计,但至少从日常感受来看,开源代码的质量远高于闭源的代码---学习或参与优秀的开源项目应该对技术提升非常有帮助。
经常有小同事和我说,这程序的代码写的太垃圾了,什么水平。
确实如此,大部分持续存在一段时间的程序代码质量都不怎么样。
从圈复杂度的角度看,超过15的代码就很看了会头疼了,但可怕的是圈复杂度到70,、80的也不是没有。
谁要摊上改这种代码,估计上吊的心都有:不改不行,改了谁知道出什么问题?
从这种代码里能看出来什么,很说明的人的心境。
说看到技术水平较差的大多是刚毕业的兄弟。
说看到利益纠葛,人心世道的大概就是成年老鸟了。
我持后一种观点。
为什么世界上会有这么多垃圾代码,这绝对不只是因为技术不行。
如果世界只由技术因素主宰,那么按理说只要一个软件存在的时间足够长,投入的人力足够多,代码一定会变的足够好。
但事实恰恰与这相反,存在时间越长的代码往往越垃圾。
这可以做简单理解。
既存的代码表征着一种市场价值,如果改了它那么一旦造成的损失谁来负责?
程序员来负责?经理来负责?
没人来负责,那么只能破坏逻辑清晰性来保证妥当性,代码自然就会变得越来越垃圾。
所以说这里首先是利益纠葛问题。
这是非常有意思的一个课题,因为改好代码长期有收益,短期必然有风险---再牛的人也没办法保证自己的修改毫无偏差。
宏观来看,保证好代码真的很简单:找一帮有责任心的很牛的人,让他们不考虑市场因素的持续进行重构,那代码必然越变越好。
而关键则是,如果你是CEO,你愿意这么干么?
所以说在闭源的前景下,谁要是真想保证代码质量,先要摆平利益纠葛。
软件工程离了这个就真像任人打扮的小姑娘,实质上可以是翠花、可以红袖,但就不能是自己。
接下来是个人的问题,假设说是闭源的代码,同时更进一步,Review不怎么做,或者说做了也就意思一下,那会怎么样?
结果也很简单,代码这时候会成为负面心思的大集合。
想换工作的、家里有事的、感觉公司里不重视技术的都在写代码,赶进度的、加班熬夜的也在写代码,作为结果代码也就成了种种心思的具体体现。
很多代码一看就是没怎么思考,抱着能用就行的心思写的。很多代码一看就是为了安全起见写的,写的人大多时候应该能认识到,长期来看这不好。
当然前面说的技术不足也会和这些因素混合在一起影响最终呈现出来的代码。
但要想代码质量好,利益纠葛之后,要摆平人的心思--这大致就是人件的基本出发点。
国内很有意思的一个现象是ISO,CMMI这类东西往往会在异常火爆之后折戟沉沙。
很多人对此做不同的解释,但如果让我来解释,我会讲,纯工程这个维度太没力量,在利益纠葛,人心世道面前完全就不是个有重量的砝码,所以方法论特别容易挂。
这不一定对,但同我个人的某些经历以及看到的案例来验证的话,也还算勉强有道理。
让人开心的是,从各种报道来看,愿意脚踏实地整代码的组织似乎越来越多了。
最后说一句,从这个角度看,开源具有绝对的优势。
虽然没有官方统计,但至少从日常感受来看,开源代码的质量远高于闭源的代码---学习或参与优秀的开源项目应该对技术提升非常有帮助。
相关文章推荐
- 请问有没有人知道可不可以根据已经编译好的exe(这里具体指窗体),通过什么工具可以看到它里面的某一个控件的事件里面的代码(比如timer的tick)。
- 从代码里你可以看到什么?
- 从代码里你可以看到什么?
- 菜鸟:自己写了一个轮播代码供分为参考,如果有什么地方你有更好的方法,可以给我留言
- 哪些年遇到过的Andriod问题(13)Mars的下载文件代码不知道是什么问题,在网上去新COPY了一个就可以下载了。
- Flex在线编辑器,只要输入flex代码提交,就可以看到效果
- 当修改一些代码时,使用什么编译命令可以最有效率
- 从招聘看到可以看到自己要学什么。哈哈 很实际的招聘
- 偶然看到一段代码,但是不明白这是什么用法? List<String> list = new ArrayList<String>() { { a
- 在QTP中,经常会遇到需要写入外部文件的地方,比如写Log什么的,这时,可以使用下面代码进行写Txt操作。
- MTK-当修改一些代码时,使用什么编译命令可以最有效率
- 《代码重构 可以这么简单》 一 什么是不好的代码
- 有没有代码可以判断一个List<View>集合里的view是什么view
- CSS3 Generator提供了13个CSS3较为常用的属性代码生成工具,而且可以通过这款工具除了在线生成效果代码之外,还可以实时看到你修改的效果,以及浏览器的兼容性。
- 在电子电路中,常可以看到VCC、VDD和VSS三种不同的符号,它们有什么区别呢?
- MTK平台,当修改一些代码时,使用什么编译命令可以最有效率
- 什么情况下可以而且应该共享你的代码?
- 当修改一些代码时,使用什么编译命令可以最有效率
- 显示日期与时间的代码,可以在指定日期是什么节日
- [FAQ03127] 当修改一些代码时,使用什么编译命令可以最有效率