规范 - golang
- 函数注释
|
|
- import顺序
|
|
- 全局const 和 var位置
- 全局const,var变量放在文件最上面(import下面)或者保存在单独的const和var文件中。
命名
- 禁止程序中使用缩写或者有歧义的名称。
- 采用驼峰式命名。
形参
和局部变量
采用驼峰结构命名,首字母必须小写,不得出现下划线。常量
统一采用大写字母,单词之间使用下划线进行分隔。如果是包可见的常量,可在其名字前加上 “k_” 作为前缀。可导出常量与不可导出常量应该分开声明,不得出现在同一常量声明块内。 例如:
123456789// 常量命名方式const (k_CONST_A = 1)const (CONST_A = 1)Slice初始化
- 已知slice长度,使用make([]type, len)。
- 已知slice容量,使用make([]type, 0, cap)。
- 直接使用字面值形式[]type{A,B,C}声明和赋值,取消没必要的append操作。
- Set类型
- 使用map[Type]struct{}表示set类型。
设计
基础原则
- 模块原则: 使用简洁的接口拼合简单的部件
- 清晰原则: 清晰胜于机巧
- 组合原则: 设计时考虑拼接组合
- 分离原则: 策略同机制分离,接口同引擎分离
- 简洁原则: 设计要简洁,复杂度能低则低
- 吝啬原则: 除非确无它法,不要编写庞大的程序
- 透明性原则: 设计要可见,以便审查和调试
- 健壮原则: 健壮源于透明与简洁
- 表示原则: 把知识叠入数据以求逻辑质朴而健壮
- 通俗原则: 接口设计避免标新立异
- 缄默原则: 如果一个程序没什么好说的,就保持沉默
- 补救原则: 出现异常时,马上退出并给出足量错误信息
- 经济原则: 宁花机器一分,不花程序员一秒
- 生成原则: 避免手工hack,尽量编写程序去生成程序
- 优化原则: 雕琢前先得有原则,跑之前先学会走
- 多样原则: 决不相信所谓不二法门的断言
- 扩展原则: 设计着眼未来,未来总比预想快
面向对象设计
基本元素
- 封装
- 继承
- 多态
基本原则(S.O.L.I.D) )
- 单一责任
- 开放封闭
- 里氏替换
- 接口隔离
- 依赖倒置
设计模式
项目原则 参考
|
|
- 测试,测试再测试
- 减少繁琐的继承层次设计
- 函数功能单一,避免一个函数实现多种功能
- 提取重复代码,避免一点改动多处修改(不只限于函数,还包括类和package)
- 注意扩展性和接口设计
- 清楚简单的算法的复杂度
重构
目的
使软件更加容易被修改和理解。
方法
项目
- 少三12345678原则新代码设计时考虑重构,为后续添加和修改功能留下空间。代码设计待改进的地方(随后会有相应的案例分析)1. 事件机制2. 商店重复实现3. 各种重置的统一处理4. 微服务化
资料
- UNIX编程艺术
- 设计模式
- 重构-改善既有代码的设计
- 代码大全
- 编写可读代码的艺术