您好,登錄后才能下訂單哦!
本篇內容主要講解“C++中怎么表達意圖”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++中怎么表達意圖”吧!
只要代碼不是意圖的直接陳述(例如在名稱或者注釋中),就可能存在實際行為和意圖不一致的情況。
gsl::index i = 0;while (i < v.size()) { // ... do something with v[i] ...}
恰好循環通過v的每個元素的意圖沒有被表達。index的實現細節被暴露出來(因此它可能被誤用),而且i的有效范圍要超過循環的范圍,這一點可能是有意的,也可能是無意的。讀者無法只通過這段代碼了解這些。
Better(較好):
for (const auto& x : v) { /* do something with the value of x */ }
現在,這里沒有清楚地提示迭代機制和作用在const元素的循環操作符,因此也就不會發生意外的修改。如果需要修改,就這么寫:
for (auto& x : v) { /* modify x */ }
有時作為更好的選擇,可以使用一個命名算法。這個例子中使用Ranges TS中的for_each是因為它可以直接表達意圖。
for_each(v, [](int x) { /* do something with the value of x */ });
for_each(par, v, [](int x) { /* do something with the value of x */ });
最后一個變形更加清楚的表明了我們并不關心v中元素被處理的次序。
程序員應該熟悉
The guidelines support library 支持庫指南
The ISO C++ Standard Library ISO C++標準庫
Whatever foundation libraries are used for the current project(s)目前項目中使用的任何基本庫。
換一個表達:表明要做什么而不是怎么做。
Note(注意)
某些語言比其他語言更善于表達意圖。
Example(示例)
如果兩個整數值表示2維平面中的一個點的坐標,那么可以說:
draw_line(int, int, int, int); // obscure難以理解的draw_line(Point, Point); // clearer清晰的
尋找那些具有更好選擇的常見樣式。
simple for
loops vs. range-for
loops 對于循環來講,比較簡單的for循環和range
f(T*, int)
interfaces vs. f(span<T>)
interfaces f(T*, int)
接口對 f(span<T>)
接口
loop variables in too large a scope(很大范圍中使用的循環變量)
naked new
and delete 直接的new和delete操作
functions with many parameters of built-in types 包含很多內置類型參數的函數
到此,相信大家對“C++中怎么表達意圖”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。