当前位置:首页 > 公众号精选 > 技术让梦想更伟大
[导读]“一个函数的代码尽量不要超过50行”

作者 | strongerHuang
微信公众号 | 嵌入式专栏
“一个函数的代码尽量不要超过50行”
有些读者可能看到过类似这样的描述,而自己做项目,很多函数都比较多(超过50行),就会怀疑自己这样写是不是不对。
那么,一个函数究竟能不能超过50行呢?今天就来讨论下关于函数代码行数相关的内容。

1关于代码行数多少的问题

一个函数多少行代码合适? 超过1000行的代码有什么问题?
在编程的各种规范中,对函数代码行没有强制要求必须低于**行才行。
你一个项目所有函数都低于50行代码,是可以的。反过来,你一个函数超过一万行代码(只有main函数),如果代码没问题,也能编译通过,也是可以照常工作。
我们平时看到的“一个函数的代码尽量不要超过50行”,它其实是相对代码结构化、模块化而言的,有很多情况,代码也会超过50行,甚至上千行。

2模块化代码行数少

代码为什么要模块化?
这个问题好比:图书馆的书籍,为什么要分类?
因为我们代码要实现各种各样的功能,代码模块化之后,会让我们更方便的管理、移植,以及后期的维护。
代码模块化是编程中的一个重要思想,有了模块化思维,开发项目会让你有事半功倍的效果。
这里可以参看之前分享的文章《嵌入式开发中的两点编程思想》。

说回来,为什么模块化代码行数少?

代码模块化,就是把要实现的细小功能模块,用一个函数封装起来,也就牵涉到本文说的函数代码行数少的问题。

你会发现很多底层驱动、中间层、应用层的代码,其实都会用到模块化编程。
比如底层驱动库函数:



还比如RTOS模块化代码:
纵观这些实现模块化的代码,你会发现,每个函数的代码行数都不多,基本保持在50行一下。
甚至有的函数代码只有一行:

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

当然,并不是所有的模块化代码行数都低于50行,也有100行的,也有超过200行的,整体来说,模块化代码的行数相对都不多。

3多行代码的函数

模块化代码的函数,函数一般都会低于50行。但是实际编程中,其实也有很多函数是超过50行。
比如一些复杂算法、通信协议、应用代码等,这些函数都有可能超过50行。
这么说吧,像用到一些条件判断if else,或者switch case,多几个条件(比如25个),基本上这个函数代码就超过50行了。
还有像有些函数代码中,会用到很多局部变量,多定义几个变量函数代码行也会超过50行:

通常来说,超多行函数,一般在业务逻辑应用代码中比较常见。
有时候,我们写一个应用代码,可能不知不觉(复制粘贴)就上百行代码了。(main函数实现了所有功能,是不是似存相识?)
我之前也这么干过,特意找了一下几年前写的代码,上千行的一个触摸屏处理函数:

这个函数使用 if else 处理了很多触摸按键信息(上百个Touch),还包含一些指令、数据解析分类,这个函数代码行注定不会低于50行。
(当然,这个上千行的函数,肯定有优惠的空间,减少三分之一应该没问题)
4最后

一个函数超过1000行代码,理论上是可以的。但实际开发中,要尽量避免“超长行函数”,尽量控制在50 ~ 80行代码。
“超长行函数”在实际开发中也常有,如果一个函数实在太多,代码要尽量规范法,比如:代码命名、对齐、注释等。
所以,一个函数代码函数有点多,不要怀疑自己,在“压缩”代码行的同时,规范法代码就OK。
 


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