国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    4417

    瀏覽量

    67501
  • 代碼
    +關注

    關注

    30

    文章

    4967

    瀏覽量

    73960

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    智能顯示模塊通信時有CRC數據校驗功能嗎?串口通信能不能加上數據檢驗?

    智能顯示模塊通信時有CRC數據校驗功能嗎?串口通信能不能加上數據檢驗?
    發表于 02-28 16:13

    《當 MCU 原廠的型號超過 100 ,會發生什么?》

    原廠來說,是非常危險的狀態。 超過 100 型號之后, 問題已經不再是“能不能支持”, 而是體系是否健康。
    發表于 02-27 10:04

    到底DDR走線能不能參考電源層?。?/a>

    雖然我看到過DDR的走線參考電源平面也能調試成功的案例,但是依然不妨礙我還想問:到底DDR走線能不能參考電源層???
    的頭像 發表于 11-11 17:44 ?759次閱讀
    到底DDR走線<b class='flag-5'>能不能</b>參考電源層???

    請問CS32L010F8U6能不能做單電池供電的無感無刷電機驅動

    如果可以,能不能提供例程,以及開發板原理圖。 資料請發郵箱:1095558233@qq.com
    發表于 11-07 14:10

    使用MCU200T的板子能不能做RVSTAR上的實驗例子?

    手里只有塊MCU200T的板子,看到老師做的RVSTAR上的例子,不知道能不能在MCU200T上面做
    發表于 11-05 12:55

    4g報警器能不能改成反電魚報警器

    4G報警器通過震動脫落磁鐵來感應報警能不能改成感應電流報警應用場景-魚塘水庫 江河湖泊新能源監控實時感應報警對于電路完全小白求大佬指點下需要加什么配件實現
    發表于 10-31 23:35

    用STM32H750定時器抓最高30M信息源,定時器能不能配置成100M?

    你好,我們要用 STM32H750 定時器抓最高30M 信息源,定時器能不能配置成100M?超過1M用適波器無法看到波形,不知道是哪的問題
    發表于 08-08 06:23

    六類線永久鏈路的長度不能超過多少米-科蘭

    六類線永久鏈路的長度不能超過90米,這是根據國際標準TIA/EIA-568及ISO/IEC 11801明確規定的上限值。以下為具體說明: 、標準依據與定義 永久鏈路(Permanent Link
    的頭像 發表于 07-14 10:09 ?1279次閱讀
    六類線永久鏈路的長度<b class='flag-5'>不能超過</b>多少米-科蘭

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

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

    cyw20829能不能使用紅外線解碼嗎?

    cyw20829能不能使用紅外線解碼嗎
    發表于 07-03 06:49

    GUIguider1.9.0能不能增加,將背景圖也放入外部存儲類型中?

    GUIguider1.9.0 能不能增加,將背景圖也放入外部存儲類型中,目前只能在界面上創建img,這個時候才有外部存儲的選項,按鈕的背景圖也沒看到 有 外部存儲的選項
    發表于 03-26 06:56

    STM32C031F4 FLASH存儲器讀寫例程各位高能不能提供

    STM32C031F4FLASH存儲器 讀寫例程 各位高能不能提供謝謝大家
    發表于 03-13 07:37

    請問SPC5_STUDIO能不能用stellarllink進行連接?如何連接?

    SPC5_STUDIO能不能用stellarllink進行連接?如何連接?
    發表于 03-10 08:18

    stm32f103cbu6底部焊盤能不能連接到VSS?

    stm32f103cbu6底部焊盤能不能連接到VSS
    發表于 03-10 07:51

    請問stellarlink能不能用在spc5studio?spc56和spc58系列都支持嗎?

    stellarlink能不能用在spc5studio?spc56和spc58系列都支持嗎?
    發表于 03-10 06:21