高效能程序员的修炼:软件开发远不止是写代码那样简单
Effective Programming: More Than Writing Code

为了让你的程序员同伴们更容易阅读和理解你的代码,你需要不断得改进你的代码,但如果你已经重写,重构,甚至重新设计了很多遍,当你已经一筹莫展,已经想不出任何办法可以让你的代码变得更加浅显易懂,这时候,也只有在这个时候,你才应该在百般无奈之下加上一些注释来解释你的代码。就像Steve Yegge指出的那样,这是初级开发者与高级开发者之间的一个关键差别。

“坦率的说,要是在以前,让我一下子看太多的代码会让我崩溃,它的复杂度已经超出了我能接受的极限。而当我不得不在那些代码的基础上继续工作的时候,我通常会重写它们,或者至少也会加上大量的注释。现如今当我碰到这样这种情况的时候,我会披荆斩棘的快速通过,而不会(过多地)抱怨。当我在脑子里已经有了一个明确的目标,并且有一段复杂的代码要写时,我会把时间花在时间代码上,而不是用注释写着他的故事讲给我自己听。”

让我来说明一下,就像Kely尊重程序员一样,我对系统管理员也怀有深深的敬意。尽管编程社区和信息技术/系统管理员社区之间必然有一些交叉,但我们仍然认为它们是不同的物种。仅仅因为你是一个编程高手,并不代表你还精通网络和服务器配置。况且我也遇到过一些系统管理员,他们可以通过编写一些脚本来控制我的代码,这就是serverfault.com网站有它自己的域名用户配置以及声誉系统的原因所在。

Matz(Ruby语言的发明人)在这方面深有感慨:如果你的系统有一个出色的界面,并且你在资金和时间方面也预算充足,你就可以继续在这个系统上工作。即使这个系统有bug或运行缓慢,你也可以去改进。,但如果你的系统有一个糟糕的界面,基本上就一无所有了。哪怕系统内部使用了最高深的技术,那也是于事无补。没人愿意使用界面如此糟糕的系统。因此,系统的界面或接口(不管不管是针对用户还是针对其他机器)是非常重要的。

如果你是个大忙人,没空把上面的内容完整看一遍,那我就为你总结一下吧。如果你只是一个用户,确保你的密码长度要超过12位,甚至还要长很多,我建议采用短语式的密码。它不仅比一般的密码容易记的多,在蛮力攻击面前还格外安全,因为它足够长。 如果你是一个开发者,如果你想要用哈希来保密你的什么东西,只能考虑选择bcrypt或PBKDF2。这些新的哈希算法是针对特意针对GPU设计的,使得在GPU上很难针对它们实施破解。不要使用任何其他形式的哈希,因为GPU一年比一年快,并行作业能力越来越强,也更易于编程。即使在一组普通的GPU面前,几乎其他所有流行的哈希方案都顶不住蛮力攻击。