体会代码之美

今天继续跟大家聊有关代码的文章,上一篇文章 编程的乐趣 中我给大家讲了我在学习编程过程中的几点小心得,今天再给大家分享其他几点,在《 python工匠 》一书中作者朱雷有如下一段话:

好代码就像好文章,语言精练、层次分明,让人读了还想读;而烂代码则像糊成一团的意大利面条,处处充斥着相似的逻辑,模块间的关系错综复杂,多看一眼都令人觉得眼睛会受伤。

当我在亲身实践的时候越发理解了作者此言的意义,那些糟糕的代码不光像其所说的意大利面条,更像懒女人的裹脚布一样又臭又长,让人兴致全无。前几天我在看书的时候看到一个有趣的算法实现,受到灵感的启发在凌晨的时候做了如下的速记,然后就将这道题目分享给了身边的几位小伙伴,希望大家每人完成后把代码发给我查阅,如果恰好你也是python爱好者不妨做一下试试(文章末尾有我的代码分享)

瑞瑞 2022-10-01 08:00:01
静静 2022-10-01 08:00:01

珊珊 2022-10-01 08:00:01

丹丹 2022-10-01 08:00:01

静静 2022-10-02 08:00:01

珊珊 2022-10-02 08:00:01

丹丹 2022-10-02 08:00:01

丹丹 2022-10-02 18:00:01

珊珊 2022-10-03 18:00:01

静静 2022-10-03 08:00:01

珊珊 2022-10-03 08:00:01

丹丹 2022-10-03 08:00:01

丹丹 2022-10-03 18:00:01

珊珊 2022-10-04 18:00:01

静静 2022-10-04 08:00:01

珊珊 2022-10-04 08:00:01

珊珊 2022-10-04 18:00:01

当我收上来各位同学的作业之后产生了不少的想法(也就是这一篇文章的由来),正所谓没有对比就没有伤害,虽然大家最终都实现了同样的效果,但是实现的方式却千差万别,大家普遍都存在一个共同的问题——代码不够优美简洁。有些同学是多重嵌套与循环的结合。少则两层甚至有三层和四层。在python当中有一句:扁平优于嵌套,之所以会有这个原则是因为我们的大脑在思考的时候,如果是多层嵌套架构很容易陷入进去,从而显得条理不够清楚,而如果是扁平结构那么大脑的思维能耗是更少的,这也就是文章开发所提倡的结构清晰、层次简单、表达优美。
其中有一位同学是用 Pandas这个模块来实现的,这一点倒是让我有一点小惊喜,因为我在实现的时候是使用系统原生的模块来实现的,并非不能用这种高阶的模块,而是要适度。我给大家的建议是对于这种初级的不太复杂的需求来说用预制模块实现就可以了,杀鸡可以不用牛刀(因为牛刀有更需要它的地方,如高阶的数据分析)。
第三点建议:在这个过程中明显发现我们几个同学对于python基础理解是不够深入的。比如说在我这道题目当中明显提到了一个内容关于重复数据的处理,而python当中集合有一个非常大的特性就是去重,所以我们要充分利用它的这个特性(当然利用字典键不重复这个特性实现也是可以的)。
生成式在python中是一个非常精美的特性,每一个学习者都值得好好花一些时间去学习玩味,当你体会了它的优美之处之后再让你写代码,你再不会再回到原来的状态,我是切实体会到了一用就回不去了的状态。

为知笔记CEO 李峻曾说过如下一段话:“我玩越野跑,跑过环勃朗峰越野跑(UTMB)、环富士山越野跑(UTMF)挑战赛,深知全世界的人仅凭意志力和坚持,绝无可能完成那种极限挑战。只有完全换另一种思维方式,才能心情愉悦地、安全地达成目标。创业如此,做产品如此,写论文亦如此。如果做一件事不是因为你有意志力,而是根本不需要使用意志力,那就意味着你离成功不远了。”
其实同样的智慧在中国古人那里早已经总结出来,正所谓“知之者不如好之者,好之者不如乐之者。”当我们投入在自己感兴趣的领域,哪怕在别人看来是多么苦的事情,但是我们本身却能够乐此不疲,在这个过程中会感觉到时光飞逝,更容易体验到心流状态。
动眼之外一定要动手
编程不光是一种思想更是一种技能,因此在学习编程之路上有一个不小的误区——“云编程”,当我们看一些编程书籍或视频的时候,如果只是看是没有太多感觉的,然而当我们合上书本,关闭视频教程去亲手一行行写下这些代码的时候,就会发现种种的问题“那个方法名是啥来着”“接下来的逻辑应该怎么处理来着”,即使当下我们写了出来,可是过了一段时间再回看这些代码的时候仍然会有陌生感油然而生,“我什么时候写过这段代码,这是我以前写的么,怎么一点印象都没有了呢”
俗话讲:拳不离手、曲不离口。夏练三伏冬练三九,在学习编程之路上也是一样的道理,一定要亲身实践的去写这些代码,轻易不要去复制粘贴,当自己一个字母一个字母实现的时候才是自己真正掌握的时候。

文章的最后给你加把劲,通过自学希望你能真正从中找到编程的乐趣所在

对编程发自内心的渴望,是你区别于其他学习者最大的优势所在。如下人物都是自学成才的杰出代表:苹果公司的创始人斯蒂夫-沃兹尼亚克( Steve Wozniak ),在美国宇航局的阿波罗登月计划中做出卓越贡献而获得总统自由勋章的玛格丽特-汉密尔顿( Margaret Hamilton ),还有 Tumblr 的创始人大卫-卡普( David Karp ), Twitter 的创始人杰克.多西( Jack Dorsey ), Instagram 的创始人凯文-斯特罗姆( Kevin Systrom )
本文开头的那道题目,如下是我写的参考代码

Comments
Write a Comment