博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从代码里你可以看到什么?
阅读量:6594 次
发布时间:2019-06-24

本文共 1349 字,大约阅读时间需要 4 分钟。

经常有小同事和我说,这程序的代码写的太垃圾了,什么水平。

确实如此,大部分持续存在一段时间的程序代码质量都不怎么样。

从圈复杂度的角度看,超过15的代码就很看了会头疼了,但可怕的是圈复杂度到70,80的也不是没有。

谁要摊上改这种代码,估计上吊的心都有:不改不行,改了谁知道出什么问题?

 

从这种代码里能看出来什么,很说明的人的心境。

说看到技术水平较差的大多是刚毕业的兄弟。

说看到利益纠葛,人心世道的大概就是成年老鸟了。

 

我持后一种观点。

 

为什么世界上会有这么多垃圾代码,这绝对不只是因为技术不行。

如果世界只由技术因素主宰,那么按理说只要一个软件存在的时间足够长,投入的人力足够多,代码一定会变的足够好。

但事实恰恰与这相反,存在时间越长的代码往往越垃圾。

这可以做简单理解。

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

程序员来负责?经理来负责?

没人来负责,那么只能破坏逻辑清晰性来保证妥当性,代码自然就会变得越来越垃圾。

所以说这里首先是利益纠葛问题。

这是非常有意思的一个课题,因为改好代码长期有收益,短期必然有风险---再牛的人也没办法保证自己的修改毫无偏差。

宏观来看,保证好代码真的很简单:找一帮有责任心的很牛的人,让他们不考虑市场因素的持续进行重构,那代码必然越变越好。

而关键则是,如果你是CEO,你愿意这么干么?

所以说在闭源的前景下,谁要是真想保证代码质量,先要摆平利益纠葛。

软件工程离了这个就真像任人打扮的小姑娘,实质上可以是翠花、可以红袖,但就不能是自己。

 

接下来是个人的问题,假设说是闭源的代码,同时更进一步,Review不怎么做,或者说做了也就意思一下,那会怎么样?

结果也很简单,代码这时候会成为负面心思的大集合。

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

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

当然前面说的技术不足也会和这些因素混合在一起影响最终呈现出来的代码。

但要想代码质量好,利益纠葛之后,要摆平人的心思--这大致就是人件的基本出发点。

 

国内很有意思的一个现象是ISOCMMI这类东西往往会在异常火爆之后折戟沉沙。

很多人对此做不同的解释,但如果让我来解释,我会讲,纯工程这个维度太没力量,在利益纠葛,人心世道面前完全就不是个有重量的砝码,所以方法论特别容易挂。

这不一定对,但同我个人的某些经历以及看到的案例来验证的话,也还算勉强有道理。

让人开心的是,从各种报道来看,愿意脚踏实地整代码的组织似乎越来越多了。

 

最后说一句,从这个角度看,开源具有绝对的优势。

虽然没有官方统计,但至少从日常感受来看,开源代码的质量远高于闭源的代码---学习或参与优秀的开源项目应该对技术提升非常有帮助。

 

--------------------------------------------------------------

 

 

 

理想流 + 软件 = 

理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和逻辑推演本质,追求真理。

 

转载地址:http://fvcio.baihongyu.com/

你可能感兴趣的文章
香港设计师带来仿生机器人,其身体 70% 构造均由3D打印完成
查看>>
不规则物体形状匹配综述
查看>>
自动化设计-框架介绍 TestCase
查看>>
CJ看showgirl已经out!VR体验才是王道
查看>>
Manually Summarizing EIGRP Routes
查看>>
spring boot 1.5.4 整合webService(十五)
查看>>
modsecurity(尚不完善)
查看>>
获取.propertys文件获取文件内容
查看>>
Redis3.0.5配置文件详解
查看>>
Know about Oracle RAC Heartbeat
查看>>
JQuery——实现Ajax应用
查看>>
前端05.js入门之BOM对象与DOM对象。
查看>>
oracle kill所有plsql developer进程
查看>>
keepalived双机热备原理及实例部署LVS+keepalived
查看>>
曲线学习PyQt5方案一
查看>>
OpenCV学习】矩阵运算和操作2
查看>>
nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
查看>>
关于在arm裸板编程时使用printf问题的解决方法
查看>>
开源人工智能技术将改变一切
查看>>
2015 上半年 JavaScript 使用统计数据
查看>>