一个函数超过1000行,可以不?

李肖遥

共 1668字,需浏览 4分钟

 · 2021-06-23

关注、星标公众号,直达精彩内容

作者 | 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。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推荐阅读:


嵌入式编程专辑
Linux 学习专辑
C/C++编程专辑
Qt进阶学习专辑

关注我的微信公众号,回复“加群”按规则加入技术交流群。


点击“阅读原文”查看更多分享。

浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报