防御性編程技巧
擊上方“C語(yǔ)言與CPP編程”,選擇“關(guān)注/置頂/星標(biāo)公眾號(hào)”
干貨福利,第一時(shí)間送達(dá)!

2 不要倉(cāng)促地編寫代碼
char *unsafe_copy(const char *source){char *buffer = new char[10];strcpy(buffer, source);return buffer;}
char *safer_copy(const char *source){char?*buffer?=?new?char[10];strncpy(buffer,?source,?10);return?buffer;}
大多數(shù)語(yǔ)言都提供了一條switch語(yǔ)句;這些語(yǔ)言都將碰到default case的執(zhí)行情況。如果default case是錯(cuò)誤的,在代碼中將錯(cuò)誤情況明示出來(lái)。如果一切都正常,也要在代碼中明示順利執(zhí)行的情況,只有這樣維護(hù)代碼的程序員才會(huì)理解程序的執(zhí)行情況。
這條簡(jiǎn)單的建議將確保你的讀者可以明白你所編寫的所有代碼。他們做出的錯(cuò)誤設(shè)想會(huì)更少。
即使是最基本的計(jì)算,也會(huì)使數(shù)值型變量上溢或下溢。對(duì)此要非常注意。語(yǔ)言規(guī)范或核心庫(kù)提供了一些機(jī)制,用來(lái)確定各個(gè)標(biāo)準(zhǔn)類型的大小——?jiǎng)e忘了使用這些機(jī)制。確保你了解所有可用的數(shù)值類型,以及每種類型最適合的情況。
C或C++語(yǔ)言的程序員真的應(yīng)該對(duì)常量的設(shè)置保持高度警惕,這會(huì)讓日子好過(guò)很多。盡可能將所有可以設(shè)置成常量的都設(shè)為常量。這樣做有兩個(gè)好處:首先,常量的限制條件可以充當(dāng)代碼記錄;其次,常量使編譯器可以找到你所犯下的愚蠢錯(cuò)誤。這樣,你就可以避免修改超出上下限的數(shù)據(jù)了。
轉(zhuǎn)載:https://blog.csdn.net/everpenny/article/details/6316698
評(píng)論
圖片
表情
