日期:2023.11.02,Thur
软件开发过程中,软件设计质量最好的时候是第一版,当第一个版本上线以后就开始各种需求变更。很多人可能会说系统应该做好架构设计,设计的灵活性上要有很好的扩展,很显然这是很难做到的,因为现实中的需求是不确定的,我们仅仅能预设部分扩展和模式,如果设计的过多其实很容易造成“过度设计”,现实中你的很多设计可能根本就用不到,反而会造成系统的臃肿。所有设计大部分内容肯定是基于现有的业务和功能设计的。
现在问题来了,那经过十次,二十次,三十次的变更以后,怎样防止软件的退化呢。在软件领域有一种非常厉害的开发方法,或者说是一种思想,DDD,领域驱动设计(Domain-Driven Design)。这也是帮助我们做好微服务拆分非常重要和可行的一种方法。
所以要想保持软件不退化,那就必须在每次需求变更的时候,对原有的程序结构适当地进行调整,而不是不对的在一个方法或者代码中,不断添加 if else,最终弄的不可维护。人称 shi 山代码。
这里有两个方法,做好可以大大的避免代码持续恶化。
- 在不添加新功能的前提下,重构代码,调整原有程序结构,以适应新功能;
- 实现新的功能。
简而言之,保持软件设计不退化的关键在于每次需求变更的设计,只有保证每次需求变更时做出正确的设计,才能保证软件以一种良性循环的方式不断维护下去。
在调整的过程中,需要注意一些基本的设计原则
比如开放-封闭原则(OCP) 分为开放原则与封闭原则两部分。
- 开放原则:我们开发的软件系统,对于功能扩展是开放的(Open for Extension),即当系统需求发生变更时,可以对软件功能进行扩展,使其满足用户新的需求。
- 封闭原则:对软件代码的修改应当是封闭的(Close for Modification),即在修改软件的同时,不要影响到系统原有的功能,所以应当在不修改原有代码的基础上实现新的功能。也就是说,在增加新功能的时候,新代码与老代码应当隔离,不能在同一个类、同一个方法中。
单一职责原则等等,都是一些比较好的思想,值得我们在开发过程中,好好体会理解。
网友评论