代码风格和编程习惯
2009-12-12 14:27
316 查看
whzeng@126.com
1. 合理适当的注释
合理的恰当的注释是增加代码可读性一种好的方法,但是为了注释而注释实在是在浪费时间。
2. 简洁高效的命名
命名规范一般有3类风格:匈牙利命名法、骆驼命名法和帕斯卡命名法
2.1 匈牙利命名法
广泛应用于象Microsoft Windows这样的环境中。Windows 编程中用到的变量(还包括宏)
的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯- 西蒙尼
(Charles Simonyi) 提出的。 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标
识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员
变量), 再指针,再简单数据类型,再其它。 例如:m_lpszStr, 表示指向一个以0字符结尾
的字符串的长指针成员变量。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是
首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
2.2 骆驼命名法
混合使用大小写字母来构成变量和函数的名字。例如,下面是分别用骆驼式命名法和下划
线法命名的同一个函数:
Foo::historyItem();
Foo::setHistoryItem(void* item);
void set_history();
前两个函数名中的每一个逻辑断点都有一个大写字母来标记;
第三个函数名使用了下划线法,函数名中的每一个逻辑断点都有一个下划线来标记。
骆驼式命名法近年来越来越流行了,在许多新的函数库和Microsoft Windows这样的环境中,它
使用得当相多。另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的
环境中,它的使用非常普遍。
2.3 帕斯卡命名法
与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写,如:
Foo::HistoryItem();
Foo::SetHistoryItem();
二者都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和骆驼命名法居多。
3.三者比较
个人觉得匈牙利命名法过于繁琐,用前缀去区分变量或者类型,开发效率较低 (与后两者比较,
后两者一般不需要加前缀区分类型),适合用于C和C++混合编程使用的场合 (由于C编译器对于类型
检查较弱,不同的类型如有无符号整型,可能造成使用不当,但是加了前缀后能提醒调用者。);
骆驼命名法比较简洁优雅,不用命名来区分不同类型,而是通过类型的意义来确定,开发效率较高
(与匈牙利命名法),适合于纯C++开发的场合。
个人觉得骆驼命名法非常简洁优雅,但是国人将MS捧得过高,一些计算机书要么是没有命名风
格,要么就是匈牙利命名法,熟不知匈牙利命名法适合C和C++混合语言开发,对于纯C++或者纯C用
匈牙利命名法其实浪费青春啊!
以下是骆驼命名法的例子共学。
class Foo {
public:
Foo();
~Foo();
enum Flag { // 将枚举、结构体和class等都是为类型,不用在命名上区分
PageFlag = 0,
FrameFlag,
};
HistoryItem& item(); // 不需要增加Get来表示是取,否则调用者没使用一次接口,则
// 需要加一个Get,吐血!
void setHistoryItem(); // 但是通过set来表示设置值
private:
HistoryItem* m_item; // 虽然用m_来表示类成员,但是名称前不加表示类型的前缀
};
1. 合理适当的注释
合理的恰当的注释是增加代码可读性一种好的方法,但是为了注释而注释实在是在浪费时间。
2. 简洁高效的命名
命名规范一般有3类风格:匈牙利命名法、骆驼命名法和帕斯卡命名法
2.1 匈牙利命名法
广泛应用于象Microsoft Windows这样的环境中。Windows 编程中用到的变量(还包括宏)
的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯- 西蒙尼
(Charles Simonyi) 提出的。 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标
识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员
变量), 再指针,再简单数据类型,再其它。 例如:m_lpszStr, 表示指向一个以0字符结尾
的字符串的长指针成员变量。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是
首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
2.2 骆驼命名法
混合使用大小写字母来构成变量和函数的名字。例如,下面是分别用骆驼式命名法和下划
线法命名的同一个函数:
Foo::historyItem();
Foo::setHistoryItem(void* item);
void set_history();
前两个函数名中的每一个逻辑断点都有一个大写字母来标记;
第三个函数名使用了下划线法,函数名中的每一个逻辑断点都有一个下划线来标记。
骆驼式命名法近年来越来越流行了,在许多新的函数库和Microsoft Windows这样的环境中,它
使用得当相多。另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的
环境中,它的使用非常普遍。
2.3 帕斯卡命名法
与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写,如:
Foo::HistoryItem();
Foo::SetHistoryItem();
二者都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和骆驼命名法居多。
3.三者比较
个人觉得匈牙利命名法过于繁琐,用前缀去区分变量或者类型,开发效率较低 (与后两者比较,
后两者一般不需要加前缀区分类型),适合用于C和C++混合编程使用的场合 (由于C编译器对于类型
检查较弱,不同的类型如有无符号整型,可能造成使用不当,但是加了前缀后能提醒调用者。);
骆驼命名法比较简洁优雅,不用命名来区分不同类型,而是通过类型的意义来确定,开发效率较高
(与匈牙利命名法),适合于纯C++开发的场合。
个人觉得骆驼命名法非常简洁优雅,但是国人将MS捧得过高,一些计算机书要么是没有命名风
格,要么就是匈牙利命名法,熟不知匈牙利命名法适合C和C++混合语言开发,对于纯C++或者纯C用
匈牙利命名法其实浪费青春啊!
以下是骆驼命名法的例子共学。
class Foo {
public:
Foo();
~Foo();
enum Flag { // 将枚举、结构体和class等都是为类型,不用在命名上区分
PageFlag = 0,
FrameFlag,
};
HistoryItem& item(); // 不需要增加Get来表示是取,否则调用者没使用一次接口,则
// 需要加一个Get,吐血!
void setHistoryItem(); // 但是通过set来表示设置值
private:
HistoryItem* m_item; // 虽然用m_来表示类成员,但是名称前不加表示类型的前缀
};
相关文章推荐
- 编程习惯,代码风格,其实很重要
- 从代码优化的角度看编程风格
- 关于代码测试及编程习惯的一二三!
- 2014.02.13 重构代码之注释习惯和风格
- 51.Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用
- 编程风格---代码中doxygen方式的注释写法
- c#代码编程风格很实用
- Object-C 声明属性为什么用下划线,代码规范和编程风格
- 设定 Eclipse Coding Style 以符合 Android 编程代码风格
- 代码审查和不良编程习惯
- linux 代码编程风格
- 编程的一些代码风格(JAVA)
- 你应该把代码重构当成你的编程习惯
- 利用JavaScript和正则表达式进行丰富的日期判断(给其它项目组的代码,有比较好的编程风格和注释)
- 第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用
- 编程风格——代码中特殊的注释技术——TODO、FIXME和XXX的用处
- 《C++ primer》学习笔记之十三:一段很好看的c++代码,由此得出的编程风格
- Object-C 声明属性为什么用下划线,代码规范和编程风格
- Objective-C代码规范和编程风格参考
- [C++] 编程实践之1: Google的C++代码风格1:头文件