编程中的项目、文件、变量命名探究

命名,可以说是编码的第一步,从一个项目如何命令,一个文件如何命名,到一个类的命名,一个函数的命名都需要规范

1.项目的命名方式

统计了github上Google与Nvidia两家公司的部分的开源项目,发现他们的命名规则分为以下几类

GoogleNvidia
全部小写tensorflow、tensorboard、tfjsdeepops、aistore、libcudacxx
小写+“-”model-card-toolkit、ngraph-bridge、tflite-supportspark-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推荐的规范

TypePublicInternalnote
Moduleslower_with_under_lower_with_under模块
Packageslower_with_under
ClassesCapWords_CapWords
ExceptionsCapWords异常
Functionslower_with_under()_lower_with_under()函数
Global/Class ConstantsCAPS_WITH_UNDER_CAPS_WITH_UNDER常量
Global/Class Variableslower_with_under_lower_with_under变量
Instance Variableslower_with_under_lower_with_under (protected) or __lower_with_under (private)实例变量
Method Nameslower_with_under()_lower_with_under() (protected) or __lower_with_under() (private)方法名

C++常见命名规范

1
2
3
对于高质量的工程,一般会做到:
1.代码简洁精炼,美观,可读性好,高效率,高复用,可移植性好,高内聚,低耦合,没有冗余,不符合这些原则,必须特别说明。
2.规范性,代码有规可循。特殊排版、特殊语法、特殊指令,必须特别说明。

摘录自:C++命名规范

1.什么是低耦合、高内聚?[1]

低耦合:耦合指的是元素与元素之间的连接或依赖程度,这里的元素包括功能、对象、系统、子系统、模块。

1
例如:现有元素A,B,A依赖B完成,如果B出现问题或者经过修改,A元素就不能正常工作,那么说元素A、B之间耦合

高内聚:或称为功能内聚,指系统中元素职责的相关性和集中程度,如果元素有高度的相关职责,而没有其他工作,这就是高内聚

1
例如:只需要元素A、B共同完成计算,就可以最终得到C,在元素A、B所在范围(函数、类、模块等)内,如果没有其他元素并且A、B不参与其他计算,则认为A、B元素所在范围高内聚。

通俗理解

耦合越弱越好,内聚越强越好,最弱的模块就是通过一个主控模块协调N个模块进行协作,最终得到结果;最强的内聚体现在功能能不能拆分、就是是否原子化。


  1. 个人总结的一些C/C++编码规范 ↩︎