架构是一种能力,而不仅是一个title
1. 需求分析
1.1 需求边界—需求是有界的
1.2 用户故事—用户使用场景
1.3 用户路径—越短越好
1.4 伪需求-用专业降维打击
1.5 权利需求-用专业说服权利,或者被权力用$$说服
2. 问题的分层
2.1 用户问题—本源问题
2.2 业务问题—经营视角
2.3 产品问题—需要一个好的产品把业务的各种可能、边边角角考虑到
2.4 技术问题—代码架构
2.5 意义:吵架的时候,要知道自己在争论什么问题,例如:不要用技术问题去否定用户问题。
3. 架构理念:大道至简,解决问题
4. 七大设计原则(背下来,形成潜意识,体现在代码产出中)
1. 单一职责
1.1 一个模块就干一件事
1.2 模块名字非常重要(你在工作中遇到有歧义、反义、汉语拼音之类的模块名,想打人吗?)
2. 里氏代换原则
2.1 概念:更具体的一定能代替更抽象的;更抽象的一定不能代替更具体的
2.2 违反里氏代换原则时,可以考虑组合
3. 接口隔离原则
3.1 概念:interface力度尽可能小
3.2 理念:高内聚,低耦合
4. 组合复用原则:
4.1 与继承相比:比继承更松散、产生更少的对象、暴露的方法更少
4.2 正例:service注入
4.3 反例:implement N多interface
5. 依赖倒置原则
5.1 细节依赖抽象,底层依赖高层
5.2 加深记忆:做事也是如此—先有框架再有细节
6. 迪米特原则(知识最少原则)
6.1 只关注暴露的接口,不关注具体实现
6.2 加深记忆:只关注结果,不关注过程
7. 开闭原则
7.1 概念:对扩展开发、对修改关闭
7.2 最熟悉的陌生原则,知易行难
7.3 架构师的价值:识别和隔离变化点(不要相信产品,不要相信任何人)
7.4 开闭原则是熵减,好程序员一般都有熵减的怪癖