小程序免费推广平台,网站关键词排名优化应该怎么做,腾讯企业邮箱登录登录入口,iis为网站子目录绑定二级域名什么是一个好的函数或者叫方法#xff0c;只要能让函数明确的表达其意图#xff0c;让读者能够一眼看出是一个怎样的函数#xff0c;其接收什么参数#xff0c;返回什么结果#xff0c;做了什么事情。能做到这#xff0c;大概就能算作一个好的函数了#xff0c;看上去很…什么是一个好的函数或者叫方法只要能让函数明确的表达其意图让读者能够一眼看出是一个怎样的函数其接收什么参数返回什么结果做了什么事情。能做到这大概就能算作一个好的函数了看上去很简单。那么问题来了如果做到这点呢
1. 短小
想象一下一个击败航的复杂函数和一个只有十几行的函数哪一个能够让人一眼看出其意图并理解其行为呢显然是后者。当然现在大多数语言完全可以将几百行代码写到一行那样毫无格式的代码只会让人难以理解。
2.代码块和缩进
对于if、else等语句来说其中包含的代码块最好只有一行而这一行应该是一个函数调用语句让读者可以一看看出其意图
3.函数名
一个好的函数名十分重要如何定义一个好的函数名呢只可意会。如果一个函数你仅看函数名就能明白他是做了什么返回什么那它就是一个好的函数名了。
4.只做一件事
函数应该只做一件事并且做好这一件事足矣。这个大家都承认吧并且已经是一个共识了但是说起来容易做起来却并没有那么简单。那么如何确保函数只做一件事呢我们可以尝试这在函数中再拆出一个函数来当然拆出的函数不能仅仅是将代码搬过去它应该有自己的责任能够对新的函数起一个好的函数名。如果不能再拆出这样的函数那么他应该可以了。
5. 函数参数
最理想的参数数量是0其次递增3个参数就已经很多了。
就函数测试而言没有参数的函数测试简直小菜一碟若有了一个参数就需要测试很多种组合之后每多一个参数测试的组合数量都是指数级增长。
就调用者而言没有参数的函数直接调用即可而有了参数就需要理解每一个参数是什么也增加了调用者的时间。
如果函数的参数中存在布尔值不好意思并不推荐这样做因为它明确的告诉调用者如果为true就会这样做如果为false就会那样做。更好的做法是其拆分成两个函数。
同时如果一个函数需要三个以上的参数就可以考虑将其中的一些参数封装成类了。比如描绘笛卡尔坐标的x、y。
6.无副作用
副作用是函数的一个谎言函数名承诺只做这一件事但是他偷偷的做了其他事情。
比如一个checkOrderStatus函数明显它是在检查订单状态但是如果它在检查的同时对状态进行了修改就会让人很困惑甚至在排查错误的时候看到这样一个函数都不会点进去看。更好的做法是将其拆成两个函数。
7. 每个函数一个抽象层级
说起来很简单我们在阅读代码时往往采用自顶向下的顺序来看如果每个函数都只处理自己所在层级的逻辑阅读和维护就很舒服了。
这个虽然我觉得很有道理但是我没看懂啊。
。。。等等 那么问题来了如何写出符合这样规范的代码呢
其实没有必要再一开始写的时候就按照规则来写那样很容易打乱思路甚至事倍功半。完全可以在写完后在返回来认真打磨、拆解函数、修改名称、消除重复代码等