博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优美的函数
阅读量:5020 次
发布时间:2019-06-12

本文共 1455 字,大约阅读时间需要 4 分钟。

1.短小

      有时候我们会不知不觉就写了一段很长的代码,写的时候很清晰,等过了一段时间后,就会晕头转向。原因就是我们的函数在一个地方做了太多的事。我们应该尽量控制我们函数的行数和列数。一般来说,一个函数中的if,else,for,while等语句应该只包含一行代码,相当于将内容包装为一个函数,再调用这个函数。尽量保证函数的缩进层级不多于一层或两层。这样能使代码易于理解。

2.函数只需要做好一件事

这个理念我们应该都懂,但是有时候很难判断是不是做了一件事。一般来说我们可以通过看一个函数中是否还能拆分出一个函数,并且该函数不是单纯地重新诠释其实现。函数重新诠释就是指我们

定义一个函数去包含原来函数的一些步骤,直接调用新的函数就行。

3.每个函数一个抽象层级

具体说来就是,每个函数执行的任务的抽象层级是相同的。比如,我们上班时刻去医院看病。主线任务是请假->坐车到医院->找医生看病。请假包含向leader申请,同意后写请假条,不同意就改天。

坐车到医院,包含查看地图路线,选择交通工具,如果坐公交就选择坐哪几路,如果自驾就要考虑堵车情况和到了之后的停车位。找医生看病,包含挂号,排队等待,看病,等结果。这里面就包含了很多层次。

4.函数命名要有描述性,不怕长,绝对不能短到无法理解

 

5.函数参数不要多

最好一个参数,最多两个参数。参数多了,自己使用起来不好理解,容易导致混乱;同时对于测试也是麻烦,多个参数对于测试来说是噩梦,需要遍历所有可能的参数情况。

  • 一个参数:单个参数,我们一般可能使用该参数做判断;或者对该参数做操作,然后将转换结果返回。
  • 两、三个参数:两个、三个参数肯定没有一个参数清晰。在使用过程中,我们会遇到很多问题。两个参数的位置容易搞混;两个参数可能没有任何联系,对于参数理解有点困难。处理这个问题有很多方法,一是将多个参数构造为一个对象,这样我们每次只用传递一个对象,减少了参数个数;二是,将两个参数中的一个定义为成员变量,这样我们就可以直接使用,或者将方法定义在参数对象
    的类中;三是,使用变长参数列表。
  • 函数名称中也可以掺入参数的名字,这样更好的理解函数的意图。例如:isAEqualsB(a, b)

6.函数中要分割指令和询问语句

例如:不要出现又判断又设置的操作。set(A,B)本来是设置A为B,如果里面加入了if判断A是否为空,这个方法就不纯洁了,需要将这两个操作分开。

7.函数处理错误要注意要使用异常,不使用错误码

使用错误码的确定是,我们必须在主代码中处理错误码,如果抛出异常,我们可以使用try/catch包裹主代码,处理异常,同时try/catch应该保证纯洁,不要包含太多的代码。

8.函数避免重复

重复是导致很多问题的根源,要学会整合抽象,提取相同部分,这样不仅使得代码不再臃肿,而且会利于后期的维护。

 

如何写好的函数?

谁都不是神,也没有达到下手就能按规范写出好代码的要求。如何写出好函数呢?

1. 首先,要把功能实现,确保功能正确无误;

2. 之后,审查命名是否符合规范;

3. 再看函数入参是否符合规范,是否需要构造对象,修改结构;

4. 再看函数是否是否只做了一件事,如果函数做了很多事就需要分解函数,重新诠释函数;

5. 然后看函数中是否有和其他函数一样的步骤,如果有就可以抽取相同部分,消除重复。

6. 最后打磨完后,在严密测试,确保优化后函数功能正常。

转载于:https://www.cnblogs.com/glsy/p/8399376.html

你可能感兴趣的文章
css3 标签 background-size
查看>>
python itertools
查看>>
Linux内核调试技术——jprobe使用与实现
查看>>
样式、格式布局
查看>>
ubuntu设计文件权限
查看>>
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
bootstrap
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>
无谓的通宵加班之后的思索
查看>>
S1的小成果:MyKTV系统
查看>>