您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++怎么將有意義的操作封裝為精心命名的函數”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++怎么將有意義的操作封裝為精心命名的函數”吧!
從復雜代碼分離出可以讓代碼更可讀,更有可能被復用,而且更少錯誤的通用代碼。如果存在被良好定義的動作,那就從其他代碼中將它們分離出來并且為之命名。
Example, don't(示例,不要這樣做)
void read_and_print(istream& is) // read and print an int{ int x; if (is >> x) cout << "the int is " << x << '\n'; else cerr << "no int on input\n";}
read_and_print函數的差不多每一行都錯了。它讀入信息,向一個固定ostream輸出,向固定ostream輸出,只處理整數。沒有任何代碼可以復用,邏輯上獨立的操作容易混淆而且局部變量的作用域還超過了使用它們的邏輯。這樣一個小例子看起來還行,但是如果輸入操作,輸出操作和錯誤處理更加復雜的話,這種混亂的代碼會變得更加難于理解。Note(注意)
如果你編寫了一個有可能被重復使用的不平凡的lambda表達式,通過將它賦給一個變量(通常非局部)的方式給它一個名字。Example(示例)
sort(a, b, [](T x, T y) { return x.rank() < y.rank() && x.value() < y.value(); });
為拆分表達式的lambda表達式命名并提供一個關于它含義的強提示。
auto lessT = [](T x, T y) { return x.rank() < y.rank() && x.value() < y.value(); };
sort(a, b, lessT);
find_if(a, b, lessT);
最短的代碼并不一定意味著最好的性能和維護性。
Exception(例外)
循環體,包含lambda形式的循環體,很少需要命名。然而大規模的循環體(例如幾十行或幾十頁)會成為問題。保持函數體簡短的規則也包含“保持循環體短小”的意思。類似地,作為回調參數使用的lambda表達式有些時候也會不平凡,但是不大可能被復用。Enforcement(實施建議)
See Keep functions short and simple
參考保持函數簡短的規則。
Flag identical and very similar lambdas used in different places.
如果完全相同或非常相似的lambda表達式在不同的地方被使用,標記它們。
感謝各位的閱讀,以上就是“C++怎么將有意義的操作封裝為精心命名的函數”的內容了,經過本文的學習后,相信大家對C++怎么將有意義的操作封裝為精心命名的函數這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。