软件的可维护性,可复用性对于系统设计而言是一个核心问题,我们都希望能够做出一个既易于维护,复用率又较高的系统。
导致一个软件设计的可维护性较低,Robert C.Martin指出,有四个原因:
(1)过于僵硬(Rigidity):很难在一个软件系统中加入一个新的功能,按个人的看法,因为使用了类似SSH的底层框架,加上约定优于配置的模式在软件结构上的应用,这种情况应该是缓解不少;
(2)过于脆弱(Fragility):对一个地方的修改,会出现很多故障点。这种情况时有发生,例如之前所做的人力资源系统,现在通过测试用例,持续集成手段希望降低这种情况,但这个也的确和设计有关。
(3)复用率低(Immobility):一段代码被重复粘贴到多个地方,更不要说一个模块在不同项目中重用,高层次的角度,当然希望可以实现模块级的重用,但最起码应做到方法级的代码重用,这个可以借助代码重构。
(4)黏度过高(Viscosity):一个改动可以按原设计意图进行,但也可以以破坏原意图去进行,这种情况时有发生,因为我们都不想去理解其它人写的东西,导致破坏越来越严重。约定优于配置在结构上能解决一些问题,但代码层次上,在系统维护时,就必需去深入代码才可以降低黏度。
根据Peter Coad提出,一个好的系统设计应该包括以下三个性质:
(1)可扩展性:新的性能很容易加入到,基本的手段,当然是定义接口,抽象类;
(2)灵活性:允许代码修改比较平稳,这点比较依赖设计,单元测试可以为修改提供一定保障;
(3)可插入性:可以容易地将一个类抽出去,同时将另一个有同样接口的类加入来;
阅读(3677) | 评论(0) | 转发(0) |