W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
前面說明的編程習(xí)慣基本都是強(qiáng)制性的. 但所有優(yōu)秀的規(guī)則都允許例外, 這里就是探討這些特例.
Tip
對于現(xiàn)有不符合既定編程風(fēng)格的代碼可以網(wǎng)開一面.
當(dāng)你修改使用其他風(fēng)格的代碼時, 為了與代碼原有風(fēng)格保持一致可以不使用本指南約定. 如果不放心可以與代碼原作者或現(xiàn)在的負(fù)責(zé)人員商討, 記住, 一致性 包括原有的一致性.
Tip
Windows 程序員有自己的編程習(xí)慣, 主要源于 Windows 頭文件和其它 Microsoft 代碼. 我們希望任何人都可以順利讀懂你的代碼, 所以針對所有平臺的 C++ 編程只給出一個單獨(dú)的指南.
如果你習(xí)慣使用 Windows 編碼風(fēng)格, 這兒有必要重申一下某些你可能會忘記的指南:
- 不要使用匈牙利命名法 (比如把整型變量命名成
iNum
). 使用 Google 命名約定, 包括對源文件使用.cc
擴(kuò)展名.- Windows 定義了很多原生類型的同義詞 (YuleFox 注: 這一點(diǎn), 我也很反感), 如
DWORD
,HANDLE
等等. 在調(diào)用 Windows API 時這是完全可以接受甚至鼓勵的. 但還是盡量使用原有的 C++ 類型, 例如, 使用const TCHAR *
而不是LPCTSTR
.- 使用 Microsoft Visual C++ 進(jìn)行編譯時, 將警告級別設(shè)置為 3 或更高, 并將所有 warnings 當(dāng)作 errors 處理.
- 不要使用
#pragma once
; 而應(yīng)該使用 Google 的頭文件保護(hù)規(guī)則. 頭文件保護(hù)的路徑應(yīng)該相對于項目根目錄 (yospaly 注: 如#ifndef SRC_DIR_BAR_H_
, 參考 #define 保護(hù) 一節(jié)).- 除非萬不得已, 不要使用任何非標(biāo)準(zhǔn)的擴(kuò)展, 如
#pragma
和__declspec
. 允許使用__declspec(dllimport)
和__declspec(dllexport)
; 但你必須通過宏來使用, 比如DLLIMPORT
和DLLEXPORT
, 這樣其他人在分享使用這些代碼時很容易就去掉這些擴(kuò)展.
在 Windows 上, 只有很少的一些情況下, 我們可以偶爾違反規(guī)則:
- 通常我們 禁止使用多重繼承, 但在使用 COM 和 ATL/WTL 類時可以使用多重繼承. 為了實(shí)現(xiàn) COM 或 ATL/WTL 類/接口, 你可能不得不使用多重實(shí)現(xiàn)繼承.
- 雖然代碼中不應(yīng)該使用異常, 但是在 ATL 和部分 STL(包括 Visual C++ 的 STL) 中異常被廣泛使用. 使用 ATL 時, 應(yīng)定義
_ATL_NO_EXCEPTIONS
以禁用異常. 你要研究一下是否能夠禁用 STL 的異常, 如果無法禁用, 啟用編譯器異常也可以. (注意這只是為了編譯 STL, 自己代碼里仍然不要含異常處理.)- 通常為了利用頭文件預(yù)編譯, 每個每個源文件的開頭都會包含一個名為
StdAfx.h
或precompile.h
的文件. 為了使代碼方便與其他項目共享, 避免顯式包含此文件 (precompile.cc
), 使用/FI
編譯器選項以自動包含.- 資源頭文件通常命名為
resource.h
, 且只包含宏的, 不需要遵守本風(fēng)格指南.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: