當岔題成了習慣,不岔就是例外。本篇的「岔題」是:螢幕水平空間的重要性。古人的螢幕,水平可用的字元數約 80 個,據說跟 IBM 有關係。有了那樣的歷史因素,80 便成了「魔術數字」。有一些人的程式碼用 80 字元做為「邊界」,超出即換(斷行)。有一個 Visual Studio 外掛可以在指定的位置加上垂直線,我的習慣是 96 個字元。
C++11 推出前,使用 STL 組件的痛苦指數居高不下。例如下列使用 std::vector
的程式碼:
std::vector<std::string> user_name = {"sam", "tsai", "richard"};
std::vector<std::string>::const_iterator it =
std::find(user_name.begin(), user_name.end(), "sam");
if (it != user_name.end()) {
// Do something...
}
有了 auto
上述程式可改寫成:
std::vector<std::string> user_name = {"sam", "tsai", "richard"};
auto it = std::find(user_name.begin(), user_name.end(), "sam");
if (it != user_name.end()) {
// Do something...
}
是不是簡潔許多?而且,真實場景還有比這個更誇張的的程式碼,使用 auto
不僅節省打字的時間,也讓整體的程式碼呈現更精實。
另一個引入 auto
對程式碼「版面」安排的改變反應在函數宣告上:
bool ContainsShitOwner(const std::vector<std::string>& names);
std::vector<std::string> GetTeaShopOwner();
使用 auto 來宣告函數,變成:
auto ContainsShitOwner(const std::vector<std::string>& names) -> bool
auto GetTeaShopOwner() -> std::vector<std::string>;
發現函數宣告式左邊固定為 auto
,整體的閱讀效果應有顯助提昇。