當(dāng)前位置:首頁 > 公眾號(hào)精選 > 技術(shù)讓夢(mèng)想更偉大
[導(dǎo)讀]“一個(gè)函數(shù)的代碼盡量不要超過50行”

作者 | strongerHuang
微信公眾號(hào) | 嵌入式專欄
“一個(gè)函數(shù)的代碼盡量不要超過50行”
有些讀者可能看到過類似這樣的描述,而自己做項(xiàng)目時(shí),很多函數(shù)都比較多(超過50行),就會(huì)懷疑自己這樣寫是不是不對(duì)。
那么,一個(gè)函數(shù)究竟能不能超過50行呢?今天就來討論下關(guān)于函數(shù)代碼行數(shù)相關(guān)的內(nèi)容。

1關(guān)于代碼行數(shù)多少的問題

一個(gè)函數(shù)多少行代碼合適? 超過1000行的代碼有什么問題?
在編程的各種規(guī)范中,對(duì)函數(shù)代碼行沒有強(qiáng)制要求必須低于**行才行。
你一個(gè)項(xiàng)目所有函數(shù)都低于50行代碼,是可以的。反過來,你一個(gè)函數(shù)超過一萬行代碼(只有main函數(shù)),如果代碼沒問題,也能編譯通過,也是可以照常工作。
我們平時(shí)看到的“一個(gè)函數(shù)的代碼盡量不要超過50行”,它其實(shí)是相對(duì)代碼結(jié)構(gòu)化、模塊化而言的,有很多情況,代碼也會(huì)超過50行,甚至上千行。

2模塊化代碼行數(shù)少

代碼為什么要模塊化?
這個(gè)問題好比:圖書館的書籍,為什么要分類?
因?yàn)槲覀兇a要實(shí)現(xiàn)各種各樣的功能,代碼模塊化之后,會(huì)讓我們更方便的管理、移植,以及后期的維護(hù)。
代碼模塊化是編程中的一個(gè)重要思想,有了模塊化思維,開發(fā)項(xiàng)目會(huì)讓你有事半功倍的效果。
這里可以參看之前分享的文章《嵌入式開發(fā)中的兩點(diǎn)編程思想》。

說回來,為什么模塊化代碼行數(shù)少?

代碼模塊化,就是把要實(shí)現(xiàn)的細(xì)小功能模塊,用一個(gè)函數(shù)封裝起來,也就牽涉到本文說的函數(shù)代碼行數(shù)少的問題。

你會(huì)發(fā)現(xiàn)很多底層驅(qū)動(dòng)、中間層、應(yīng)用層的代碼,其實(shí)都會(huì)用到模塊化編程。
比如底層驅(qū)動(dòng)庫函數(shù):



還比如RTOS模塊化代碼:
縱觀這些實(shí)現(xiàn)模塊化的代碼,你會(huì)發(fā)現(xiàn),每個(gè)函數(shù)的代碼行數(shù)都不多,基本保持在50行一下。
甚至有的函數(shù)代碼只有一行:

INT16U OSVersion (void){ return (OS_VERSION);}

當(dāng)然,并不是所有的模塊化代碼行數(shù)都低于50行,也有100行的,也有超過200行的,整體來說,模塊化代碼的行數(shù)相對(duì)都不多。

3多行代碼的函數(shù)

模塊化代碼的函數(shù),函數(shù)一般都會(huì)低于50行。但是實(shí)際編程中,其實(shí)也有很多函數(shù)是超過50行。
比如一些復(fù)雜算法、通信協(xié)議、應(yīng)用代碼等,這些函數(shù)都有可能超過50行。
這么說吧,像用到一些條件判斷if else,或者switch case,多幾個(gè)條件(比如25個(gè)),基本上這個(gè)函數(shù)代碼就超過50行了。
還有像有些函數(shù)代碼中,會(huì)用到很多局部變量,多定義幾個(gè)變量函數(shù)代碼行也會(huì)超過50行:

通常來說,超多行函數(shù),一般在業(yè)務(wù)邏輯應(yīng)用代碼中比較常見。
有時(shí)候,我們寫一個(gè)應(yīng)用代碼,可能不知不覺(復(fù)制粘貼)就上百行代碼了。(main函數(shù)實(shí)現(xiàn)了所有功能,是不是似存相識(shí)?)
我之前也這么干過,特意找了一下幾年前寫的代碼,上千行的一個(gè)觸摸屏處理函數(shù):

這個(gè)函數(shù)使用 if else 處理了很多觸摸按鍵信息(上百個(gè)Touch),還包含一些指令、數(shù)據(jù)解析分類,這個(gè)函數(shù)代碼行注定不會(huì)低于50行。
(當(dāng)然,這個(gè)上千行的函數(shù),肯定有優(yōu)惠的空間,減少三分之一應(yīng)該沒問題)
4最后

一個(gè)函數(shù)超過1000行代碼,理論上是可以的。但實(shí)際開發(fā)中,要盡量避免“超長(zhǎng)行函數(shù)”,盡量控制在50 ~ 80行代碼。
“超長(zhǎng)行函數(shù)”在實(shí)際開發(fā)中也常有,如果一個(gè)函數(shù)實(shí)在太多,代碼要盡量規(guī)范法,比如:代碼命名、對(duì)齊、注釋等。
所以,一個(gè)函數(shù)代碼函數(shù)有點(diǎn)多,不要懷疑自己,在“壓縮”代碼行的同時(shí),規(guī)范法代碼就OK。
 


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