在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

一個函數(shù)究竟能不能超過50行呢?

strongerHuang ? 來源:strongerHuang ? 作者:strongerHuang ? 2021-06-11 12:46 ? 次閱讀

“一個函數(shù)的代碼盡量不要超過50行”

有些讀者可能看到過類似這樣的描述,而自己做項目時,很多函數(shù)都比較多(超過50行),就會懷疑自己這樣寫是不是不對?

那么,一個函數(shù)究竟能不能超過50行呢?今天就來討論下關于函數(shù)代碼行數(shù)相關的內(nèi)容。

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

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

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

代碼為什么要模塊化?

這個問題好比:圖書館的書籍,為什么要分類?

因為我們代碼要實現(xiàn)各種各樣的功能,代碼模塊化之后,會讓我們更方便的管理、移植,以及后期的維護。

代碼模塊化是編程中的一個重要思想,有了模塊化思維,開發(fā)項目會讓你有事半功倍的效果。

這里可以參看之前分享的文章《嵌入式開發(fā)中的兩點編程思想》。

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

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

你會發(fā)現(xiàn)很多底層驅(qū)動、中間層、應用層的代碼,其實都會用到模塊化編程。

比如底層驅(qū)動庫函數(shù):

poYBAGDC61eANFoEAACTnPPsANA612.jpg

還比如RTOS模塊化代碼:

pYYBAGDC64OAc0VkAADJbEYnZy0162.jpg

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

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

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

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

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

pYYBAGDC66SAcYFBAAEubmfKaqk606.jpg

通常來說,超多行函數(shù),一般在業(yè)務邏輯應用代碼中比較常見。

有時候,我們寫一個應用代碼,可能不知不覺(復制粘貼)就上百行代碼了。(main函數(shù)實現(xiàn)了所有功能,是不是似存相識?)

我之前也這么干過,特意找了一下幾年前寫的代碼,上千行的一個觸摸屏處理函數(shù):

poYBAGDC672AZoWBAAESFgIjdIk790.jpg

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

4、最后

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

責任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關注

    關注

    3

    文章

    4333

    瀏覽量

    62723
  • 代碼
    +關注

    關注

    30

    文章

    4797

    瀏覽量

    68710

