[advanced c++] Professional coding 02 - 书写格式
旧风格之漏洞百出
命名法等书写格式,将遵循Google风格,详见以上链接。
以下的”旧内容“将仅供参考。
(1) 骆驼式命名法(Camel-Case)
函数这个看上去不是很适应。
至于整数,可以多一些通用的扩展:idx/index, row/height, col/weight 等。
double类型:dwXXXX
(2) 匈牙利命名法 补充
[ 属性+类型+描述 ]
| Prefix | Comment |
| g_ | 全局变量 |
| m_ | 类成员变量 |
| s_ | 静态变量 |
| c_ | 常量 |
(3) Coding Style
This is the summary of experiences during development.
|
Type
|
Prefix
|
Example
|
|---|---|---|
| int | i | iNum, iCnt, iRst, idxCol, idxRow, |
| float | f | fWeight, fLen, |
| double | d | dSize |
| string | s | sName, sPath, sFileName, sFolderName |
| stringstream | ss | ssName, ssPath |
| array | a | aItems, aPathList |
| bool | b | bIsComplete |
| function | fn | fnHandler |
| object | o | oHost |
| pointer | p | pMem |
| global | g_ | g_bIsComplete |
| static | s_ | s_aItems |
| const | c_ | c_sPath |
| debug | debug_ | debug_totalTime |
| mat | Img | grayImg (RGB is default), graySmoothedImg, graySmoothedCannyImg |
| roi | roi | roiReminderImg |
| orientation | _<xxx> | g_roiDetection_bottom, g_roiDetection_left |
| color channel | <r/g/b>ch | rchImg, gchImg, bchImg |
| result | _rst, _result | grayGridbox_rst, knnGrayImg_rst, knnGrayImg_result |
Google规范风格
- 7. 命名约定
- 7.1. 通用命名规则
- 7.2. 文件命名【文件名要全部小写, 可以包含下划线;.cc, .h, .inc】
- 7.3. 类型命名【类名还是首字母大写非下划线比较好】
- 7.4. 变量命名
- 7.5. 常量命名【使用k,const int kDaysInAWeek = 7;】
- 7.6. 函数命名【驼峰即可】
- 7.7. 命名空间命名
- 7.8. 枚举命名【遵循常量风格】
- 7.9. 宏命名【全部大写,一般不同】
- 7.10. 命名规则的特例
- 译者(acgtyrant)笔记
/* 如果有问题则补充 */
/* 如果有问题则补充 */
- 9. 格式
- 9.1. 行长度【每一行代码字符数不超过 80】
- 9.2. 非 ASCII 字符
- 9.3. 空格还是制表位【只使用空格, 每次缩进 2 个空格】
- 9.4. 函数声明与定义【参数的对齐,如果一行放不下】
- 9.5. Lambda 表达式
- 9.6. 函数调用
- 9.7. 列表初始化格式
- 9.8. 条件语句
- 9.9. 循环和开关选择语句
- 9.10. 指针和引用表达式
- 9.11. 布尔表达式
- 9.12. 函数返回值
- 9.13. 变量及数组初始化
- 9.14. 预处理指令
- 9.15. 类格式【
public:,protected:,private:, 每个都缩进 1 个空格】 - 9.16. 构造函数初始值列表
- 9.17. 命名空间格式化【命名空间内容不缩进】
- 9.19. 水平留白
- 9.19. 垂直留白
- 译者 (YuleFox) 笔记
- 译者(acgtyrant)笔记
/* 如果有问题则补充 */
constexpr的好处:
- 是一种很强的约束,更好地保证程序的正确语义不被破坏。
- 编译器可以在编译期对constexpr的代码进行非常大的优化,比如将用到的constexpr表达式都直接替换成最终结果等。
- 相比宏来说,没有额外的开销,但更安全可靠。
VSCode 插件
Ref: 自己使用过比较好用的VSCode插件
C/C++ [ms-vscode.cpptolls] 智能推导,调试和代码浏览
C/C++ Clang Command Adapter [mitaki28.vscode-clang] 使用Clang的命令来分析C/C++/Object-C的代码诊断,还有代码补全。
C/C++ Snippets [hars.cppsnippets] 有用的C/C++代码片断,节省时间
C++ Algorithm Mnemonics [davidbroetje.algorithm-mnemonics-vscode] 写C++不可能不接触STL,这个插件能让你使用STL算法更有生产力
cppcheck [matthewferreira.cppcheck] 这个插件帮你方便的调用cppcheck这款C++静态分析软件的命令来检查你的C++代码隐患,包括越界,资源泄漏等
CTags Support[jaydenlin.ctags-support] 先要安装ctags,然后就可以查函数等符号的定义了,但是不能查引用,支持语言很多,不用担心。
Clang-Format [xaver.clang-format] 把你的C,C++ Java js等代码格式化为Clang的代码风格


浙公网安备 33010602011771号