最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

函數(shù)參數(shù)設計(CSEN-e小白管理員Half_word編寫)

2020-05-24 17:43 作者:e小白官方  | 我要投稿

函數(shù)參數(shù)設計

說起這個話題,可能會被DaLao一笑劃過;函數(shù)設計有什么難的?無外乎實現(xiàn)傳入某些參數(shù),內部實現(xiàn)某種算法,再反饋一個結果給調用者。

的卻如此,對于函數(shù);返回值我們只有一個,內化的算法之類諸君自行探尋;所以本文目的主要是探尋函數(shù)參數(shù)的設計。如果知曉其中奧妙的讀者不妨移步其它文章。
正文:

1.你的的函數(shù)參數(shù)長啥樣?

以C語言為例,相信大家學完函數(shù)設計之后肯定對于參數(shù)設計有許多自己的體會。無論是整形,字符型,甚至是各類指針參數(shù)都了然于心。

巴特,大家會對于參數(shù)的排列有要求嗎?如果要你設計一個有10個以上類型各異的函數(shù);你會如何設計?

如果讀者給出的答案是下面這種:

void Func(int count, long Lenth, char* List, unsigned int Source, 等等等等);

?? 上述的傳統(tǒng)設計方案,固然沒有任何錯誤,大部分語言設計教材教給我們的都是這種案。但是,這就不得不面對一個致命問題----函數(shù)可讀性差,且顯得臃腫(一般這種方案設計,必須采取多次續(xù)行才能將參數(shù)一一放下)。有讀者可能會反駁可讀性,但是事實就是如此,一大片的函數(shù)頭看著就是十分不舒服。

2. 如何設計參數(shù)才能讓上述問題得到解決?

筆者給出一種方案:結構體化設計你的一堆參數(shù)。

相信一提到在,有過Win32API使用的同學會恍然大悟;這種手法對于成熟的工程庫很常見。

即將相關性較大的參數(shù)盡量放入一個結構體中,使得函數(shù)參數(shù)數(shù)量控制在3~4個之際。最終得到簡化函數(shù)的使用的目的。

但是這種設計也還是需要面對一個問題:參數(shù)值初始化。所以也就引出下面的話題。

3. 設計這種參數(shù)的初始化函數(shù),給一種默認處理方案。

對于一個包含眾多參數(shù)的結構體,其初始化盡量遵循:變量填0,指針指NULL

為何?強迫使用者規(guī)范變量的初始化。給需要用到結構體的函數(shù)設定一種簡易的默認運行動作。下方給出初始化函數(shù)設計具體實例。

bool InitFunc(struct FuncStruct*? Default)

{
???? Default->Count = 0;

?????? ?? Default->Lenth = 0;

?????? ?? Default->List = NULL;

?????? Default->Source = 0;

?????? //……其它參數(shù)盡量按照原則

?

?????? return 1;

}

4.參數(shù)中的特例 ---- 回調函數(shù)。

在此處插入這個話題有些突兀,但是也是需要警惕的。對于回調函數(shù),盡量將其函數(shù)地址以及參數(shù)整合在一個結構體內;所以上述初始化操作顯得格外重要,一旦回調函數(shù)參數(shù)傳遞不正確,程序多半崩潰,而且查驗極為困難。

5. 設計禁忌?goto語句的使用

?????? 最后聊一點老師不讓干的活----goto語句,相信第一次學習某種高級語言,老師都會對你說:goto和標簽一起使用,但是現(xiàn)在不用了,容易帶出BUG?;蛘咧苯踊乇?。

?????? 但是,goto的前身可是匯編的專用:跳轉指令。如果其真的如講述的那般不堪,那為何還有這么多語言仍然保留?可見,goto仍有其值得學習的點。

?

引入下列問題:

多層循環(huán)嵌套中,如何從最內層直接跳出所有循環(huán)?

解決方案最經典的是:修改最外層循環(huán)成立條件,使得循環(huán)終止。但是最外層循環(huán)如果是while(1)呢?

這時候只有使用goto,(也許有小伙伴會說用longjump(),但是本質還是此類跳轉,僅僅距離不同).

代碼如下:

CSEN-e小白管理員Half_word

可見,某些異常處理有goto這類跳轉指令顯然解決更加輕松了。

但是務必記?。?span id="s0sssss00s" class="color-pink-03">goto被人詬病最多的就是濫用,每次的跳轉都應當是迫不得已的終止;往前跳一般會讓你的代碼產生BUG.

(Ps:setjump與longjump()請讀者自行查閱使用,并且比較與goto的差別。)



函數(shù)參數(shù)設計(CSEN-e小白管理員Half_word編寫)的評論 (共 條)

分享到微博請遵守國家法律
贵德县| 松溪县| 阳朔县| 松滋市| 来宾市| 玉溪市| 鄂温| 洮南市| 连城县| 贵定县| 自治县| 巴彦淖尔市| 嘉祥县| 万宁市| 湟中县| 泌阳县| 广宁县| 廉江市| 巧家县| 镇安县| 阿勒泰市| 红河县| 全椒县| 大方县| 堆龙德庆县| 五台县| 辽宁省| 托里县| 乌海市| 曲水县| 三门县| 宜章县| 桦川县| 苍南县| 青岛市| 余干县| 安阳县| 霸州市| 渝北区| 三亚市| 思茅市|