chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

代碼為什么要模塊化?

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

因?yàn)槲覀兇a要實(shí)現(xiàn)各種各樣的功能,代碼模塊化之后,會讓我們更方便的管理、移植,以及后期的維護(hù)。

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

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

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

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

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

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

poYBAGDC61eANFoEAACTnPPsANA612.jpg

還比如RTOS模塊化代碼:

pYYBAGDC64OAc0VkAADJbEYnZy0162.jpg

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

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

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

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

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

pYYBAGDC66SAcYFBAAEubmfKaqk606.jpg

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

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

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

poYBAGDC672AZoWBAAESFgIjdIk790.jpg

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

4、最后

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

責(zé)任編輯:lq6

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

    關(guān)注

    3

    文章

    4406

    瀏覽量

    66841
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4941

    瀏覽量

    73151

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    到底DDR走線能不能參考電源層???

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

    工廠設(shè)備能不能工業(yè)數(shù)采?3招教你快速判斷,省時(shí)又省錢!

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

    STM32C031F4 FLASH存儲器讀寫例程各位高能不能提供個(gè)

    STM32C031F4FLASH存儲器 讀寫例程 各位高能不能提供個(gè)謝謝大家
    發(fā)表于 03-13 07:37

    能不能用多片DP83640與交換芯片連接完成透明的時(shí)鐘功能?

    想使用DP83640完成透明時(shí)鐘的功能,不知道能不能用多片DP83640與交換芯片連接完成透明時(shí)鐘的功能?
    發(fā)表于 02-11 06:40

    DAC3162輸出是電流型的,這個(gè)能不能轉(zhuǎn)換成電壓型的,復(fù)雜嗎?

    DAC3162輸出是電流型的,這個(gè)能不能轉(zhuǎn)換成電壓型的,復(fù)雜嗎?或者幫我重新選型下,參數(shù):工作速率300MHz,采樣帶寬大于30MHz,量化12bit,輸出的頻率15MHz+-5MHz,內(nèi)部有放大器,輸出功率0+-2dBm,即0.83mW至1.6mW,帶外抑制大于
    發(fā)表于 02-11 06:36

    ADS8568能不能使用單電源供電?

    ADS8568能不能使用單電源供電,即HVSS接地,HVDD接+12V,能正常工作嗎?我現(xiàn)在用的硬件模式,采不到數(shù)據(jù)。。
    發(fā)表于 01-17 06:14

    DSP能不能讀取到AD的CH A1通道采樣數(shù)據(jù)?

    如果我只用ADS7864的個(gè)通道輸入(CH A0),HOLAB和HOLDC固定為高電平,那么引腳A2、A1、A0是不是都要接低電平?這樣CH A0通道會進(jìn)行采樣,那么CH A1會不會采樣?DSP
    發(fā)表于 01-15 07:21

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

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

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

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

    請問ads1271能不能測量負(fù)電壓?

    1.請問ads1271能不能測量負(fù)電壓,現(xiàn)在的電路ainn接的是地,ainp接的被測量模擬量,當(dāng)ainp為正的時(shí)候數(shù)值正確,當(dāng)ainp為負(fù)值時(shí)數(shù)值接近于0. 2.手冊里的data rate
    發(fā)表于 01-01 08:09

    ADS1299eegfe能不能進(jìn)行實(shí)時(shí)采集 ?

    的方式實(shí)時(shí)采集顯示的? 現(xiàn)在想要采集到完整的腦電信號,所以特別想知道能不能進(jìn)行實(shí)時(shí)采集 會不會兩次刷新之間丟數(shù)據(jù)。還是說現(xiàn)在屏幕上顯示的波形已經(jīng)是實(shí)時(shí)的結(jié)果了?
    發(fā)表于 12-27 08:33

    采集4個(gè)通道,ADS131E08能不能達(dá)到24位64KSPS?

    64KSPS, 帖子說的我沒有在芯片手冊上找到,這是帖子的鏈接地址:www.deyisupport.com/.../12483.aspx 我有2個(gè)疑問: 第,我采集4個(gè)通道,不知道ADS131E08
    發(fā)表于 12-26 07:10

    輸入信號是1VPP的單端信號,能不能直接接入ADS5294?

    最近項(xiàng)目要用到ADS5294,手冊上說需要提供差分輸入信號 而我現(xiàn)在的輸入信號是1VPP的單端信號,能不能直接接入ADS5294。 還是需要通過差分運(yùn)放轉(zhuǎn)換下,如果定需要轉(zhuǎn)換的話,能不
    發(fā)表于 12-26 06:17

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

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

    ADS1292R導(dǎo)聯(lián)能不能共用?

    現(xiàn)在已經(jīng)實(shí)現(xiàn)了ADS1298測量8通道心電型號,要加上呼氣阻抗的測量功能,要求這兩種同時(shí)測量,所以打算再用片ADS1292R完成呼吸測量,這樣的話有些導(dǎo)連需要共用,問題是:導(dǎo)聯(lián)能不能共用?如果
    發(fā)表于 12-12 08:36