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