发布于 2026-01-06 8 阅读
0

您的函数得分是多少?AWS 安全直播!

你的函数得分是多少?

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://github.com/sksaifuddin/jedi-journey

文章来源:https://dev.to/sksaifuddin/what-s-the-score-of-your-functions-1h2k