Software Design and Engineering
软件系统设计和工程化是一个相当大的领域,涵盖了从软件架构、设计模式、开发流程到项目管理等多个方面。
在这里,我会讨论以下内容:
- 软件设计哲学、原则,设计模式
- 大规模代码的组织
- 系统的架构设计、系统演进与重构
- 最佳实践、工程化、项目管理等
这个领域,并没有放之四海而皆准的黄金法则,也并没有唯一的解法,更多的是在不同情况下的经验总结和最佳实践。
曾几何时,我喜欢只阐述观点而把书中名人所说的话略过,不过后来发现,发原文能够作为我的描述的补充,同时他们的话也可以作为我的想法的佐证,更容易让他人理解和接受我的观点,所以这里会引用一些业界知名人士的观点和话语。
我会使用 C++ 作为示例语言,来说明一些设计原则和模式,但这些原则和模式是跨语言的,适用于各种编程语言。不过不同的编程语言,由于提供的功能不同,可能会导致实现不同或者需要做出调整。
这里,我阐述的是一些业界共识,以及我个人的理解,欢迎批评指正。