《软件开发的 201 个原则》(中译本) 出版了

2024-03-23 11:10

本文主要是介绍《软件开发的 201 个原则》(中译本) 出版了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源:章老师说

前后历时近 2 年,软件工程领域的经典著作《软件开发的 201 个原则》(201 Principles of Software Development)终于在国内正式出版了。

在此,感谢组织和参与翻译的 15 名百度同学,大家做了一件非常有意义的工作。同时,大家也一致同意将本书翻译的稿酬全额捐赠给希望工程。

在此,要感谢百度和电子工业出版社博文视点的支持。大家在“打造精品”这个目标上有非常一致的共识。在这个工作中,我感受到了情怀和责任。

本次很荣幸得到原书作者 Alan Davis 两次专门撰文。软件大师的专业风范在其中有非常充分的展现,非常值得我们学习。

本次也非常荣幸的邀请到来自清华大学及多家公司的专家和老师撰写推荐序。非常感谢大家对于本书出版所提供的支持。

有兴趣的同学,可以直接点击本文最后的“阅读原文”或扫描下图的二维码到京东购买。

在这里插入图片描述

下面是我在去年夏天代表翻译团队所写的译者序,请大家指正。

译者序

其实我不是译者,而仅仅是一名“校对者”。大家让我来写这篇译者序,盛情难却,无法推脱。

《软件开发的 201 个原则》是我于 2017 年至 2020 年在百度举办“代码的艺术训练营”时使用的指定教材。这本书的内容深受训练营学员的好评。由于之前没有中文版,对于部分英文基础不太好的同学来说阅读有些困难。终于在 2019 年底,有十多名“代码的艺术训练营”的毕业生自发组织起来,开始了此书的翻译。我从 2020 年 5 月初加入校对工作,完成全部的校对,我大约花费了 80-100 个小时。由此推断,负责翻译的同学花费了数倍于此的时间。非常感谢这些同学的无私付出!

初识《201 个原则》是在 20 年前。当时我还在清华大学读书,在老师的指导下做一个有一定规模的软件研发项目。在项目的研发过程中,遇到了不少软件工程方面的问题。于是在那一年,我阅读了大约 10 本软件工程方面的书籍,包括《Code Complete》(代码大全)、《Rapid Development》(快速开发)、《ProgrammingPearls》(编程珠玑),等等。《201 个原则》是我当时在清华图书馆中发现的一个“宝贝”。我必须说,这本书对我的影响非常深,很多我现在经常提起的软件工程原则,其实都源于对这本书的阅读。

2006 年我离开清华,到目前已经在工业界工作十多年,经历了多家公司。我发现,虽然我们的软件研发规模已经和 20 年前有了很大的发展,但是在软件研发的理念方面的进步还是太慢了。有太多的软件从业者,即使已经工作多年,但对于软件研发的基本理念和原则还是了解不多。以我多次的调查,阅读超过 2 本“真正的”软件工程书籍的人是非常少数的。很多软件工程师,仍然在使用非常低效的、甚至是错误的方法在工作!

于是在 2015 年,我在百度开办了“代码的艺术”面授课程,其中就重点推荐了《201 个原则》。而在 2017 年做“代码的艺术训练营”的时候,这本书就成了指定教材。为什么要选择这本书?因为它对软件工程的内容覆盖全面,且篇幅短小。对于一个短期培训班来说,如果选择类似《Code Complete》这样的书籍,阅读所需要的时间有些太多了。在这个场合,《201 个原则》是一个性价比更高的选择。另外,我常常感觉,对于一个软件工程师,掌握正确的意识是比掌握具体知识更重要的。如果有正确的意识,即使不记得具体的知识点,还可以在需要的时候进行查阅。而反过来就不是这样了。

必须要说,《201 个原则》写于 1995 年,距今已经有 25 年时间。这也成为很多人担心的来源— 计算机技术的发展如此之快,这本书是不是已经过时了?但是,正如我在“代码的艺术”课程中所述的“知识、方法、精神”三者的对比,方法的变化速度远远慢于知识。尤其是在本次校对过程中,我惊奇的发现,本书中真的可以说是“过时”的原则还不到 5 个!是软件研发的方法变化太慢,还是本书的内容太深刻?我想两者兼而有之。在此,我必须要对本书的原作者 Alan M. Davis 致敬,并对《201 个原则》中所有原则的贡献者和历史上所有软件工程领域的大师们致敬!

最后,要隆重的介绍本次负责翻译的百度同学。他们是:叶王,马学翔,吴斌,王冰清,杨光,曾浩浩,李殿斌,甘璐,李子昂,肖远昊,贾儒,王莹,张苗,李双婕,荣文升。另外,经过大家的商定,本书翻译出版的所有稿酬,都将捐赠给公益事业。

对所有的读者,所有的阅读此书的软件工程师,所有准备从事软件研发的同学们,希望本书能够对你们有所帮助!

