软件开发中,复杂度管理是最为重要、最困难的一个纬度。任何其他技术目标都不如管理复杂度重要,具体如何管理我们可以从以下几点-一个设计良好的软件应具备的特征中窥视一二。
最小的复杂度
要避免做出“聪明”的设计,因为它常常难以理解,应该做出简单且易于理解的设计。如果方案不能让你在专注于程序的某一部分时安心忽略其他部分的话,这一设计就没什么用。。
易于维护
设计时为做维护工作的程序员着想,时刻想象他们可能会就你的代码提出的问题,随时考虑这些问题,进而设计出能自明(self-explanatory)的系统来
松散耦合
程序的组成部分之间关联小,通过接口的合理抽象、封装及信息隐藏等原则设计
可扩展性
可以增强系统的功能而无需破坏底层结构,可以改动系统的某一部分而不影响其他部分
可重用性
所设计的系统的组成部分能在其他系统复用
高扇入(high fan-in)
让大量的类使用某个给定的类,意味着系统很好的利用了较低层次的工具类
低扇出(low fan-out)
一个类里少量或适中使用其他的类。否则可能变得过于复杂
可移植性
可以方便的移植到其他系统
精简性
所设计的系统没有多余的部分,因为任何多余的代码都需要开发,复审,测试。软件的后续版本都要和这些多余代码进行兼容,不需要的,慎重考虑加入到系统
层次性
尽量保持系统各个层的层次性,使你能在任意纬度观察系统
标准技术
尽量用标准的,常用的技术,减少维护的复杂度