首页 » 排名链接 » 影响软件开发效率的罪魁祸首(复杂度开发系统效率修改)

影响软件开发效率的罪魁祸首(复杂度开发系统效率修改)

admin 2024-11-26 05:18:17 0

扫一扫用手机浏览

文章目录 [+]

相信大家都思考过这些问题,斯坦福大学的JOHN OUSTERHOUT教授给出了一个他的答案,复杂度是软件系统中很重要的一个因素,在开发过程中,复杂度会不断变高,如果不能进行有效控制,就会呈现指数性增长,导致开发效率越来越低,难度增大,同时bug越来越容易出现。

首先,我们来定义一下什么是软件系统的复杂度,所谓复杂度是指针对软件系统进行维护和拓展需要花费的成本大小。
如果进行一个小的修改,需要耗费很大的成本,说明这个系统的复杂度高。
如果只需要不大的成本就能完成新功能的开发或现有功能的完善,则说明这个系统的复杂度是可控的,比较低的。

接下来,我们讲一下复杂度在系统会有哪些表现:

影响软件开发效率的罪魁祸首(复杂度开发系统效率修改) 排名链接
(图片来自网络侵删)
牵一发而动全身,一个变动需要修改多处地方。
这种一般发生在有重复代码的部分,比如某个属性的id为100,在多处用到的地方直接硬编码100,过了一段时间这个id换成了200,则需要修改多个地方才能实现变更。
针对一个变动需要修改多个地方,很容易发生遗漏,显著提高了系统的复杂度。
晦涩难懂,难以修改。
导致修改难度大的原因会很多,命名不规范,接口定义不够通用,代码逻辑晦涩等都会导致修改难度变大。
这些都会增加系统的复杂度。
未知的问题,各种大坑。
在使用新数据或第三方库的时候,通常会各种未知的坑让人防不胜防。
有些接口会有一些反人类的设计,并且没有任何文档提示。
比如某列表查询接口超过n(n=30,40或50)会自动截断,测试环境数据量少验证稳如 ,发布到生产环境第二天客户就来反映问题。
这些按照常识难以预料的问题,会增加系统的复杂度,导致各种bug的产生。
包括一些开源的项目也常常会有各种未知的问题,说不定哪天就来个坑,所以对于新的技术、第三方服务或者库都要充分验证,熟悉各种坑后才能大规模线上使用。

大家可以看一下自己的项目,难以维护的项目是不是复杂度都很高呢?既然导致系统难以维护的原因找到了,那怎么能有效控制系统的复杂度呢?在接下来的几篇专栏中会进行详细介绍,感兴趣的朋友们加个关注。

参考文献

www.amazon.com/Philosophy-Software-Design-John-Ousterhout/dp/1732102201

相关文章