软件的复杂性

复杂性(complexity)

复杂的软件设计难以维护,一点小的变动就需要小心翼翼,牵一发动全身。软件设计的最大目标就是降低复杂性。 复杂性指任何使得软件难于理解和修改的因素。

复杂性的危害在于它会递增。因为后面的代码都基于前面的错误实现,每次修改都需要考虑历史遗留问题,整个软件变得越来越复杂难以维护。"先把产品做出来,后面再改进"的观点看起来美好,但是大多数情况是随着业务的快速发展,技术债越欠越多。

复杂性的来源主要有两个:代码的含义模糊和互相依赖。

代码的含义模糊

模糊指的是,代码里面的重要信息,看不出来。糟糕的命名,没有拆分复杂的逻辑,不打断点调试就不明白代码的意图等。

互相依赖

依赖指的是,某个模块的代码,不结合其他模块,就会无法理解。

降低复杂性的方法

改变软件设计的时候,修改的代码越少,软件的复杂性越低。
复杂性尽量封装在模块里面,不要暴露出来。如果多个模块耦合,那就把这些模块合并成一个。

模块分成接口和实现。接口要简单,实现可以复杂。好的设计是,大量的功能隐藏在简单接口之下,对用户不可见,用户感觉不到这是一个复杂的类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值