编程中的项目、文件、变量命名探究
命名,可以说是编码的第一步,从一个项目如何命令,一个文件如何命名,到一个类的命名,一个函数的命名都需要规范
1. 项目的命名方式
统计了 github 上 Google 与 Nvidia 两家公司的部分的开源项目,发现他们的命名规则分为以下几类
| Nvidia | ||
|---|---|---|
| 全部小写 | tensorflow、tensorboard、tfjs | deepops、aistore、libcudacxx |
| 小写 +“-” | model-card-toolkit、ngraph-bridge、tflite-support | spark-rapids、framework-determinism、container-config、nvidia-gcp-samples |
| 首字母大写 | - | TensorRT、TRTorch |
| 首字母大写 +“-” | - | Reflex-Latency-Analyzer-Mouse-Database |
| 特殊含义的缩写(大写) | - | AMGX、DCGM、DALI |
统计时间:2021.2.4
从统计的数据来看,两家同时的开源项目命名以全部小写、小写+“-” 为主,实际命名项目时,也建议使用这两种方式
2.Python 常见命名规
copy from Google 开源项目风格指南 - Python 命名
Python 之父 Guido 推荐的规范
| Type | Public | Internal | note |
|---|---|---|---|
| Modules | lower_with_under | _lower_with_under | 模块 |
| Packages | lower_with_under | 包 | |
| Classes | CapWords | _CapWords | 类 |
| Exceptions | CapWords | 异常 | |
| Functions | lower_with_under() | _lower_with_under() | 函数 |
| Global/Class Constants | CAPS_WITH_UNDER | _CAPS_WITH_UNDER | 常量 |
| Global/Class Variables | lower_with_under | _lower_with_under | 变量 |
| Instance Variables | lower_with_under | _lower_with_under (protected) or __lower_with_under (private) | 实例变量 |
| Method Names | lower_with_under() | _lower_with_under() (protected) or __lower_with_under() (private) | 方法名 |
C++ 常见命名规范
1 | 对于高质量的工程,一般会做到: |
摘录自:C++ 命名规范
1. 什么是低耦合、高内聚?[1]
低耦合: 耦合指的是元素与元素之间的连接或依赖程度,这里的元素包括功能、对象、系统、子系统、模块。
1 | 例如:现有元素A,B,A依赖B完成,如果B出现问题或者经过修改,A元素就不能正常工作,那么说元素A、B之间耦合 |
高内聚:或称为功能内聚,指系统中元素职责的相关性和集中程度,如果元素有高度的相关职责,而没有其他工作,这就是高内聚
1 | 例如:只需要元素A、B共同完成计算,就可以最终得到C,在元素A、B所在范围(函数、类、模块等)内,如果没有其他元素并且A、B不参与其他计算,则认为A、B元素所在范围高内聚。 |
通俗理解
耦合越弱越好,内聚越强越好,最弱的模块就是通过一个主控模块协调 N 个模块进行协作,最终得到结果;最强的内聚体现在功能能不能拆分、就是是否原子化。