真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++中怎么保持函數(shù)簡短

這篇文章將為大家詳細講解有關(guān)C++中怎么保持函數(shù)簡短,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)建站網(wǎng)絡(luò)公司擁有10多年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗,超過千家客戶的共同信賴。提供網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)站開發(fā)、網(wǎng)站定制、外鏈、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計師打造企業(yè)風格,提供周到的售前咨詢和貼心的售后服務(wù)

F.3: Keep functions short and simple(保持函數(shù)簡短)

Reason(原因)

Large functions are hard to read, more likely to contain complex code, and more likely to have variables in larger than minimal scopes. Functions with complex control structures are more likely to be long and more likely to hide logical errors

大的函數(shù)難于理解,更有可能包含復雜代碼,還有可能包含超過最小作用域的變量。包含復雜控制結(jié)構(gòu)的代碼更有可能是長代碼而且更容易隱藏邏輯錯誤。

Example(示例)

Consider(考慮如下代碼):

double simple_func(double val, int flag1, int flag2)    // simple_func: takes a value and calculates the expected ASIC output,    // given the two mode flags.{    double intermediate;    if (flag1 > 0) {        intermediate = func1(val);        if (flag2 % 2)             intermediate = sqrt(intermediate);    }    else if (flag1 == -1) {        intermediate = func1(-val);        if (flag2 % 2)             intermediate = sqrt(-intermediate);        flag1 = -flag1;    }    if (abs(flag2) > 10) {        intermediate = func2(intermediate);    }    switch (flag2 / 10) {    case 1: if (flag1 == -1) return finalize(intermediate, 1.171);            break;    case 2: return finalize(intermediate, 13.1);    default: break;    }    return finalize(intermediate, 0.);}

This is too complex. How would you know if all possible alternatives have been correctly handled? Yes, it breaks other rules also.

We can refactor:

代碼過于復雜。你怎么知道是否所有可能的分支都已經(jīng)被正確處理了?是的,它也違反了其他的規(guī)則。

我們可以重構(gòu)這段代碼:

double func1_muon(double val, int flag){    // ???}double func1_tau(double val, int flag1, int flag2){    // ???}double simple_func(double val, int flag1, int flag2)    // simple_func: takes a value and calculates the expected ASIC output,    // given the two mode flags.{    if (flag1 > 0)        return func1_muon(val, flag2);    if (flag1 == -1)        // handled by func1_tau: flag1 = -flag1;        return func1_tau(-val, flag1, flag2);    return 0.;}

 
Note(注意)

"It doesn't fit on a screen" is often a good practical definition of "far too large." One-to-five-line functions should be considered normal.

“一屏顯示不下”通常是一個定義“過大”代碼的良好實踐。一到五行的代碼應(yīng)該被認為是正常的。

Note(注意)

Break large functions up into smaller cohesive and named functions. Small simple functions are easily inlined where the cost of a function call is significant.

將大函數(shù)差分為較小的內(nèi)聚函數(shù)并命名。當函數(shù)調(diào)用代價過大時簡短的函數(shù)容易linline化。

譯者注:不需要過于擔心因為函數(shù)簡短而增加的調(diào)用代價。

Enforcement(實施建議)
  • Flag functions that do not "fit on a screen." How big is a screen? Try 60 lines by 140 characters; that's roughly the maximum that's comfortable for a book page.

    標記“一屏裝不下”的函數(shù)。一屏是多大?試試60行80列。這大概是令人舒適的一頁書的最大值。

  • Flag functions that are too complex. How complex is too complex? You could use cyclomatic complexity. Try "more than 10 logical path through." Count a simple switch as one path.

關(guān)于C++中怎么保持函數(shù)簡短就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享文章:C++中怎么保持函數(shù)簡短
標題URL:http://weahome.cn/article/josocj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部