章淼博士

百度 BFE 团队技术负责人,百度代码规范委员会主席

2020 年 6 月 14 日写于百度

点击进入获得更多技术信息~~

这篇关于《软件开发的 201 个原则》(中译本) 出版了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838133

相关文章

JVM内存调优原则及几种JVM内存调优方法

JVM内存调优原则及几种JVM内存调优方法 1、堆大小设置。 2、回收器选择。   1、在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。   2、对JVM内存的系统级的调优主要的目的是减少

【软件工程】软件开发模型

三、瀑布模型  四、几种软件开发模型的主要特点 题目 判断题 选择题 小结

【IEEE出版】2024博鳌新型电力系统国际论坛——电力系统与新能源技术创新论坛(NPSIF 2024,10月30-11月1)

2024博鳌新型电力系统国际论坛——电力系统与新能源技术创新论坛将于2024年10月30-11月1日于海南博鳌举办。 会议的历史悠久,致力于促进电力系统领域的研究和开发活动,同时也着眼于促进全球各地研究人员、开发人员、工程师、学生和从业人员之间的科学信息交流,推动新能源技术的创新和应用,为全球能源领域的可持续发展贡献力量。期待着各方专家学者的共同参与和卓越贡献,共同开创电力系统未来的新篇章。

水处理过滤器运行特性及选择原则浅谈

过滤属于流体的净化过程中不可缺的处理环节,主要用于去除流体中的颗粒物或其他悬浮物。水处理过滤器的原理是利用有孔介质,从流体中去除污染物,使流体达到所需的洁净度水平。         水处理过滤器的滤壁是有一定厚度的,也就是说过滤器材具有深度,以“弯曲通 道”的形式对去除污染物起到了辅助作用。过滤器是除去液体中少量固体颗粒的设备,当流体进入置有一定规格滤网的滤筒后,其杂质被阻挡,而

集成电路学习:什么是SDK软件开发工具包

SDK:软件开发工具包         SDK,即Software Development Kit(软件开发工具包),是一套由软件提供商或其他组织提供的开发工具集合。这些工具旨在帮助开发者更快速、更便捷地创建、测试和部署软件应用程序。以下是对SDK的详细解释: 一、SDK的定义与组成         定义:SDK是一套包含编程工具、代码示例、技术说明文档、调试和测试工具等内容的软件包,有

从知识视角理解软件开发

软件构造中的核心知识:业务知识与架构知识 在软件构造过程中,最关键的两类知识是业务知识和架构知识。业务知识回答“什么是正确的软件”,而架构知识解决“如何正确地构造软件”。从这两个方面深入理解软件构造,可以帮助我们在设计和开发过程中做出更明智的决策。 1. 业务知识:定义正确的软件 业务知识是关于如何解决现实问题的知识,包括业务的目标、规则、限制、和已有的解决方案。它定义了“正确的软件”是什么

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》出版1周年

去年为廖老师的甲子而出书,时光荏苒如白驹过隙,转眼出版一周年了。这本书能有这样的品质,与廖老师的指导密不可分,尤其是在他擅长的统计学领域。巩固了统计学基础,对我深入理解当前最热门的生成模型(如VAE、扩散模型)起到了至关重要的作用。 最让我感动的是,最初他给我指出问题,我不认为我有问题,我认为是他不懂,他坚持不懈地找我讨论。我作为老师我做不到,如果学生觉得自己什么都知道,我肯定就不理他了。感谢廖

第二章 可行性研究与软件开发计划简记

第二章  可行性研究与软件开发计划 可行性研究的任务:回答所开发的软件系统有无可行的解决办法或者这个系统值得开发么。 可行性研究大体可分为三个大的方面:工艺技术、市场需求、财务经济状况。 可行性研究的目的:就是尽可能的用最小的代价在尽可能短的时间内确定问题是否能解决。 可行性研究的解决方案:一般集中在 1.技术可行性2.经济可行性3.操作可行性。

软件工程技术专业软件开发综合实训室解决方案

一、行业背景与前景分析 1.1 软件工程技术专业就业前景 近年来,中国的软件行业取得了显著的成就,即便在全球经济受到新冠疫情冲击的情况下,仍保持了强劲的增长势头。据工业和信息化部发布的数据,2021年我国软件和信息技术服务业的业务收入达到85371亿元人民币,同比增长18.3%,远超同期国内生产总值的增长率。这一成就不仅体现了中国软件行业的韧性和发展潜力,也为未来的持续增长奠定了坚实的基

重写equals和hashCode的原则规范

当符合以下条件时不需要重写equals方法:     1.     一个类的每一个实例本质上都是唯一的。     2.     不关心一个类是否提供了“逻辑相等”的测试功能     3.     超类已经改写了equals方法,并且从超类继承过来的行为对于子类也是合适的。     4.     一个类时私有的或者是package私有的,并且可以确定它的equals方法永远不会被调用。(这