编程中的项目、文件、变量命名探究
命名,可以说是编码的第一步,从一个项目如何命令,一个文件如何命名,到一个类的命名,一个函数的命名都需要规范
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个模块进行协作,最终得到结果;最强的内聚体现在功能能不能拆分、就是是否原子化。