"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y plus rien à retrancher."
"似乎完美最终不是在没有什么可以添加的时候达到,而是在没有什么可以去除的时候达到。"
—安托万·德·圣-埃克苏佩里,《人类的土地》,1939 年
编程中一个常见的担忧是对复杂性的挣扎。任何程序员都很容易编写出一个程序,使其变得如此复杂,以至于没有专家可以调试或修改它。《Python 之禅》如果不涉及这一点,就不会完整。
简洁胜于复杂。
当有可能选择时,选择简单的解决方案。Python 很少做不允许事情的事情。这意味着设计巴洛克式的程序来解决直接的问题是可能的,甚至是直接的。
值得在每个时刻记住,简洁性是在编写代码时最容易失去也是最难重新获得的东西之一。
这可能意味着选择将某些东西编写为函数,而不是引入不必要的类。这可能意味着避免使用强大的第三方库,而选择编写一个两行函数,该函数非常适合当前的用例。最常见的情况是,这意味着避免预测未来,而专注于解决手头的问题。
以后更改程序要容易得多,特别是如果简洁和美观是其指导原则之一,而不是用所有可能的未来变化来加载代码。
复杂胜于繁琐。
这可能是最被误解的原则,因为理解这些词语的精确含义至关重要。当事物由多个部分组成时,它是复杂的。当事物具有许多不同的,通常难以预测的行为时,它是繁琐的。
在解决难题时,通常情况下,没有简单的解决方案。在这种情况下,最符合 Python 风格的策略是“自下而上”。构建简单的工具并将它们组合起来以解决问题。
这就是对象组合等技术发挥作用的地方。与其拥有复杂的继承层次结构,不如拥有将一些方法调用转发到单独对象的对象。这些对象中的每一个都可以单独测试和开发,然后最终组合在一起。
“构建”的另一个例子是使用 singledispatch,这样一来,我们就不再有一个复杂的对象,而是一个简单的、几乎没有行为的对象和单独的行为。
评论已关闭。