《C++編程規範》筆記(組織和策略)

來源:互聯網
上載者:User
    這是C++信徒的摩西十戒,值得將其銘刻在顯示器的邊緣,供C++程式員們每日膜拜。我要將其銘刻在我的blog裡,銘刻在我的記憶裡,直到它們成為我思維的一部分。

第0條:不要拘泥於細節(瞭解哪些東西不應該標準化)

  • 縮排:不必規定如何縮排,每個人遵從一個自己喜歡的規則即可。
  • 行長:今天已經沒有太大的必要限制80個字元了,當然,越有利於閱讀越好。
  • 命名:不要太嚴苛,除了宏應該全部大寫外,別的只要遵從某種大家接受的風格即可。常見的風格有2種,一種是連字號串連全部小寫單詞,另一種是單字首大寫。如果需要使用各種第三方庫,基本上很難保持一種風格。在一定的範圍內保持一致,目標是使得閱讀更容易即可。
  • 注釋:不要規定注釋的格式。不過,使用doxygen文法的注釋是個好主意,我一直用doxygen產生文檔。
  • 匈牙利記法:很高興,我為自己厭惡的東西找到了支援我的同盟軍。在C++語言中藉助一點小伎倆來表達類型是無益的,C++壓根就不需要這些,它只會帶來混亂。
  • 單入口單出口:在支援異常和確定性析構的C++世界,這是多餘的。

在這裡,旗幟鮮明地反對了兩樣東西:匈牙利記法和單入單出原則。

第1條:在高警告層級乾淨利落地編譯
把編譯器的警告層級開到最大,並且能夠悄無聲息地產生結果。對於那種視警告如無物的人,關門!放狗!也不要輕易的在原始碼中關閉編譯器警告。

  • 對於第三方庫,在包含檔案周圍加以屏蔽即可
  • 未使用參數:不提供該參數名稱即可
  • 未使用的變數:插入一個該變數的運算式即可。這算是一個慣用法了,會比較多的用到。
  • 變數未初始化:初始化。需要通過一個過程來初始化的例外,即形如:obj; init_obj(obj);
  • 某些分支沒有return傳回值。在這些分支上加入斷言:assert(false);再接一個return傳回值。
  • 有、無符號不匹配。如果無法避免,預先寫好強制轉換。個人認為,盡量避免無符號數,即使是處理理論上就沒有符號的資料,有符號數適應性更好。幾乎沒有必要使用無符號數---除了某些位操作。

第2條:使用自動構建系統。
這個就是DailyBuild嘛!對一個Team 專案而言,DailyBuild就是心跳,它應該可以通過一個按鈕或是一條命令就能構建出整個系統。您的心跳正常嗎?這裡的關鍵是:只要一個操作就能完成所有工作。

第3條:使用版本控制系統
還有那個團隊沒有使用vcs?如果沒有,“盲人騎瞎馬,夜半臨深池”,真是極好的寫照。

第4條:在代碼審查上投入
很多團隊其實是沒有有效代碼審查的。亮出自己的代碼,閱讀別人的代碼,這也是熟悉整個項目的好方法。把代碼投影在牆上,幾個人坐下來一起評論也是有效方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.