架构师训练营—第二周学习总结
架构师第二周讲述了框架设计的一些原则。
框架设计原则
软件设计的最终目的,是使软件达到“强内聚、松耦合”,从而使软件
易扩展 - 易于增加新的功能
更强壮 - 不容易被粗心的程序员破坏
可移植 - 能够在多样的环境下运行
更简单 - 容易理解、容易维护与之相反,一个“不好的”软件,会发出如下“臭味”:
僵硬 - 不易改变。
脆弱 - 只想改 A,结果 B 被意外破坏。
不可移植 - 不能适应环境的变化。
导致误用的陷阱 - 做错误的事比做正确的事更容易,引诱程序员破坏原有的设计。
晦涩 - 代码难以理解。
过度设计、copy-paste 代码。
OCP 原则
OCP - Open/Closed Principle
对于扩展是开放的(Open for extension)
对于更改是封闭的(Closed for modification
简言之:不需要修改软件实体(类、模块、函数等),就应该能实现功能的扩展。
依赖倒置原则(DIP)
• 高层模块不能依赖低层模块,而是大家都依赖于抽象;
• 抽象不能依赖实现,而是实现依赖抽象。
Liskov 替换原则(LSP)
子类型(subtype)必须能够替换掉它们的基类型(base type)
单一职责原则(SRP)
接口分离原则(ISP)
框架
不同领域的框架
微软公司为 Windows 编程开发了 MFC 框架。
Java 为它的 GUI(图形用户界面)开发了 AWT 框架。
还有许多开源的框架:MyBatis,Spring 等。
Web 服务器也是框架:Tomcat
结合工作实践的一些领悟
工作中,常常被研发人员抱怨需求总是改来改去,搞得代码总是发生变化。能不能把需求弄清楚再研发。以前遇到这些问题有点无法应对,现在有一点点领悟。
软件开发最大的挑战本身就在于需求的变更,正是因为需求永远在发生变化,框架和架构的设计才会变得如此重要。如果研发人员抱怨需求变更导致代码重写,应该反思的不是产品经理,而是研发本身。软件设计如果因为需求变更就基本重写,这样的软件本身就存在巨大的问题。
评论