常用软件工程概念与工具

2018-07-01
2 min read

持续更新中…

资料

相关书籍

软件构建组成

细节请参考《代码大全》

代码质量的重要性

代码的生命周期中有不少与一半的时间都用于阅读,代码的可阅读性(质量)很重要

经典概念

SOLID/CLEAN

SOLID:Single Responsibility / Open&Closed / Liskov Substitution / Interface Segregation / Dependency Inversion

CLEAN:内聚(Cohesive)/松耦合(Loosely Coupled)/封装(Encapsulated)/自包含(Assertive)/无冗余(Nonredundant)

3Y:层次化( hierarchy)/ 模块化( modularity) / 规整化( regularity,保存模块接口的通用性)

其他资料:https://users.ece.utexas.edu/~adnan/pike.html

YAGNI

YAGNI。YAGNI 有很强的扩展性,比如只做好当前、不重复、尽量不添加新功能

TDD

测试驱动开发。逻辑测试 & 边界测试。函数或模块的编写要方便测试,而且每当你收到 bug 报告,请先写一个单元测试来暴露这个 bug

经典论述

  1. 好代码的检验标准就是人们是否能轻而易举地修改它
  2. 与其猜测未来需要哪些灵活性、需要什么机制来提供灵活性,我更愿意只根据当前的需求来构造软件,同时把软件的设计质量做得很高
  3. 每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中

重构

下面的内容截取自 《重构:改善既有代码的设计》 /

重构:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构

在软件开发的大部分历史时期,大部分人相信应该先设计而后编码。重构正好与此相反,哪怕手上有一个糟糕的设计,甚至是一堆混乱的代码,我们也可以借由重构将它加工成设计良好的代码

重构原则

重构原则(2nd chap)

  1. 重构的第一步:确保即将修改的代码拥有一组可靠的测试(TDD),合理的测试可以极大的减少调试时间
  2. 两顶帽子。将重构与添加新功能在版本控制的提交中分开
  3. 何时重构。让扩展变得容易、事不过三,拒绝重复、帮助理解、逐步清理不合理的地方
  4. YANGNI。不需要理解的代码不要重构
  5. 自动化重构。使用智能工具可以减少工作量