代码精进之路
一、命名
函数的命名要体现做什么,而不是怎么做
方法名用动词
二、规范
正确的使用空行
try catch统一在某一层处理
错误码规范
三、函数
函数的第一规则是要短小,第二规则是要更短
如果是Java语言,我建议一个方法不要超过20行代码
职责单一,一个方法只做一件事情
Optional类主要解决的问题是“臭名昭著”的空指针异
减少辅助代码,比如通过注解、切面等把辅助代码被从业务逻辑中剥离出去,并进行统一维护,既减少了重复,又避免了和具体缓存实现的耦合,可谓是一举多得
按照代码冗余程度排序,经典类大于匿名类,匿名类大于 Lamda(匿名函数),Lamda大于方法引用
四、设计原则
1、solid设计原则
Single Responsibility Principle(SRP):单一职责原则。
Open Close Principle(OCP):开闭原则。
对扩展开放,对修改关闭
Liskov Substitution Principle(LSP):里氏替换原则。
子类应该可以替换任何基类能够出现的地方,并且经过替换后,代码还能正常工作
Interface Segregation Principle(ISP):接口隔离原则。
Dependency Inversion Principle(DIP):依赖倒置原则。
2、DRY原则
DRY是Don’t Repeat Yourself的缩写,DRY原则特指在程序设计和计算中避免重复代码,因为这样会降低代码的灵活性和简洁性,并且可能导致代码之间的矛盾。
系统的每一个功能都应该有唯一的实现。也就是说,如果多次遇到同样的问题,就应该抽象出一个共同的解决方法,不要重复开发同样的功能。
3、YAGNI
YAGNI是针对“大设计”(Big Design)提出来的,是“极限编程”提倡的原则,是指你自以为有用的功能,实际上都是用不到的。因此,除了核心的功能之外,其他的功能一概不要提前设计,这样可以大大加快开发进程。它背后的指导思想就是尽可能快、尽可能简单地让软件运行起来
4、Rule of Three
Rule of Three也被称为“三次原则”,是指当某个功能第三次出现时,就有必要进行“抽象化”了
5、kiss(Keep It Simple and Stupid)
真正的简单,不是不思考,而是先发散、再收敛。在纷繁复杂中,把握问题的核心
6、POLA原则 (Principle of least astonishment)
最小惊奇原则,要的是简单易懂
五、设计模式
gof的23种设计模式,以及拦截器模式、插件模式和管道模式
六、建模
七、DDD (domain driven design)
利用面向对象的特性(封装、多态)有效地化解复杂性
通过DDD重构后,虽然类的数量比以前多了一些,但是每个类的职责更加单一,代码的可读性和可扩展性也随之提高
传统主流设计是数据驱动
DDD带来的核心好处:统一语言、面向对象、分离核心业务逻辑和技术细节
DDD的核心概念:领域实体、聚合根、领域服务、领域事件、边界上下文
领域建模方法:
1)用例分析法:寻找概念类、添加关联、添加属性
2)四色建模法:寻找关键业务时刻、寻找周围的人-事-物对象,从人-事-五抽象出角色,把描述信息给对象补足