前些天,我写了《Python为何使用缩进来划分代码块?》,文中详细梳理了 Python 采用缩进语法的 8 大缘由。我极其喜欢这种简洁优雅的风格,因此对它赞美有加。python
然而文章发出去后,很是意外,竟收到了大量的反对意见!!(以往文章的互动很少,这次创下了记录)git
我就不截图了,先摘录几则最刺眼的评论:程序员
最大的缺陷就是这个缩进机制github
去掉花括号是最愚蠢的设计安全
绝对是过分设计了,缺陷很大微信
最大的缺点就是缩进,太反人类了编辑器
……函数
对于这一类的评论,我认为他们是“睁着眼睛说瞎话”,颠却是非黑白。Python 的缩进语法如此简洁好用,怎么就“过分设计/愚蠢/缺陷/反人类”了?工具
常言道众口难调,有人爱甜粽子有人爱咸粽子,可是对于咸甜味道,你们是有所共识的,不至于感官紊乱,大放厥词。设计
还有比较多的评论,认为缩进容易形成混乱:
代码多了,本身看着累,别人更难懂
眼花了,仍是括号好些
仍是{}或end更清晰
没有花括号老以为没有安全感
缩进层次看不清楚
没有大括号不便于阅读
层次一多看起来很乱,不知哪层是哪层,要缩多少。到底退出循环没有。
看着明明缩进是对的,但运行时老是报错
用python写上十万行试试,到时候你就知道,什么叫混乱看不下去
……
如今主流的 IDE 工具都很强大,应该善于使用其基本功能,例如:设置显示空格字符、设置 tab 自动转化为空格、设置 tab 键为 4 个空格……同一层级的缩进还会有浅浅的竖线,在视觉上辅助阅读。
至于说层次过多、代码很长的状况,这自己就是一种代码坏味道!当出现过长的函数或者类时,优秀的程序员 第一时间该考虑的就是重构。推荐一本书《重构:改善既有代码的设计》,里面有正道的价值观和详尽的方法论。
还有说点击右括号,能够看到匹配的左括号,会清晰。有这东西确实不错,但没有,我并不诉求。自己紧凑简洁的代码,缩进阅读会很快。
除了以上两大类的评论,我还收到如下几种比较有表明性的评论:
关于缩进的自动格式化,这里有两个例子,给你们演示一下:
上述例子,删除掉那行 if 条件语句,而后直接”ctrl+alt+l“做全局格式化,格式会出错。咱们但愿两句 print 向左缩进 4 格,可是 return 那句也会向左缩进。
在删除 if 那行后,若是咱们只选中两行 print,做局部”ctrl+alt+l“格式化,那只有这两行会缩进,就没问题。
再看第二个例子,咱们复制了一段新代码,可是它的缩进不对:
这时候,若直接“ctrl+alt+l”全局格式化,或者选中那三行再格式化,结果都不对!缘由是第二个 if 的缩进格数小于 4 个,因此 PyCharm 认为它属于一级缩进(即不应有空格),因此自动格式化时就把它左移了。
若是选中它们,先按 tab 键右移(即新代码变成缩进大于 4 格,小于 8 格):
此时再做格式化的话,它们的缩进就跟第一层的 if 一致了(两层 if 是兄弟关系)。
同理,若是你想把新代码缩进到第一层 if 的内部(变为父子关系),那只需选中上图三行代码再 tab 键右移 4 格,以后格式化就能够了!
建议你们在编辑器里实操一下。等空了我会录制一期小视频(B 站搜“Python猫”),敬请留意。
除了上面的评论/观点以外,咱们在微信交流群里也讨论了这个话题。@樱雨楼(github.com/yingyulou) 小姐姐的观点对我挺有启发。
群聊截图已记录在“Python知识星球”里(t.zsxq.com/jeM33bQ),其中…
三言两语无法转述清楚,但她谈论缩进话题的视角确实使人耳目一新!
上次的文章发出后,有很多小伙伴表示很喜欢 Python 的缩进。我本觉得会听到不少这类的声音,没想到倒是负面的评论更多。(也许更多认同的声音没有表现出来)
本文对几类典型的评论做出了回应,再次表达了我在这个话题上的关注和理解(以及情绪的抒发),但愿也能给读者们带来一些思考和收获吧。