五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

函數(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編寫)的評論 (共 條)

分享到微博請遵守國家法律
禹城市| 泰和县| 岗巴县| 灵寿县| 龙州县| 双峰县| 汝南县| 嘉祥县| 淅川县| 胶南市| 安徽省| 西平县| 彩票| 南充市| 阳朔县| 凤凰县| 平顶山市| 田林县| 隆德县| 瓮安县| 盐池县| 大厂| 上蔡县| 呼玛县| 庆安县| 哈尔滨市| 公主岭市| 鹤壁市| 长乐市| 荣昌县| 蒙城县| 汾西县| 天峨县| 当雄县| 高雄市| 邢台县| 和林格尔县| 西青区| 松阳县| 靖西县| 民丰县|