前言 preface
本书所讨论的方法虽不能为你的软件系统创造价值,但能降低成本。
任何一项工程都包含价值和成本两方面因素,软件工程也不例外。对客户需求的满足程度就是软件产品价值的体现。客户并不关心你的代码中用了几个设计模式或采用了哪些精妙的结构。如果脱离了客户需求,即使你使用了最优秀的架构、最前沿的技术,产品还是毫无价值。满足软件的价值特性才是写代码的目的,即:满足客户的需求。也许你的代码并不优雅,而且还有瑕疵,但只要功能实现良好且能让客户满意,就能获得市场认可。
既然如此,人们为何还要不断地研究如何创造优雅代码?答案是:为了降低成本,优雅代码具备了降低成本的特性,如开发成本、维护成本、人力成本、时间成本等,这些软件工程的成本因素不容忽视。良好的可读性可以降低开发人员间的沟通成本;高可靠性可以有效避免由于致命问题导致的频繁发布补丁或更新版本;软件的高性能可以降低硬件采购的成本;可维护性与代码和产品的维护成本息息相关;可扩展性强的代码则可以在需求变化时从容应对,减少修改代码的工作量。
本书中的例子为C/C++和Java代码,但这并不是一本讲授某一种编程语言的书。书中所讨论的方法,是我代码工匠生涯中的一些积累和感悟。在归纳整理时,发现它们正好属于软件六大特性中的五个:易用性、可靠性、效率、可维护性、可移植性,这些都决定着软件的成本。
书中的这些方法放到任何一个应用系统中都适用。而软件的第一大特性——功能性则决定了软件的价值,它涉及软件系统的方方面面,包括需求价值、业务模型、技术路线等,这已经超出了本书的讨论范围。
本书读者
如果你已经掌握了某种编程语言且从事编程工作1~3年,并有意愿在此道路上长期发展,但又觉得在编程技艺上碰到了一些困惑同时感觉无法提高,那么你非常适合阅读本书。本书提供的一些思路和方法能给你带来帮助。
如果你从事编程工作3年以上,已经对写代码有了一定的认识,也希望你能抽空阅读本书,本书的内容可供你参考或对你有所启发,助你在编程的职业通道上更进一步。
此外,推荐高校计算机编程课程教师将其作为参考书使用。
示例代码
本书部分章节涉及的一些示例代码,可访问如下地址下载。
下载地址 1:https://github.com/MinyuLi/codewriting。
下载地址 2:http://sample.codewriting.cn。
联系方式
作者邮箱:codewriting@163.com。
本书公众号:
致谢
感谢机械工业出版社胡毓坚副总编辑、李晓波编辑在本书的出版过程中给予的大力帮助。本书第一稿完成时仅有97页,内容较为单薄。胡毓坚副总编辑鼓励我继续充实完善书稿内容,同时还帮我厘清了一些思路。李晓波编辑则一直陪我用心地打磨细节,比如本书的书名、章节的标题、书中的配图等。