美文网首页互联网科技让前端飞
神级 Coder 绝不犯的错误:为炫耀编出超短码

神级 Coder 绝不犯的错误:为炫耀编出超短码

作者: 560b7bb7b879 | 来源:发表于2019-01-20 22:08 被阅读2次

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

我想说的是:拜託你,别当个笨蛋。

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

自己是一个五年的前端工程师

这里推荐一下我的前端学习交流群:731771211,里面都是学习前端的从最基础的HTML+CSS+JS【炫酷特效,游戏,插件封装,设计模式】到移动端HTML5的项目实战的学习资料都有整理,送给每一位前端小伙伴。2019最新技术,与企业需求同步。好友都在里面交流

点击:加入

相关文章

  • 神级 Coder 绝不犯的错误:为炫耀编出超短码

    我常逛像是 Exercism等网站,我在那里编写或重温一些习题来精进我的编码技巧。现在有个危险的流行正在蔓延,我注...

  • 不犯错误的是神

    人的一生是错误不断的一生,错误的造化形影不离地伴随着我们每一个人和每走的一步路。不要奢望一生不犯错误,因为...

  • 今天,你清单了吗?

    本文为秋叶写作特训营第21次作业,有关清单式写作。 大叔的一句话让我印象深刻,高手不是不犯错误是不犯低级错误。高手...

  • 接口错误状态码对照表

    错误状态码表 错误状态码为5位整型数值。所有整万的值保留。 扩展状态码为英文状态码,参考阿里的错误码,大部分切换到...

  • 爱因斯坦告诉我们一件事情,如何不犯错误?

    说起不犯错误,是我们从小都想做到的。因为在家中不犯错误,不会挨家长的骂;在学校不犯错误,不会挨老师的批评。在朋友中...

  • 宽容

    人非圣贤,敦能无过。人之所以为人,正是因为人不完美,总会犯错;不犯错的不是人,是神。当然我们不是神啦,所以错误...

  • GC4S16E51🐙 CPHB

    码农私人史 (Chinese/Coder Private Hacking/History Book) v17.5....

  • 失误

    不论是谁,都难免有失误。聪明,不是不犯错误,而是同样的错误不犯两次。 这样,会使我们少犯错误,更加睿智。 ...

  • 关于 “阿骨打金”

    一个会打篮球还会点游泳偶尔爬爬山经常玩电脑的coder 看书码代码哼小曲逗佩瑶 听听歌神的歌,民谣也不错 gith...

  • 《论语别裁》94(子罕)|毌意毌必毌固毌我

    子绝四:毌意,毌必,毌固,毌我。 孔子有四个绝学,不以主观意识妄断客观现实,不犯绝对主义错误凡事辩...

网友评论

    本文标题:神级 Coder 绝不犯的错误:为炫耀编出超短码

    本文链接:https://www.haomeiwen.com/subject/jvbfjqtx.html