在做IT的公司里,尤其是软件开发部门,一般不会要求工程师衣着正式。在我工作过的一些环境相对宽松的公司里,很多程序员的衣着连得体都算不上(搞笑的T 恤、短裤、拖鞋或者干脆不穿鞋)。我想,我本人也在这个行列里面。虽然我现在改行做软件开发方面的咨询工作,但还是改不了这副德性。衣着体面的其中一个积极方面是它体现了对周围人的尊重,以及对所从事工作的尊重。比如,那些研究市场的人要表现出对客户的尊重。而大多数程序员基本上每天主要的工作就是和其他程序员打交道。那么这说明程序员之间就不用互相尊重吗?而且也不用尊重自己的工作吗?
程序员之间的互相尊重体现在他所写的代码中。他们对工作的尊重也体现在那里。
在《Clean Code》一书中Bob大叔认为在代码阅读过程中人们说脏话的频率是衡量代码质量的唯一标准。这也是同样的道理。
这样,代码最重要的读者就不再是编译器、解释器或者电脑了,而是人。写出的代码能让人快速理解、轻松维护、容易扩展的程序员才是专业的程序员。
当然,为了达到这些目的,仅有编写程序的礼节是不够的,还需要很多相关的知识。这些知识既不属于编程技巧,也不属于算法设计,并且和单元测试或者测试驱动开发这些话题也相对独立。这些知识往往只能在公司无人问津的编程规范中才有所提及。这是我所见的仅把代码可读性作为主题的一本书,而且这本书写得很有趣!
既然是“艺术”,难免会有观点上的多样性。译者本身作为程序员观点更加“极端”一些。然而两位作者见多识广,轻易不会给出极端的建 议,如“函数必须要小于10行”或者“注释不可以用于解释代码在做什么而只能解释为什么这样做”等语句很少出现在本书中。相反,作者给出目标以及判断的标 准。
翻译书是件费时费力的事情,好在本书恰好涉及我感兴趣的话题。但翻译本书有一点点自相矛盾的地方,因为书中相当的篇幅是在讲如何写出 易读的英语。当然这里的“英语”大多数的时候只是指“自然语言”,对于中文同样适用。但鉴于大多数编程语言都是基于英语的(至少到目前为止),而且要求很 多程序员用英语来注释,在这种情况下努力学好英语也是必要的。
感谢机械工业出版社的各位编辑帮助我接触和完成这本书的翻译。这本译作基本上可以说是在高铁和飞机上完成的(我此时正在新加坡飞往香 港的飞机上)。因此家庭的支持是非常重要的。尤其是我的妻子郑秀雯(是的,新加坡的海关人员也对她的名字感兴趣),她是全书的审校者。还有我“上有的老 人”和“下有的小孩”,他们给予我帮助和关怀以及不断前进的动力。
尹哲
------------------------------------------------
本文为《编写可读代码的艺术》译者序,原书名:The Art of Readable Code,作者:Dustin Boswell & Trevor Foucher。
细节决定成败,思路清晰、言简意赅的代码让程序员一目了然;而格式凌乱、拖沓冗长的代码让程序员一头雾水。除了可以正确运行以外,优秀的代码必须具备良好的可读性,编写的代码要使其他人能在最短的时间内理解才行。本书旨在强调代码对人的友好性和可读性。
《编写可读代码的艺术》关注编码的细节,总结 了很多提高代码可读性的小技巧,看似都微不足道,但是对于整个软件系统的开发而言,它们与宏观的架构决策、设计思想、指导原则同样重要。编码不仅仅只是一 种技术,也是一门艺术,编写可读性高的代码尤其如此。如果你要成为一位优秀的程序员,要想开发出高质量的软件系统,必须从细处着手,做到内外兼修,本书将 为你提供有效的指导。
主要内容:
- 简化命名、注释和格式的方法,使每行代码都言简意赅。
- 梳理程序中的循环、逻辑和变量来减小复杂度并理清思路。
- 在函数级别解决问题,例如重新组织代码块,使其一次只做一件事。
- 编写有效的测试代码,使其全面而简洁,同时可读性更高。
【关于作者】
Dustin Boswell毕业于加州理工大学,资深软件工程师,在Google就职多年,负责Web爬虫和程序设计相关的工作。他专注于前端、后端,服务器架构、机 器学习、大数据、系统和网站等技术领域的研究和实践,经验十分丰富。他现在是MyLikes的软件工程师。
Trevor Foucher资深软件工程师和技术经理,先后在Microsoft和Google工作了数十年,在Microsoft担任软件工程师、技术经理以及安全产品技术主管,在Google从事广告应用开发和搜索基础结构研发相关的工作。