当前位置:网站首页>一个函数中写多少行代码比较合适呢? 代码整洁之道
一个函数中写多少行代码比较合适呢? 代码整洁之道
2022-07-25 19:03:00 【Undefind_object】
ava中函数又叫方法,2者是一样的,下面来聊一聊,一个函数中写多少行代码比较合适?
从可读性和可维护性上讲,代码越精练越好
一个函数中写多少行代码比较合适,其实没有强制规定,合理即可,不可一概而论(有人说一个函数不要超过15行,有人说一个函数不要超过50行,有人说一个函数不要超过200行,我觉得其实都可以,没有谁对谁错的问题,只有是否合理恰当)
一个函数中的行数不要写的太多,行数太多会增加复杂程度和增加阅读难度和增加维护难度。
我个人认为一个函数中的代码最好不要超过30行,当然啦,26行,37行其实也是可以的,我说的30行只是一个大概范围的行数,代码行数不是绝对的,大家要懂得弹性、灵活的变通,不要那么死板和墨守成规。
一个函数不要超过30行,30行左右也是可以的,比如你的一个函数写了28行和35、36行都是可以的,总之一个函数不要写的太长,如果你的一个函数写了50多、60多行,甚至70多、80多行,此时你就要考虑将此函数拆解成多个函数,因为拆解后会比较清晰明了,比较好阅读和比较好维护。
有些企业,一个函数不超过15行代码。网上看到某些文章说,微软的要求是,一个函数里不要超过15行代码!
编写程序代码时候,给大家建议几个编程小原则
1.写代码,写函数名,写变量名等等的时候,要见名知意,名字不怕太长,就怕名字晦涩难懂。
2.建议大家写的代码要做到通俗易懂,让自己和别人在阅读你的代码的时候行云流水(当然啦,这不是一蹴而就的事情,需要大家慢慢的磨练)。
3.代码的注释风格、命名风格、书写风格、命名规范等等一定要统一口径,不要搞个性化(比如:故意给变量或者路径取个中文名或$美元符号,你这不是没事找事嘛!),谁搞个性化,代码越容易出错(编程领域别搞个性化)
4.一个函数中不要写太多嵌套循环,一般上限就写2层循环,如果你写3层甚至4层循环,代码会很难阅读,也很难维护,如果一个函数中,嵌套循环很多的话(超过2层循环),那就把该函数拆解一下吧。
5.总之,一个函数做一件事,所以函数要保持精简、精练、简练、简洁、通俗易懂、雅俗共赏,但是不要矫枉过正,吹毛求疵!
6.一个函数中的代码行数越多时,该函数的复杂程度就会上升,函数中的代码行数越少时,该函数的复杂程度就会下降。
我曾经听过一个小故事,话说有个小伙伴在维护以前别人留下来的代码的时候,打开那个函数一看,他瞬间醉了,那函数中居然有1000行以上的代码,瞬间有种生不如死,生无可恋的感觉,恨不得马上辞职走人。
这就解释了为什么长函数在分解/拆解之后,可维护性会大幅度提高。
最后希望大家在程序编程方面都保持一颗强烈的好奇心,这样你才会进步!
另外给大家提几个小建议:
1.熟练使用IDE(开发工具)
2.熟练掌握数据库(oracle、mysql)
3.对操作系统有一定的了解
4.熟悉网络协议TCP/IP
5.对程序编程有一颗强烈的好奇心
6.熟悉软件开发的流程
7.适当的了解一些网络和硬件的知识
以下是网上的一些网友的观点:
网友A:一个函数的最优行数限定在50-80行之间,这样对于开发者以后的维护来说,简洁的代码更容易进行修改和维护。一个类的行数应该是没有限定的。
网友B:函数中的代码行数,这个没有限定,但是一般的开发建议,一个函数不要超过50行,太多行数可读性很差。但是一个类里面放多少个函数,多少行没关系,因为现在的开发工具如eclipse,可以快速定位到某个函数体。在一些大型的应用里面,一个类膨胀到几千行是正常的。所以个人建议是,将单独的方法保持在50行以内。整个类,该多少行就多少行。
除了聊函数中的代码行数外,我们顺便聊一聊类中写多少行代码比较合适?
理论上类中有多少行代码其实都可以。
理论上类中有多少个函数,有多少个变量其实都可以。
理论是理论,现实没有理论那么完美,有时候不得不折中。
规定是死的,人是活的,规定也是人定的,能定也能破,也能改,要根据实际情况灵活变通!
加载类是需要花时间的,所以我个人建议,一个类中的行数别写太多,当然啦,有些类里面的东西确实比较多,写了几千行也是很正常的,一般情况下,我建议,我们自己写的类,尤其是经常使用的类,行数不要太多,除非你确实需要写很多。
最后小建议:编写程序,写类,写变量,写函数最好做到:
1.注释清楚
2.间隔整齐
3.可读性高
4.可维护性好
5.可扩展性好边栏推荐
- Go代码检查工具
- 接口自动化测试平台FasterRunner系列(四)- 持续集成、解决多域名
- The difference between QT exec and show
- 有孚网络受邀参加2022全国CIO大会并荣获“CIO信赖品牌”称号
- 【开源工程】STM32C8T6+ADC信号采集+OLED波形显示
- Hough transform understanding [easy to understand]
- 蓝牙协议详解(蓝牙是什么)
- The understanding of domain adaptation in transfer learning and the introduction of three technologies
- 「跨链互连智能合约」解读
- 接口自动化测试平台FasterRunner系列(三)- 操作示例
猜你喜欢

阿里云技术专家秦隆:可靠性保障必备——云上如何进行混沌工程?

从目标检测到图像分割简要发展史

SQL 实现 Excel 的10个常用功能,附面试原题

Ultimate doll 2.0 | cloud native delivery package

【919. 完全二叉树插入器】

Real estate enterprises have launched a "war of guarantee"

Full scale and Xuan of C key

Huawei switch system software upgrade and security vulnerability repair tutorial

进程间的通信(管道通信)

What is hpapaas platform?
随机推荐
Alibaba cloud technology expert haochendong: cloud observability - problem discovery and positioning practice
PHP 中的跨站请求伪造
The difference between QT exec and show
SQL Server 2019 installation tutorial
qt之编译成功但程序无法运行
JS 基本类型 引用类型 深/浅克隆复制
阿里云技术专家邓青琳:云上跨可用区容灾和异地多活最佳实践
Share six practical applet plug-ins
无惧高温暴雨,有孚网络如何保您无忧?
Everyone can participate in the official launch of open source activities. We sincerely invite you to experience!
The degree of interval of basic music theory
Microsoft azure and Analysys jointly released the report "Enterprise Cloud native platform driven digital transformation"
21 days proficient in typescript-4 - type inference and semantic check
A brief history from object detection to image segmentation
【919. 完全二叉树插入器】
有孚原力超算,为客户提供定制化高性能计算服务
接口自动化测试平台FasterRunner系列(一)- 简介、安装部署、启动服务、访问地址、配置补充
HTTP cache tongtianpian, there may be something you want
【Web技术】1391- 页面可视化搭建工具前生今世
【iniparser】项目配置工具iniparser的简单使用