对于初学者,学习完了各种基础之后,开始真正编程时,会发现写的代码有点乱,没有规范,逻辑,这样是不行的。需要一套方法论才可以更好的实践
今天我分享一下自己的套路:
优秀代码的特质
- 高内聚,低耦合
- 可扩展
- 可读性
- 可测试
心得分享
记得有一句名言:程序 = 数据结构 + 算法。
数据结构用(类的属性, 变量)来承载, 算法用(类的方法, 函数)来承载。
这些 相互关联的 数据结构和算法结合起来, 形成了编程的 函数,类。
因此函数和类是可以 随时转化 的。本质都是 输入数据结构->算法->输出数据结构。
当一个函数很复杂,可以拆分成类。当一个类很复杂可以拆分成多个类.
几千行的函数->几百行的函数组成的类-> 几十行的函数组成的多个类
这是一个慢慢变优秀的过程
代码设计原则
最重要的原则:
| |
SOLID: 是面向对象开发的 5 个基础原则
solid5原则讲解的很具体,但是个人认为只要掌握了前两条就够了,这两条原则对于函数和类,都是适用的。
单一职责原则(Single Responsibility Principle,SRP)核心含义:一个代码单元(函数 / 类 / 模块 / 文件),只负责一件事,只有一个引起它变化的原因。 开闭原则(Open/Closed Principle,OCP)核心含义:对扩展开放,对修改关闭。
里氏替换原则(Liskov Substitution Principle,LSP)核心含义:子类可以无缝替换父类,替换后程序逻辑不报错、功能不受影响。 接口隔离原则(Interface Segregation Principle,ISP)核心含义:客户端不依赖不需要的接口,将大而全的接口拆分为小而专的独立接口。 依赖倒置原则(Dependency Inversion Principle,DIP)核心含义:高层模块(业务逻辑)不依赖低层模块(具体实现),两者均依赖抽象 / 接口;抽象不依赖细节,细节依赖抽象。
通用落地开发原则
组合优于继承 (Composition over Inheritance)
Explicit is Better Than Implicit (显式优于隐式) KISS 原则(Keep It Simple, Stupid)—— 核心含义:代码 / 架构 / 设计要尽可能简单,避免不必要的复杂,能用简单方案解决的问题,绝不使用复杂方案。 YAGNI 原则(You Aren’t Gonna Need It)—— 核心含义:不要为未来可能的需求提前开发功能、提前做扩展,只开发当前明确需要的功能,未来真的需要时,再扩展即可。 迪米特法则(Law of Demeter,LoD)—— 核心含义:一个对象 / 模块,只应该和它的直接朋友(直接依赖的对象 / 模块)通信,不要和 “陌生人”(间接依赖的对象 / 模块)通信;即只调用直接朋友的方法,不调用陌生人的方法。 自解释代码原则(Self-Documenting Code)—— 核心含义:代码本身通过合理的命名、结构、逻辑,就能让阅读者看懂其功能和意图,无需依赖大量的注释,即代码是最好的注释。 DRY 原则(Don’t Repeat Yourself)—— 核心含义:系统中每一个知识 / 逻辑点,都应该有且仅有一个权威的实现,避免代码 / 逻辑的重复。
从0到1的项目开发逻辑
需求->划分模块->梳理各个模块之间的联系->类/函数(先写注释,后写代码)->跑通最简单的流程
这里强烈推荐设计模式之美 (geekbang.org)
项目文件结构参考
看起来不重要的东西,反而最重要。看起来最重要的东西,反而不重要
| |
命名规范
下划线命名 show_image()
驼峰命名 showImage()
具体需要按照项目的要求指定统一的命名规范