原文標題:一個函數(shù)超過1000行,可以不?

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ADS1602與TM4C1294通信,最高數(shù)據(jù)率不能超過10Mbps,遠遠小于40Mbps,請問有何解決辦法?

    ADS1602是16位2.5M采樣率的ADC芯片,與TM4C1294采用SSI接口,就是SPI,ADC為主機,1294為從機,看了下,發(fā)現(xiàn)最高數(shù)據(jù)率不能超過10Mbps,遠遠小于40Mbps,請問有何解決辦法?還有現(xiàn)在用的是40M晶振,
    發(fā)表于 01-06 06:24

    絲桿模組為什么行程不能超過兩米?

    絲桿模組為什么行程不能超過兩米
    的頭像 發(fā)表于 12-24 17:56 ?143次閱讀
    絲桿模組為什么行程<b class='flag-5'>不能超過</b>兩米?

    C語言中的頭文件能不能重復包含

    C語言中的頭文件能不能重復包含? 比如代碼寫成這樣,stdio.h 連續(xù)包含了兩次。 #include #include int main(){ printf("helloworld
    的頭像 發(fā)表于 11-26 17:19 ?186次閱讀

    谷景科普封裝樣的磁棒電感究竟能不能通用

    谷景告訴你封裝樣的磁棒電感究竟能不能通用編輯:谷景電子磁棒電感的選型的時候,我們通常會先關注它的封裝尺寸,因為這是確保電感能夠適配電路板的關鍵因素。但是,有些人可能會誤以為只要封裝尺寸相同,任何
    發(fā)表于 11-13 22:36 ?0次下載

    體成型電感外殼破損還能不能

    電子發(fā)燒友網(wǎng)站提供《體成型電感外殼破損還能不能用.docx》資料免費下載
    發(fā)表于 10-31 10:57 ?0次下載

    LMH6601是不是跨導型,能不能做峰值保持電路

    我想做個峰值保持電路,跨導型的查到了4放大器,但是我感覺LMH6601不像是跨導型。有哪位比較懂的幫忙看下數(shù)據(jù)手冊,LMH6601是不是跨導型,能不能做峰值保持電路
    發(fā)表于 09-09 06:17

    UTB定位技術能不能精準定位

    在當今科技日新月異的時代,定位技術以其廣泛的應用場景和不斷提升的精度,成為了多個領域的核心支撐。其中,UTB定位技術以其高精度、低延遲和高抗干擾性等特點,在眾多定位技術中脫穎而出,成為精準定位領域的佼佼者。那么,UTB定位技術到底能不能精準定位?下面就給大家具體介紹
    的頭像 發(fā)表于 09-03 10:07 ?374次閱讀

    定時器回調(diào)函數(shù)能不能用ICACHE_FLASH_ATTR定義?

    非 OS SDK 在中斷處理函數(shù)中,請勿使用任何 ICACHE_FLASH_ATTR 定義的函數(shù)。 請問: 1、定時器和hw定時器的回調(diào)函數(shù)是否在中斷處理函數(shù)里面被調(diào)用。定時器回調(diào)
    發(fā)表于 07-22 06:33

    能不能增大LWIP sockets數(shù)超過16

    “sys/types.h”限制FD_SETSIZE為64。公司的項目用ESP32方案,用到了很多組播,還有服務端,配置文件限制了LWIP能使用sockets數(shù)最大為16,則分配socket號從48開始,超過63就會導致se
    發(fā)表于 06-13 07:47

    STVD中斷中不能設置超過32767的數(shù)嗎?

    也就是說在中斷里面,jiffies不能超過32767. 而在中斷外面,比如放在主函數(shù)或者任意其他非中斷,我實測是可以通過的。 此外,我也測試過使用long類型,然后把判斷清零值寫的很低,同樣的錯誤
    發(fā)表于 05-16 06:26

    電機用MCU控制,F(xiàn)OC的調(diào)制比能不能調(diào)到最大

    電機用MCU控制,F(xiàn)OC的調(diào)制比能不能調(diào)到最大
    發(fā)表于 04-22 07:59

    用STM32進行bootloader開發(fā)時,能不能將boot和app程序的hex合成為hex進行燒錄?

    大家好,請問用STM32進行bootloader開發(fā)時,能不能將boot和app程序的hex合成為hex進行燒錄?我之前分別燒錄兩hex,是可以實現(xiàn)功能的,不知道合成
    發(fā)表于 04-01 08:20

    光纖彎曲究竟能不能影響光纖傳輸

    光纖的傳輸性能受到多種因素的影響,其中彎曲是重要的因素。當光纖受到過度彎曲時,會導致光信號的傳輸受到干擾,從而影響光纖的傳輸性能。
    的頭像 發(fā)表于 03-16 14:48 ?1852次閱讀

    同VLAN不同的網(wǎng)段能不能互通?

    同VLAN不同的網(wǎng)段能不能互通? 同一個VLAN中的設備擁有相同的網(wǎng)絡地址范圍,因此它們可以通過該VLAN進行通信。而不同VLAN中的設備擁有不同的網(wǎng)絡地址范圍,它們通常不能直接互通。然而,在某些
    的頭像 發(fā)表于 02-04 11:21 ?3143次閱讀

    請問7.5變頻器能不能接兩1.5電機?

    7.5變頻器能不能接兩1.5電機??
    發(fā)表于 01-09 07:47
    主站蜘蛛池模板: 久久综合免费| 91一级片| 国产高清在线看| 四虎最新紧急入口| 波多野结衣第一页| 午夜88| 亚洲精品mv在线观看| 天天透天天操| 在线观看精品国产入口| 黄a级免费| 欧美精品videosex极品| 美女免费毛片| 欧美色p| 日本三级全黄| 特别毛片| 日本国产高清色www视频在线| 无遮挡很爽很污很黄很色的网站| 欧美日韩亚洲一区| 亚洲视频三区| 黄网站在线观看| 亚洲国产欧美精品一区二区三区 | 亚洲第七页| 欧美一级看片a免费观看| 久久99精品福利久久久| 免费高清在线视频色yeye| 91大神大战高跟丝袜美女| tube69欧美最新片| 在线视频毛片| 亚洲综合激情六月婷婷在线观看| 色视频欧美| 国模沟沟一区二区三区| 天天视频国产免费入口| 午夜啪啪免费视频| 欧美性69| 22sihu国产精品视频影视资讯| 国产精品xxxav免费视频| 午夜黄网| 综合五月婷婷| 亚洲国产成人在线| 欧美三级手机在线| chinese国产videoxx实拍|