保持代码简单

2025-05-28

保持代码简单

这篇文章最初发布在我的博客上。

作为一名中级开发人员,我努力学习的最重要的一课就是保持代码简单

我正在为计划参加的训练营研究一些算法。

几周前,我在推特上发布了这个让我困惑的算法:

简洁的双线设计。不错吧?

下面我们来看一下:

function longestString(strs) {
  // is x string length greater than y string length? If so
  // return x
  // if not return y
  // add an empty string as an accumulator
  // as a callback to the reduce function
  const longest = strs.reduce((x, y) => x.length >= y.length ? x : y, '' );
  return longest;
}
Enter fullscreen mode Exit fullscreen mode

这里我尝试获取数组中最长的字符串。我以为用函数式数组方法可以轻松实现,所以我四处搜索了一下。我阅读了 MDN 中关于mapfilter和 的reduce内容来唤起我的记忆,最后选择了reduce

StackOverflow 上有人提出了类似的算法,并尝试解决。我根据这个算法调整了我的算法。

正如 Twitter 嵌入所示,我在比较时遇到了一些问题,因为我的测试没有通过。我添加了相应的操作符,一切就都正常了。

这是最干净的了。

但它可读吗

这就是导师的作用

我的一位朋友兼导师在推特上私信我,谈到了这件事以及大家在推特上提供的解决方案。他说,其中一个解决方案简直一团糟,如果他写了类似的方案,肯定会被老板痛骂一顿。

我的第一反应是嘲笑那个给我嵌套三元组的人。

但他不是在谈论这个。他在谈论我的那句巧妙的台词。嗯……

愚蠢代码的教训

我和朋友详细讨论了聪明才智以及编写供其他人阅读的代码。我在两行代码的解决方案中使用的变量没有任何上下文。我应该把它们分解成这样:

let lenX = str1.length;
let lenY = str2.length;

const longest = strs.reduce((str1, str2) => lenX >= lenY ? str1 : str2, '');
Enter fullscreen mode Exit fullscreen mode

这仍然简洁但更易读且更容易理解。

我本可以使用传统的 for 循环,但我想让自己看起来更深入,更容易上手。我想让自己看起来更聪明,但这样做会让代码难以理解,这正是中级开发人员的标志。

保持简单,愚蠢

x当我还是个新手开发时,我始终不明白为什么有人会写像或 这样的变量声明yreduce正因如此,我才不喜欢函数式编程方法:我发现的大多数示例都使用这些变量。我始终不明白x引用的是什么。作为一个对这门语言理解更深的人,我掉进了那个聪明的中级陷阱。千万别这么做。虽然这确实会让你看起来好像知道自己在做什么,但也会让代码难以阅读,而且作为 X 公司的潜在开发人员候选人,你的吸引力也会越来越小。

正如我的一位朋友曾经说过的:

保持简单吧,傻瓜


如果你喜欢这篇文章,或许你也想看看我的新闻通讯。没有垃圾邮件。50% 精彩内容,50% 精彩链接。即使这些你不喜欢也不用担心。

https://buttondown.email/tiffanywhite

文章来源:https://dev.to/tiffengineer/keeping-your-code-simple-44bd
PREV
打造世界上最快的网站以及其他错误
NEXT
使用 MySQL 数据库的 Node.js Express 登录示例