菜鸟笔记
提升您的技术认知

编码规范(linux内核编码规范、C编码规范、java编程规范……)

谷歌C++编码规范

https://download.csdn.net/download/chengbozhang/10318894

1 保持一致也非常重要,如果你在一个文件中新加的代码和原有代码风格相去甚远的话,这就破坏了文件本身的整体美观也影响阅读,所以要尽量避免。

2 一些条目往往有例外,比如下面这些,所以本图不能代替文档,有时间还是把PDF认真阅读一遍吧。

    异常在测试框架中确实很好用

    RTTI在某些单元测试中非常有用

    在记录日志时可以使用流

    操作符重载 不提倡使用,有些STL 算法确实需要重载operator==时可以这么做。

3 如果觉得这图不错,帮我顶下。

注:原图较大,在新标签页中打开或保存到本地打开更清晰

(摘自:一张图总结Google C++编程规范(Google C++ Style Guide)_voidccc的博客-CSDN博客_c++编码规范)

编码规范----编辑中

命名规则:
    类似 Total、 Sum、 Average、 Max、 Min、 Record、 String、 Pointer 这样的表示计算结果的词语修饰某个变量时,请记住放在最后面。
/**
* 这组变量具有非常优雅的对称性。
*一致性,对称性,可以极大的提高可读性,简化维护工作。
*/
revenueTotal    revenueAverage
expenseTotal    expenseAverage
/**
*这组变量与上组变量相比,其对称性和可读性就很差。
*/
totalRevenue    averageRevenue   
totalExpense    averageExpense

5.为枚举类型命名

    使用组前缀,如Color_ , Planet_ , Month_ 就可以了。如Color_Red, Color_Blue都是表示同属于一个组。

1. 驼峰命名法
1.1 小驼峰法

    除第一个单词之外,其他单词首字母大写(常用于变量)

int myStudentNumber

1.2 大驼峰法(帕斯卡命名法)

    每一个单词的首字母都采用大写字母(常用语类名,函数名,属性,命名空间)

class StudentFamily

2. 匈牙利命名法

    变量名=属性+类型+对象描述,这样做的好处是使程序员第一眼看到变量时就对变量的类型和其它属性有直观的了解。

2.1 匈牙利命名法 - 属性

全局变量 g_
常量 c_
成员变量 m_
静态变量 s_

2.2 匈牙利命名法 - 类型

指针 p
函数 fn
无效 v
句柄 h
长整型 l
布尔 b
浮点型 f
双字 dw
字符串 sz
短整型 n
双精度浮点 d
计数 c(通常用cnt)
字符 ch(通常用c)
整型 i(通常用n)
字节 by 字 w
实型 r
无符号 u

2.3 匈牙利命名法 - 描述

最大 Max
最小 Min
初始化 Init
临时变量 T(或Temp)
源对象 Src
目的对象 Dest

3. 下划线命名法

    所有字母均小写,每个单词间以下划线分割

int student_number

4. 实例

m_iMyData 是一个匈牙利命名法,m_表示它是成员变量,小写的i说明了它是个整型,后面的和帕斯卡命名相同,指示了该变量的用途

myData 是一个骆驼命名法,它第一个单词的第一个字母小写,后面的单词首字母大写,看起来像一个骆驼

MyData 就是一个帕斯卡命名的示例

my_data 是一个下划线命名的示例

explicit

 explicit Writer(Pipe *p) : pipe(p) {}

 google的c++规范中提到explicit的优点是可以避免不合时宜的类型变换,缺点无。所以google约定所有单参数的构造函数都必须是显示的,只有极少数情况下拷贝构造函数可以不声明称explicit。例如作为其他类的透明包装器的类。

linux内核编码规范

《Linux 内核代码风格--Kernel Coding Style(持续更新-20170616)》:Linux 内核代码风格--Kernel Coding Style(持续更新-20170616)_CHENG Jian的博客-CSDN博客_kernel风格

GITHUB:LDD-LinuxDeviceDrivers/study/pattern/code_style at master · gatieme/LDD-LinuxDeviceDrivers · GitHub

《linux内核代码风格(中文)》:linux内核代码风格(中文)_牛晨光的博客-CSDN博客

当前基于Linux Kernel V4.11.5

英文原版

参见内核文档 Documentation/process/coding-style.rst

英文原版 : https://www.kernel.org/doc/Documentation/process/coding-style.rst