您的位置:首页 > 编程语言

代码风格和编程习惯

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_来表示类成员,但是名称前不加表示类型的前缀
    };
   
   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息