请不要为了炫耀而写出超短代码

简介:

我常逛像 Exercism 这样的网站,在那里编写或重温一些习题来精进我的编码技巧。现在有个危险的流行正在蔓延,我注意到大家很推崇仅用短短几行的代码,认为这样很优雅、有创意,认为这超棒。

但这完全是鬼扯。Brian Kernighan 说得很对:

「想帮短代码除错比你重写代码还要难两倍。如果你真的觉得自己超会写短代码,那么就等到你帮短代码除错的时候再来看看是不是真的那么厉害吧。」

当你把编码的行数减少到令人费解时,这还会是个容易维护或可长久使用的代码吗?替编码抓错会变得更简单还是更有难度?更重要的是,如果原来的编码跟短代码功能一样,那你是不是有点浪费时间呢?

较短的编码不见得代表是更好、更清楚的编码。当你不小心做的超过了,让编码变的难解,或用了模糊且不必要的模组,你可能会得对你的同事一边装可爱,一边说:

「我浪费超多时间在完美化与複杂化这个简单模组,所以你现在才可以花超多时间来了解它。你不觉得这超棒的吗?揪咪,编码忍者敬上。」

这不但毫无意义而且很自私,而且完全只是种自负的表现。不必要而多余的代码的确不好,但短代码也不总是就是比较好。缩短编码与简化编码有很大的不同,因为缩短编码仅仅只是让编码变短。

我们用两种简单 Python 计算程式来找两个字串间的「汉明距离,又称信号距离(hamming distance)」。汉明距离是独立字元的计算中为不可或缺的角色。

  • abcde 与 abcde 之间的汉明距离为 0

  • abcde与edcba之间的汉明距离为 4

  • abc 与 abcde之间的汉明距离为 2

以下是 Exercism 上被高度推崇的编码:

短代码

这是个超棒的编码 … … 如果你的目的是写出混淆代码(code obfucation)的话。

以下是网站上很不起眼的编码:

代码

它用了超过 15 行以上的编码,汉明距离为 517,但让我来解释为什么这个比第一个范例更好的原因:

  • 伪代码与文档字符串的注解都很清楚。你可以很容易去辨读每个部分与字串的用意,所以任何语言的初级程式员都能理解。有几个「高级程式员(Pythonistas)」能第一眼就理解那个比较短的编码?

  • 每行都只执行 1 到 2 个方法(method)或操作(operation)。现在你在回头看看第一则里有多少个 sum method、a != comparison、 forloop 与神奇的 map method 在同一行里。你可以比较一下,两者之间,哪个比较容易读呢?

  • 有逻辑地帮变数命名,用「i」的代表单一字元的变量。你可以试着把第一个范例丢到一个更大型的程序中,然后试着找找看「x、y、a 或 b」。

综合以上,我们可以清楚了解到每个作者的意图:

  • 写短代码的人是为他 /她自己而写的。

  • 第二则范例的作者是为大家而写的。

我想说的是:拜托你,别当个坏蛋。

无论是前端的 HTML/CSS 或后端的 Python 与 Ruby on Rail,都请你写一个大家都可以读得懂的



本文转自 www19 51CTO博客,原文链接:http://blog.51cto.com/doujh/1843874,如需转载请自行联系原作者

相关文章
|
5月前
|
并行计算 算法 数据处理
编程之道:从代码中领悟技术与生活的哲理
【8月更文挑战第28天】在数字世界的迷宫中,每一行代码都像是宇宙中的一个星系,既独立又相互联系。本文将通过一段简单的Python代码示例,探讨如何从编程实践中汲取生活智慧。我们将看到,代码不仅仅是冷冰冰的指令序列,它也能反映出人类思维的深度和广度。正如甘地所言:“你必须成为你希望在世界上看到的改变。”在编程的世界里,我们同样可以创造并见证这种改变。
56 3
|
2月前
|
Python
探索编程之道:从代码中寻找生活的哲理
【10月更文挑战第35天】在编程的世界里,每一行代码都蕴含着深刻的意义。就像生活中的每一个选择都会影响我们的未来一样,代码中的每个决策也会塑造程序的运行结果。本文将通过一个简单的代码示例,探讨如何从编程中汲取生活的智慧,以及如何在面对技术挑战时保持初心和持续学习的态度。让我们一起走进编程的世界,发现那些隐藏在代码背后的生活哲理吧!
|
4月前
|
程序员
从代码中感悟生活的哲理
【9月更文挑战第12天】本文以编程为引子,探讨了技术背后的哲学思考。文章通过深入浅出的方式,结合生活中的小故事和简单的代码示例,引导读者理解在看似冰冷的代码背后所蕴含的热情与智慧。文章旨在启发读者,无论面对何种挑战,都应保持初心,勇于探索,不断学习,最终找到属于自己的人生方向。
|
4月前
|
Python
从代码中寻找生活的哲理
【9月更文挑战第26天】在编程的世界里,我们常常被复杂的逻辑和冗长的代码所困扰。然而,如果我们换一个角度,将编程看作是一种生活方式,那么我们就可以从中找到许多生活的哲理。本文将通过一些简单的编程示例,探讨如何从代码中寻找生活的哲理。
|
8月前
|
数据采集 大数据 Python
学Python静不下来,看了一堆资料还是很迷茫是为什么
学Python静不下来,看了一堆资料还是很迷茫是为什么
67 2
学Python静不下来,看了一堆资料还是很迷茫是为什么
|
8月前
|
算法 程序员
10年老程序员告诉大家什么时候该写什么样的代码
10年老程序员告诉大家什么时候该写什么样的代码
57 0
|
8月前
|
前端开发 JavaScript
意想不到的前端三个小妙招
意想不到的前端三个小妙招
|
8月前
|
人工智能 架构师 机器人
高薪程序员的三大窍门,你准备好了吗?
“高薪,月薪过万”已经成为人们对于程序员的刻板印象,但实际上对于二三线城市的码农来说,月薪过万似乎仍然是一个难以达到的目标。地理位置、房价以及升职加薪等问题让程序员陷入了薪资困境。作为一位程序员,若想获得自己理想的工资水平,需要具备哪些要素呢?
|
Python
一日一技:你的代码是如何被炫技毁掉的
一日一技:你的代码是如何被炫技毁掉的
117 0
那些让人眼前一黑(一亮)的代码
那些让人眼前一黑(一亮)的代码
225 0
那些让人眼前一黑(一亮)的代码