當你寫下第一行代碼,命名風格的問題就找上來了,我個人接觸過幾種風格的:
1,MFC風格
    class CClassName
    {
        public:
             void DoSomething();
        private:
             CString m_strName;
     };
2,linux風格
  class class_name
    {
         public:
            void do_something();
         private:
            std::string name_;
    };
  class class_name_t
    {
         public:
            void do_something();
         private:
            std::string name_;
    };
3,Java風格
    class ClassName
    {
         public:
              void doSomething();
         private:
              std::string name;
    };
這里關注的差異部分是:1,名稱中是否使用類型前綴或后綴;2,怎樣使用大小寫。
  風格1(MFC風格、匈牙利命名風格)帶來的問題是:導致命名復雜化(m_lpszName?),每次寫個變量名都要經過n道工序(中文->英文->類型提取->最后的名稱),一個類型變化時(如:要用結構代替內置類型,typedef)是不是得發個重大更新重大升級啊,要不然怎么對得起程序中大范圍的名稱替換,要是用svn的版本比對一定可以看到狀觀的景像。
  風格2(linux風格)問題是:帶后綴總是顯得不美觀(看看stl的原代碼),用戶成了命名規范的二等公民(看看boost庫),通用直觀的好名字都認庫占了。其實c++中成員變量帶后綴是好理解的,它可以避免和參數名稱沖突,如下所示:
  class class_name
    {
       public:
           class_name(std::string name)
             :name_(name)
          {
          
           }
          void set_name(std::string name)
         {
             name_ = name; 
          }
       private:
           std::string name_;
    };
    //當成員name_命名為name時,在set_name函數中name = name將是參數的自賦值。
成員變量帶后綴可接受是因為我們認為沒有人會引用它(看到它),但當序列化時,它的名稱會被用戶見到,另外成員變量也可能是公有的,如一個C結構帶了一個輔助使用的構造函數時。那么參數名稱加下劃線怎么樣?我這么干過,不過更不好,因為它會污染你IDE的智能提示以及用doxygen生成的文檔。
類型名后加_t也是好理解的,除了表明這是一個類型外,可以避免與該類型的實例名稱相沖突,有人會說實例名稱用簡寫不就行了嗎,問題是如果我的類名稱已經足夠簡單了呢?加了_t會對用戶代碼的整潔性產生不必要的干擾。
  風格3(Java風格)的問題:在c++中無法避免成員變量名稱與參數名稱沖突,java(或python)不存在這個問題是因為java中成員函數中引用成員變量時總是帶個前綴this。但其實c++也可以這么干,只是出于習慣我們總是省略this前綴,這樣的話就不存在什么問題了。
  就我個人來說,目前傾向于采用java命名風格,原因是它最大程度地避免了命名沖突而又不會對代碼帶來太大的沖擊,這或是就是為什么很多語言的命名風格會向它靠攏。