Python的使用之禅
Beautiful is better than ugly. 美丽好过丑陋
Explicit is better than implicit. 明示好过暗示
Simple is better than complex. 简单好过复杂
Complex is better than complicated.复杂好过杂乱
Flat is better than nested.平坦好过嵌套
Sparse is better than dense.稀疏好过稠密
Readability counts.可读性计数
Special cases aren't special enough to break the rules.特殊情况下没有特殊的,则足以打破规则
Although practicality beats purity.尽管实用冲击着纯朴
Errors should never pass silently.但错误将永远不能悄然通过
Unless explicitly silenced.除非明确它要悄然地
In the face of ambiguity, refuse the temptation to guess.面对莫能两可的东西,拒绝猜测的诱惑。
There should be one-- and preferably only one --obvious way to do it.因为应该会有一个--而且最好只有一个--很明显的方法去解释它。
Although that way may not be obvious at first unless you're Dutch.虽然这种方式对你来说第一次可能不明显,除非你是荷兰人。
Now is better than never.现在从来没这么好过。
Although never is often better than *right* now.虽然从来没有常常比现在更好。
If the implementation is hard to explain, it's a bad idea.如果实施过程是很难被解释的,这就是个坏主意。
If the implementation is easy to explain, it may be a good idea.如果实施过程是很容易被解释,这可能是一个好主意。
Namespaces are one honking great idea -- let's do more of those!名称空间是一个伟大的理念——让我们做更多的!
你已经完成了这节习题,取决于你对电脑的熟悉程度,这个练习对你而言可能会有些难。如果你觉得有难度的话,你要自己克服困难,多花点时间学习一下。因为如果你不会这些基础操作的话,写程序对你来说将会是相当艰难的一件事。
如果有程序设计师叫你去使用 vim 或者 emacs ,你应该拒绝他们。当你成为一个更好的程序设计师的时候,这些编辑器才会适合你使用。你现在需要的一个可以编辑文字的编辑器。我们使用 gedit 是因为它很简单,而且在不同的系统上面使用起来也是一样的。就连专业程序设计师也用 gedit ,所以对于初学者而言它已经够用了。
总有一天你会听到有程序设计师建议你使用 Mac OSX 或者 Linux。如果他喜欢字体美观,他会叫你弄台 Mac OSX 电脑,如果他们喜欢操作控制而且留了一把大胡子,他会叫你安装 Linux。这里再度向你说明,只要是一台手上能用的电脑就够了。你需要的只有三样东西gedit 、一个 Terminal、还有 IRB。
最后要说的是这节习题的准备工作的目的,也就是让你可以在以后的习题中顺利做到下面的这些事情:
使用 gedit 编写程序码。
执行你的代码。
修改错误。
重复上述步骤。
其他的事情只会让你更困惑,所以还是坚持照着这个计划进行吧。
函数的风格
以前我教过的怎样写好函数的方法一样是适用的,不过这里要添加几条:
由于各种各样的原因,程序员将 class (类)里边的函数称作method(方法)。很大程度上这只是个市场策略(用来推销OOP),不过如果你把它们称作「函数」的话,是会有啰嗦的人跳出来纠正你的。如果你觉得他们太烦了,你可以告诉他们从数学方面示范一下「函数」和「方法」究竟有什么不同,这样他们会很快闭嘴的。
在你使用class的过程中,很大一部分时间是告诉你的 class如何「做事情」。给这些函数命名的时候,与其命名成一个名词,不如命名为一个动词,作为给class的一个命令。就和数组中的 pop 函数一样,它相当于说:「嘿,数组,把这东西给我 pop出去。」它的名字不是 remove_from_end_of_list,因为即使它的功能的确是这样,这一个字符串也不是一个命令。
让你的函数保持简单小巧。由于某些原因,有些人开始学习 class 后就会忘了这一条。
Classh (类) 的风格
你的 class 应该使用「camel case(驼峰式大小写)」,例如你应该使用SuperGoldFactory 而不是 super_gold_factory 你的 initialize 不应该做太多的事情,这会让 class 变得难以使用。
你的其它函数应该使用「underscore format(下划线隔词)」,所以你可以写my_awesome_hair,而不是 myawesomehair 或者 MyAwesomeHair。
用一致的方式组织函数的参数。如果你的 class 需要处理 users、dogs、和cats,就保持这个次序(特别情况除外)。如果一个函数的参数是(dog, cat, user),另一个的是(user, cat, dog) ,这会让函数使用起来很困难。
不要对全局变量或者来自模组的变量进行复位义或者赋值,让这些东西自顾自就行了。
不要一根筋式地维持风格一致性,这是思维力底下的妖怪喽萝做的事情。一致性是好事情,不过愚蠢地跟着别人遵从一些白痴口号是错误的行为——这本身就是一种坏的风格。好好为自己着想吧。