91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

一個函數究竟能不能超過50行呢?

strongerHuang ? 來源:strongerHuang ? 作者:strongerHuang ? 2021-06-11 12:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

1、關于代碼行數多少的問題

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

2、模塊化代碼行數少

代碼為什么要模塊化?

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

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

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

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

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

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

你會發現很多底層驅動、中間層、應用層的代碼,其實都會用到模塊化編程。

比如底層驅動庫函數:

poYBAGDC61eANFoEAACTnPPsANA612.jpg

還比如RTOS模塊化代碼:

pYYBAGDC64OAc0VkAADJbEYnZy0162.jpg

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

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

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

3、多行代碼的函數

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

pYYBAGDC66SAcYFBAAEubmfKaqk606.jpg

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

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

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

poYBAGDC672AZoWBAAESFgIjdIk790.jpg

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

4、最后

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

責任編輯:lq6

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

    關注

    3

    文章

    4380

    瀏覽量

    64853
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

    70724

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    工廠設備能不能工業數采?3招教你快速判斷,省時又省錢!

    設備能不能采?記住這五招:看接口、問協議、查燈亮、找廠家、加傳感器。大部分現代工廠設備(PLC/CNC/注塑機),甚至部分干燥機、模溫機,都是能采的!別被“老設備”嚇住。
    的頭像 發表于 07-03 10:09 ?136次閱讀
    工廠設備<b class='flag-5'>能不能</b>工業數采?3招教你快速判斷,省時又省錢!

    ADCPro工具下發到MMB0板子上的TMS320固件的源碼,能不能獲取到

    1、想對AdcPro工具做些修改,以方便自己使用,不知道能不能獲取到這個軟件源碼? 2、ADCPro工具下發到 MMB0板子上的TMS320(我的是ADS1259EVM-PDK)固件的源碼,能不能
    發表于 01-15 06:52

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

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

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

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

    C語言中申請的堆內存能不能自動釋放

    C語言中申請的堆內存能不能自動釋放?每次都要手動 free 太麻煩,也容易忘記。 學過 C++ 的同學,應該首先能想到智能指針。 但是這是C語言,沒有類和對象、構造析構這些技術,想要自動釋放很難
    的頭像 發表于 11-27 09:33 ?518次閱讀

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

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

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

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

    使用C語言實現函數模板

      用C語言能不能實現通用的函數,既能完成整數的相加,又能完成浮點數的相加?
    的頭像 發表于 11-09 11:38 ?946次閱讀

    TAS5717的MCLK如果是12.288MHZ,這個頻率的上下誤差最大不能超過多少

    TAS5717的MCLK如果是12.288MHZ,這個頻率的上下誤差最大不能超過多少?
    發表于 11-05 08:23

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

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

    文看懂感值相同封裝不同的電感能不能替換使用

    文看懂感值相同封裝不同的電感能不能替換使用 gujing 編輯:谷景電子 電感作為電子電路中常用的種被動電子元器件,它的主要作用就是儲存能量于磁場中,并且對交流電信號產生阻礙作用。感值作為衡量
    的頭像 發表于 10-17 20:59 ?1065次閱讀

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

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

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

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

    能不能推薦能在12V單電源供電電壓的軌對軌的運算放大器?

    能不能推薦能在12V單電源供電電壓的軌對軌的運算放大器
    發表于 08-29 08:15

    定時器回調函數能不能用ICACHE_FLASH_ATTR定義?

    非 OS SDK 在中斷處理函數中,請勿使用任何 ICACHE_FLASH_ATTR 定義的函數。 請問: 1、定時器和hw定時器的回調函數是否在中斷處理函數里面被調用。定時器回調
    發表于 07-22 06:33
    主站蜘蛛池模板: 不卡一区二区在线观看 | 午夜久久精品 | 国产精品网址你懂的 | 色婷婷一区二区三区四区成人 | 久久精品国产亚洲综合色 | 色色网视频| 在线观看免费xx高清视频 | 欧美一卡2卡三卡四卡五卡 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 五月桃花网婷婷亚洲综合 | 看亚洲a级一级毛片 | 日本69sex护士hd | 男女互插小说 | 奇米影视四色首页手机在线 | 99热热热| 国产精品欧美一区二区三区 | 中国一级特黄视频 | www.色婷婷| 91啦中文在线观看 | 手机在线完整视频免费观看 | 看片国产 | 四虎影院免费视频 | 天天操人人爱 | 成人欧美一区二区三区小说 | 亚洲激情网站 | 亚洲精品网站日本xxxxxxx | 久青草国产手机在线观 | 特黄aaaaaa久久片 | 天天摸天天添人人澡 | 中文字幕一区二区三区四区五区 | 狠狠做久久深爱婷婷97动漫 | 99精品国产在热久久 | 97理论三级九七午夜在线观看 | 一本大道一卡二卡四卡 | 日本特级黄色录像 | 精品国产高清在线看国产 | 手机毛片在线 | 日本在线视频精品 | 高清精品女厕在线观看 | 日本不卡视频 | 精品一区二区在线观看 | 99热久久国产精品 |