为什么我更喜欢简洁代码而不是‘Smart’代码
Source: Dev.to
为什么简单代码很重要
当我开始学习编程时,我以为好代码就意味着聪明的代码——短变量名、一行代码完成很多事、把逻辑压缩到尽可能少的行数。它看起来很炫,也让人觉得很厉害。
但随着时间的推移,我变得非常清楚:我最快能理解的代码从来不是“聪明”的代码,而总是简单的代码。这改变了我对写代码的看法。
“聪明”代码通常指什么
当人们说“聪明”代码时,通常指以下这些:
- 极度紧凑的逻辑
- 巧妙的技巧和捷径
- 用更少的行数完成更多功能
- 让你惊呼“等等,这到底是怎么回事?”的代码
我并不是说巧妙的代码总是坏的——有时它确实有意义。但这种“聪明”的代码往往难以阅读,尤其是当它是别人写的时。
代码不是只读一次
你不会写完代码就把它忘在一边。你会回头去看它:需要修复某个问题、添加新功能,或者完全忘记了某个函数是怎么工作的。当代码简单时,这一切都会变得容易得多。简单的代码像在讲故事;你不必每隔几行就停下来解码发生了什么。说实话,当我打开一个一个月前写的东西时,我只想在不自怨自艾的情况下快速理解它。
我代码中的真实例子
好,聊点实际的。我在计算购物车总额时写了下面这段代码:
# My "clever" version
total = sum([item['price'] * item['qty'] for item in cart if item['available']])
一行代码。运行完美。感觉很高效。我盯着它看了好几分钟,心想:“这能用……但如果要改动它而不破坏别的地方该怎么办?”
于是我重写了它:
# Simple version
total = 0
for item in cart:
if item['available']:
total += item['price'] * item['qty']
行数多了,但我至少能理解它。没有任何隐藏的东西,所以当我需要修改时也不担心会把一切都弄坏。
调试简单代码不会让我想放弃
当出现错误时,我不想去理清那层层嵌套的巧妙逻辑。我只想看看哪里出了问题、哪个值被改变、或者哪个条件失败。使用简单代码时,问题通常会直接跳出来。使用“聪明”代码时,一切都被压得太紧,甚至找一个小 bug 都要花很长时间。作为一个仍在学习的人,这点很重要——调试本来已经够难的了,代码不应该再给你添堵。
简单不等于凌乱
简单代码并不意味着:
- 糟糕的代码
- 可以更好但重复的代码
- 完全没有结构
简单代码只是指清晰、可读、易于理解的代码。我在网上看到的一些最佳代码就是简单的——不是因为作者写不出更花哨的东西,而是因为他们更在乎清晰度而不是炫技。
清晰胜于巧妙
我并不是反对巧妙的代码;我只是说没人能读懂的巧妙代码并不能帮助我提升。现在,我想要的代码是:
- 我可以不眯眼就读懂
- 我可以在不哭的情况下调试
- 如果有人问,我真的能解释清楚
也许有一天我会写更高级的东西,但即便如此,我也希望不要为了显得聪明而牺牲了清晰。代码不仅仅是让它能运行,更重要的是让它易于理解。对我而言,简单代码在这方面做得更好。
你在编码时是怎么处理这个问题的?好奇你的做法是什么。