溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C++中怎么表達(dá)意圖

發(fā)布時(shí)間:2021-11-29 11:54:47 來(lái)源:億速云 閱讀:111 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“C++中怎么表達(dá)意圖”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“C++中怎么表達(dá)意圖”吧!

P.3: Express intent(表達(dá)意圖)

Reason(原因)

只要代碼不是意圖的直接陳述(例如在名稱(chēng)或者注釋中),就可能存在實(shí)際行為和意圖不一致的情況。

Example(示例)
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ù)。

譯者注:選擇最能表明意圖的寫(xiě)法的前提條件是你首先得有的選。這就需要熟悉所使用的語(yǔ)言,各種庫(kù)的功能。
Note(注意)

換一個(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清晰的
Enforcement(實(shí)施建議)

尋找那些具有更好選擇的常見(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í)!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

c++
AI