2.2-代码编写
Create by fall on 03 Feb 2022
Recently revised in 25 Sep 2025
你觉得代码好看还是难看,那只是因为你熟悉或陌生。
好的代码
这是代码常见问题的一些思考
- 使用默认导出还是命名导出?
- 默认导出可以在使用的时候重命名
- 命名导出,在命名更改的时候,其它地方可以同步更改(不然报错)
- 文件命名
- 使用 index.tsx,可以保证你打开一个文件夹知道要找的文件是谁,报错的时候,搜索的时候,就会有成百上千个 index 文件
- 使用文件夹的名称,可以让搜索更容易,重构时给文件夹重命名也很重要
- Prop 命名
- 使用 Props 简单,但如果想要导出这个类型,就还需要再重命名,也很难保持一致,搜索也会有多个结果
- 使用文件夹的名称,可以让搜索更容易,重构时给文件夹重命名也很重要
- 普通函数还是箭头函数
- 普通函数(ES6 之前唯一支持的函数声明方式
- 箭头函数简洁,紧凑,可读性(一部分人来说)
- 三步运算符还是提前返回
- 在返回时使用三步运算符,条件不多,且返回内容简单时非常好,条件多后可读性非常差
- if 提前返回,多行的内容十分友好,注意使用提前返回可以避免多级嵌套(也不建议 if 中的内容过多,影响理解
如何更好的编写一个应用
-
Don’t Repeat Yourself,不要重复
-
Keep It Simple, Stupid,让方法保持简单,甚至简单到小白都能懂
-
Program to an interface, not an implementation,面向接口编程,而不是实现
-
You Ain’t Gonna Need It,别因为下次需要在这次编程中实现
-
Law of Demeter,在模块的最顶层询问内容,而不是其中的一部分
-
Common Closure Principle,修改一个功能时,限制在最小的包中
-
Common Reuse Principle,共同重用原则,如果你重用了其中的一个类,就重用全部。
-
Hollywood Principle,组件处在一个容器当中,由容器负责管理
-
High Cohesion & Low/Loose coupling,高内聚, 低耦合
-
Convention over Configuration,惯例优于配置,如果没有自己的规则,使用惯例即可
-
Separation of Concerns,关注点分离,将问题拆解成更小的多个问题,以便于解决
-
Acyclic Dependencies Principle,无环形依赖
S.O.L.I.D 原则
- Single Responsibility Principle 单一职责原则一个类,只做一件事,并做好
- Open / Closed Principle 开闭原则开发封闭原则核心:模块式可扩展,但不可修改的,对扩展开放,对修改封闭
- Liskov substitution principle 子类应该可以替换任何基类能够出现的地方(子类只扩展基类,不修改基类
- Interface Segregation Principle 接口隔离原则,把功能实现在接口中,可插拔,而不是由中心控制全部实现
- Dependency Inversion Principle 依赖倒置原则,高层模块不应该依赖于低层模块的实现,而是依赖于高层抽象。
软件设计原则
- 不要重复
- 让方法保持简单,甚至简单到小白都能懂
- 面向接口编程,而不是实现
- 别因为下次需要在这次编程中实现
- 顶层询问原则,在模块的最顶层询问内容,而不是其中的一部分
组件开发推荐使用强类型语言,因为需要调用对应的 API 实现功能,强类型独有语法提示,类型提示。
只有当同一份代码使用过多次之后,再提取到工具中,视图上同理
命名规则
尽可能使用方法命名代替注释
/**
* 求和函数
* @param {number} a 加数
* @param {number} b 加数
* @return {number} sum 和
*/
function getAB(a,b){
return parseInt(a)+parseInt(b)
}
// 尽可能不使用注释
function sumString(a,b){
return parseInt(a)+parseInt(b)
}
MNC
最小必要复杂度原则(Minimum Necessary Complexity, MNC)核心思想是:用最简单的方式满足需求,不增加额外复杂度。
高尔法则
Gall's Law(高尔法则):复杂系统必须从简单系统演化,否则无法正常运行。
奥卡姆剃刀:如无必要,勿增实体。
KISS
KISS 原则:Keep It Simple, Stupid! 让系统保持最小复杂度,减少维护成本。
UNIX 哲学:只做一件事,并做到极致。
1:不要重复2:让方法保持简单,甚至简单到小白都能懂3:面向接口编程,而不是实现4:别因为下次需要在这次编程中实现5,顶层询问原则,在模块的最顶层询问内容,而不是其中的一部分
组件开发
插件化的架构设计,以 core 为最小应用单元,通过插件的形式向组件内添加多个功能。
好处之一就是可以支持按需加载,此外把独立功能都拆分成独立的插件,会让核心系统更加稳定,拥有一定的健壮性。
使用统一组件,可以保证内容一致
- 弹窗组件,保证一致的弹窗样式
- 提示组件,一致的提示样式
- 错误提示,一致的错误提示