KISS(Keep It Simple & Stupid)

∥☆過路亽.° 提交于 2019-12-22 19:21:37

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

KISS(Keep It Simple & Stupid)

KISS(Keep It Simple & Stupid):保持精简,并且看起来很“愚蠢”。

在软件开发中,一个系统会变得越来越庞大,系统熵(复杂度)会变得越来越大,导致我们越来越难以hold整个系统(智商问题¯_(ツ)_/¯)。所以我们引入了KISS原则来使**系统熵(复杂度)**保持稳定的数值。

统一命名

一个好的统一命名风格,有利于系统的扩展和维护,推荐驼峰命名法。

使用静态语言

静态语言的合理使用,能最大程度的保证代码重构后的影藏问题,在编译期就可以fix。不过有些场合非常却不是这样子,比如说浏览器,Shell等。静态或者动态语言还是需要综合考量。

微服务架构设计

当系统变的越来越大的时候,我们不能简单的通过将单体架构运行在多个PC上做负载均衡来达到性能上的突破,而应该将整个集群看成一个系统,使用微服务的概念优化整体设计。

高内聚低耦合设计

高内聚

高内聚是指对程序中功能相近的点进行独立化, 如果两个模块之间的修改, 互不影响则说明模块之间是高内聚的。

高内聚意味可维护性,可重写性,因为模块对外部的依赖少(功能的完备性)。模块的内聚和其担当的职责成反比,即模块的职责越多,模块的内聚性越低。

如何划分出一个模块, 这就需要关注点分离。

低耦合

耦合是描述模块之间的依赖程度,如果一个模块的修改,都对另一个模块进行修改,则两模块之间是相互依赖耦合的,这种设计不是理想的设计。

低耦合是我们的设计目的,但是不存在没有耦合的程序。耦合是必须的,因为模块之间必须通信交互,不过可以设计出依赖于不变或者不易变的接口, 而不需要关注模块内的实现, 从而实现低耦合。

关注点分离

实现高内聚低耦合行之有效的方式:关注点分离(SOC),将系统在不同层次[水平/垂直]上进行拆分, 形成功能不同没有重叠的模块。

每个功能只关注一个方面(Aspect)保证模块之间功能没有或者尽量少的重复。

模块化内部实现细节隐藏,只暴露必须的接口,使得模块之间依赖于抽象,达到稳定。

分离关注点的思想存在于我们软件设计的各个领域。例如:

  • 面向接口编程: 具体实现类的替换不影响上层业务逻辑
  • 面向AOP编程: 把性能统计的代码都分离出来, 保证高内聚低耦合
  • TCP/IP:TCP/IP是非常明显的水平切分模型,保证了互联网能运行在不同的介质上。IP层对应IP层,TCP层对应TCP层,使得逻辑上非常的清晰。通过这种分层模型,在不修改TCP上层(如HTTP)和下层(如IP)的情况下,非常轻松简洁地实现了NET转换之类的TCP层小技巧
  • 前后端分离:在Web+App编程中,前后端分层是非常明显的垂直切分,两者仅仅通过RESTful API+JSON 交互,利于测试和扩张

通过对程序的关注点分离, 使得程序各个模块之间变得高内聚低耦合.

综合约束

在软件开发设计中, 高内聚低耦合原则的实现是还依赖于综合约束,且贯穿整个软件生命周期, 并且软件开发过程中切忌过度设计

综合约束:业务逻辑, 软件条件, 硬件条件, 性能指标, 语言, 具体编码环境等因素。

面向对象设计

在面向对象的开发过程中,我们有一些软件设计上的原则:

面向对象设计原则

通过这些原则我们可以非常方便的设计出高内聚低耦合的代码结构。

总结

在开发过程中需要遵守KISS原则,使用一些方法/设计来达到降低系统熵,提高系统维护性的目的

参考

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!