你的函数得分是多少?
AWS 安全直播!
任何傻瓜都能写出计算机能理解的代码。优秀的程序员写出的代码,人类也能理解。——马丁·福勒
函数是任何编程语言的基本组成部分,但你的函数是否简洁易读?
以下列出了优秀函数应具备的规则/特性及其评分标准。请检查您的函数是否符合这些规则并进行自我评分。
| 不 | 功能规则 | 分数 |
|---|---|---|
| 1 | 小的 | 15 |
| 2 | 做一件事 | 15 |
| 3 | 描述性名称 | 10 |
| 4 | 理想函数参数 | 10 |
| 5 | 无副作用 | 10 |
| 6 | 命令查询分隔符 | 5 |
| 7 | 干燥 | 15 |
| 8 | 块和缩进 | 10 |
| 9 | 降级规则 | 5 |
| 10 | 结构化编程 | 5 |
| 全部的 | 100 |
1.小
- 函数的第一条原则是:它们应该尽可能小。
- 函数的第二条规则是,它们应该比这个值小。
- 函数代码几乎不应该超过 15 行。
2.做一件事
- 函数应该只做一件事。它们应该把这件事做好。它们应该只做这件事。
- 判断一个函数是否执行“不止一件事”的另一种方法是,从中提取出另一个函数,该函数的名称不仅仅是对其实现的重新表述。
3.描述性名称
- 函数名称应使用动词或动词短语,例如 postPayment、deletePage。
- 不要害怕取一个长一点的名字。一个长而形象的名字比一条长而形象的评论要好。
- 选择描述性的名称可以帮助你理清模块的设计思路,并有助于改进模块。寻找一个好的名称往往会带来代码的有利重构。
4.理想函数参数
- 函数的理想参数数为零(无参数)。
- 接下来是 one(单子)。
- 紧随其后的是两个论证(二元论证)。
- 超过三个(多重)需要非常特殊的理由,而且无论如何都不应该使用。
5.无副作用
- 根据维基百科,在计算机科学中,如果一个操作、函数或表达式修改了其局部环境之外的某些状态变量值,则称该操作、函数或表达式具有副作用,也就是说,除了向操作的调用者返回一个值(主要效果)之外,还具有可观察的效果。
- 副作用都是谎言。你的函数承诺做一件事,但实际上它还会做其他一些隐藏的事情。
6.命令查询分离
- 函数要么应该执行某些操作,要么应该回答某些问题,但不能两者兼具。
- 你的函数要么应该改变对象的状态,要么应该返回关于该对象的一些信息。
- 两者兼顾往往会导致混乱。
7.不要重复自己
- 软件中的重复劳动可能是万恶之源。
- 永远不要编写两次相同的代码,要始终创建可重用的函数。
8.代码块和缩进
- 这意味着包含if语句、else语句、while语句等的代码块应该只有一行。而且这一行很可能是一个函数调用。
9.逐步降级规则
- 我们希望代码读起来像自上而下的叙述。
- 我们希望每个函数后面都跟着下一级抽象级别的函数,这样我们就可以逐级向下阅读程序,就像我们向下阅读函数列表一样。
10.结构化编程
- Dijkstra 认为,每个函数以及函数中的每个代码块都应该有一个入口和一个出口。
- 遵循这些规则意味着函数中只能有一个 return 语句,循环中不能有 break 或 continue 语句,并且永远不能有 goto 语句。
如何编写一个得分100的函数?
初稿可能笨拙且杂乱无章,所以你需要反复润色、重构和完善,直到它达到你想要的效果(满分100分)。代码也一样,不断重构直到达到满分。
请在评论区留下你的分数,如果你知道更多重要的函数规则,请使用#discuss标签进行讨论。
PS:这些规则摘自罗伯特·C·马丁的著作《代码整洁之道》 ,我强烈推荐阅读这本书,它非常棒。
这是我的“绝地之旅”系列文章之一,在这个系列中,我们通过阅读大量书籍成为绝地武士,你也欢迎加入我们。
文章来源:https://dev.to/sksaifuddin/what-s-the-score-of-your-functions-1h2k