登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

2023年02月出版新書

『簡體書』软件开发实践:项目驱动式的Java开发指南

書城自編碼: 3538275
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: [英]拉乌尔·加布里埃尔·乌尔玛[Raoul-,Gabrie
國際書號(ISBN): 9787111660910
出版社: 机械工业出版社
出版日期: 2020-08-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:NT$ 474

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
变革时代的公司契约:法律能否与时俱进?
《 变革时代的公司契约:法律能否与时俱进? 》

售價:NT$ 437.0
我国城乡融合发展基本格局及典型形态研究
《 我国城乡融合发展基本格局及典型形态研究 》

售價:NT$ 386.0
写意兰竹树石课徒稿
《 写意兰竹树石课徒稿 》

售價:NT$ 515.0
不较真的心理智慧
《 不较真的心理智慧 》

售價:NT$ 279.0
漫画算法与数据结构(大规模数据集)
《 漫画算法与数据结构(大规模数据集) 》

售價:NT$ 447.0
欧洲的扩张1415—1789:现代世界的奠基
《 欧洲的扩张1415—1789:现代世界的奠基 》

售價:NT$ 829.0
引导的秘诀:通过团队合作获得结果的SMART指南(最新修订版)(白金版)
《 引导的秘诀:通过团队合作获得结果的SMART指南(最新修订版)(白金版) 》

售價:NT$ 554.0
文史星历:秦汉史丛稿
《 文史星历:秦汉史丛稿 》

售價:NT$ 661.0

建議一齊購買:

+

NT$ 876
《 微服务架构设计模式 》
+

NT$ 414
《 深度学习算法与实践 》
+

NT$ 534
《 AI自动化测试:技术原理 平台搭建与工程实践 》
+

NT$ 534
《 TensorFlow深度学习及实践(人工智能科学与技术丛书) 》
+

NT$ 782
《 Kali Linux高级渗透测试(原书第3版) 》
+

NT$ 813
《 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) 》
編輯推薦:
资深技术专家撰写,全面阐述基于Java的软件开发技术和方法,有助于提升读者软件开发能力。以项目驱动方式讲解,涵盖软件开发的不同主题,便于初级程序员了解构建现代、可维护、健壮Java软件的先进软件开发实践。提供大量项目实例,涉及函数式编程、自动测试、安全、架构、分布式系统等方面的技术和方法,便于读者参考借鉴解决实际问题。
內容簡介:
如果你刚刚开始你的Java职业生涯,掌握当今的许多软件开发概念可能会让你不知所措。你是否应该学习面向对象的实践,比如测试驱动开发或者应用函数式编程思想?本书提供了一种综合的、项目驱动的方式,帮助你学习一些成为高效开发人员所需的核心主题。
作者在本书中向你展示了如何开发真实项目,并同时学习*实践。每一章会聚焦于一个项目,该项目从一个命令行批处理程序开始,然后发展成一个功能齐全的应用程序。如果能够编写基本的Java代码,那么你将学习先进的软件开发实践,以构建现代的、健壮的和可维护的Java软件。
通过阅读本书,你将能够:
●了解编写可维护代码的核心设计原则。
●增加代码库的灵活性,提升代码可维护性,以及处理异常。
●理解如何应用耦合、内聚和SOLID原则。
●使用测试驱动开发来处理新的设计问题。
●从外到内思考:从全局转移到应用程序领域的核心。
●了解函数式编程并学习如何在Java中使用它。
關於作者:
★拉乌尔加布里埃尔乌尔玛(Raoul-Gabriel Urma)博士是Cambridge Spark的CEO和创始人,该公司是数据科学和人工智能培训领域的领导者。Raoul拥有剑桥大学计算机科学博士学位和伦敦帝国理工学院计算机科学硕士学位,并以一等荣誉毕业,曾多次获得技术创新奖项。他的研究兴趣包括编程语言、编译器、源代码分析、机器学习和教育领域。他在2017年被提名为Oracle Java Champion,同时也是一位经验丰富的国际会议演讲者,发表过涉及Java、Python、人工智能和商业的演讲。Raoul曾经为几个大型软件工程项目的组织提供咨询,包括Google、Oracle、eBay和Goldman Sachs。
★理查德沃伯顿(Richard Warburton)博士是Opsian.com的联合创始人,也是Artio FIX引擎的维护者。他曾在不同领域担任开发人员,包括开发工具、高频交易和网络协议。Richard 是一位经验丰富的会议演讲者,曾在数十个活动中发表演讲,并在欧洲和美国一些大型会议的委员会中担任委员。他拥有华威大学计算机科学博士学位。
目錄
第1章 开始旅程吧7
1.1 主题7
1.2 章节概要9
1.3 迭代10

第2章 银行账单分析器11
2.1 挑战11
2.2 目标11
2.3 银行账单分析器需求12
2.4 KISS原则12
2.5 代码可维护性和反模式15
2.6 单一职责原则16
2.7 内聚21
2.8 耦合27
2.9 测试30
2.10 要点35
2.11 迭代35
2.12 完成这个挑战36

第3章 扩展银行账单分析器37
3.1 挑战37
3.2 目标37
3.3 银行账单分析器的扩展需求38
3.4 开闭原则38
3.5 接口陷阱42
3.6 显式API和隐式API44
3.7 多样化导出 47
3.8 异常处理51
3.9 使用构建工具61
3.10 要点68
3.11 迭代68
3.12 完成这个挑战68

第4章 文档管理系统69
4.1 挑战69
4.2 目标69
4.3 文档管理系统需求70
4.4 充实这个设计70
4.5 里氏替换原则77
4.6 可选方案79
4.7 扩展和重用代码81
4.8 保持测试健康86
4.9 要点95
4.10 迭代96
4.11 完成这个挑战96

第5章 业务规则引擎97
5.1 挑战97
5.2 目标97
5.3 业务规则引擎需求98
5.4 测试驱动开发99
5.5 mocking102
5.6 添加条件104
5.7 流式API设计115
5.8 要点120
5.9 迭代120
5.10 完成这个挑战121

第6章 Twootr122
6.1 挑战122
6.2 目标122
6.3 Twootr的需求123
6.4 设计概述124
6.5 从事件到设计126
6.6 从哪里开始129
6.7 密码和安全性134
6.8 关注者和twoot136
6.9 位置145
6.10 要点151
6.11 迭代151
6.12 完成这个挑战151

第7章 扩展Twootr152
7.1 挑战152
7.2 目标152
7.3 回顾152
7.4 持久性和存储库模式153
7.5 函数式编程160
7.6 用户界面173
7.7 依赖倒置和依赖注入174
7.8 包和系统构建177
7.9 限制和简化179
7.10 要点180
7.11 迭代180
7.12 完成这个挑战180

第8章 总结181
8.1 基于项目的结构181
8.2 迭代181
8.3 刻意练习182
8.4 下一步及附加资源183 
前言【前言】
掌握软件开发需要学习一组完全不同的概念。无论你是一名初级的软件开发人员,还是更有经验的开发高手,这看起来都是一个不可逾越的障碍。你是否应该花时间去学习面向对象世界中既有的主题,比如SOLID原则、设计模式或测试驱动开发?你是否应该去尝试一些越来越流行的东西,比如函数式编程?
即使你已经选择了一些主题来学习,通常也很难确定它们是如何结合在一起的。什么时候应该在项目中应用函数式编程思想?什么时候担心测试问题?如何知道在什么时候引入或改进这些技术?是否需要读一本关于这些主题的书,然后再读一些博客文章或看视频来弄清楚如何把这些主题结合在一起?该从哪里开始呢?
不用担心,本书就是来帮助你的。它将通过一个综合的、项目驱动的方式来帮助你学习。你将学习成为一名高效的开发人员所需了解的核心主题。不仅如此,我们还展示了如何将这些东西组合起来,以应用于更大的项目。

【为什么写作本书】【前言】
掌握软件开发需要学习一组完全不同的概念。无论你是一名初级的软件开发人员,还是更有经验的开发高手,这看起来都是一个不可逾越的障碍。你是否应该花时间去学习面向对象世界中既有的主题,比如SOLID原则、设计模式或测试驱动开发?你是否应该去尝试一些越来越流行的东西,比如函数式编程?
即使你已经选择了一些主题来学习,通常也很难确定它们是如何结合在一起的。什么时候应该在项目中应用函数式编程思想?什么时候担心测试问题?如何知道在什么时候引入或改进这些技术?是否需要读一本关于这些主题的书,然后再读一些博客文章或看视频来弄清楚如何把这些主题结合在一起?该从哪里开始呢?
不用担心,本书就是来帮助你的。它将通过一个综合的、项目驱动的方式来帮助你学习。你将学习成为一名高效的开发人员所需了解的核心主题。不仅如此,我们还展示了如何将这些东西组合起来,以应用于更大的项目。

【为什么写作本书】
多年来,我们在教授开发人员编写代码方面积累了丰富的经验,我们都写过关于Java 8的书籍,并围绕专业软件开发运营了一些培训课程。在这个过程中,我们被认证为了Java Champion并成为多个国际会议的演讲者。
这些年我们发现许多开发人员都可以从几个核心主题的介绍或复习中受益。通过实践,通常可以很好地覆盖到设计模式、函数式编程、SOLID原则以及测试,但是很少看到它们如何良好地工作以及相互配合。人们有时甚至会因为对学习内容的选择性麻木而放弃提高自己的技能。我们不仅想教授人们核心技能,而且还要以一种容易接近和有趣的方式来做这件事。

【面向开发者的方式】
本书也给了你一个以面向开发者的角度去学习的机会。书中包含大量的代码示例,每当我们引入一个主题时,都会提供具体的代码示例。你可以获得书中项目的所有代码,因此,如果你想继续学习,甚至可以在集成开发环境(IDE)中单步调试书中的代码,或者运行程序来尝试它们。
涉及技术的书籍通常是以正式的、讲义式的方式编写的,那不是正常人说话的方式!本书采用会话式风格,帮助你参与到书的内容中来,而不是被居高临下地教导。

【本书内容】
本书每章都围绕一个软件项目展开。在每章的结尾,如果你一直在跟进,应该能够编写出那个项目。这些项目一开始是简单的命令行批处理程序,但随着复杂度的增加,它们会发展成功能齐全的应用程序。
你将从项目驱动的结构中以多种方式获益。首先,你将看到不同的编程技术如何在集成环境中协同工作。当我们在本书的最后部分看到函数式编程时,它不仅仅是抽象的集合处理操作,而是为了计算所讨论的项目中要使用的实际结果而提出的。这解决了一个问题,那就是:对于教学资料中看起来很好的想法和方法,开发人员经常会不恰当地或脱离上下文地使用它们。
其次,项目驱动的方法有助于确保在每个阶段都能看到实际的示例。教学资料中经常有很多被称为Foo的示例类和被称为bar的方法。而我们的示例与所讨论的项目相关,并展示了如何将这些想法应用到实际问题中,这些问题类似于你在职业生涯中可能会遇到的那些问题。
本书每章都是一个全新的项目,是一个学习新事物的新机会。我们希望读者能从头到尾读完本书,并且真正享受阅读的过程。这些章节以一个将要解决的挑战开始,带你去了解它的解决方案,然后通过评估你学到了什么以及如何解决这个挑战来结束。我们在每章的开头和结尾都特别指出这个挑战,以确保你清楚它的目标。

【本书目标读者】
我们相信,各种不同背景的开发人员都将在本书中发现一些有用和有趣的东西。而且,某些开发人员将会从这本书中获得最大的价值。
初级的软件开发人员,通常是刚从大学毕业或从事编程工作几年的开发者,我们认为他们是本书的核心读者。你将了解一些基本的主题,我们希望这些主题与你的整个软件开发生涯都是息息相关的。不要求读者一定有大学学历,但是要知道编程的基础知识,这样才能更好地利用本书。例如,我们不会解释if语句是什么或循环是什么。
你不需要了解太多关于面向对象或函数式编程的知识就可以开始阅读本书。在第2章中,除了假设你已知道类是什么并且能使用集合和泛型(例如,List)之外,我们没有做其他任何假设。我们是从基础开始的。

另一个对本书特别感兴趣的群体是正在学习Java的开发人员,他们可能熟悉其他编程语言,如C#、C 或Python。这本书帮助你快速掌握语言结构,以及编写好的Java代码所必需的原则、实践和习惯用法。

如果你是一名很有经验的Java开发人员,你可能想跳过第2章,以避免重复你已经知道的基本内容,但是第3章将会包含对许多开发人员都有用的概念和方法。

【示例代码】
可以从https:github.comIteratr-LearningReal-World-Software-Development下载补充材料(示例代码、练习等)。

【推荐序】
软件开发是互联网、软件、工业等行业中最核心的智力活动。需要从业者具备知识的大量输入和高度聚合能力,并在实际业务中,充分运用在软件工程基础理论和实践两大方向所学所感的多种技能。软件工程基础理论的核心是对编程语言和设计模式、设计原则的深刻理解,并将两者融会贯通。工程实践是对各种方法论的理解和使用。
本书通过各章实例,很好地向读者传授了基础和实践相结合的实践方法。项目驱动下的软件设计不再是空谈,我们耳熟能详的SOLID原则、KISS原则、DRY等理论,在各章的实例中准确地指导了项目案例的设计。同时,作者在每章的实践中,展示了在设计模式和原则的指导下,如何优雅地完成编码。
此外,本书还从实践角度展示了工程构建(Gradle)和测试驱动开发(TDD)。通常实际的业务项目都是模块化的,如何利用构建工具对项目进行编译、调试、构建、分发,如何运用TDD等理论实现快速迭代和持续交付,这些都是开发者的基本修养。这本书虽然没有面面俱到地讲到工程实践的完整技术栈,但是开而弗达,将读者引到以工程项目为主视角的设计和开发的正确道路上来。
对初学者来说,通过阅读本书,可以在较短的时间内对软件开发有较清晰的理解,并能产生与自身结合的学习路线图。对于有一些工作经验的开发者来说,本书可以帮助你梳理这些年积累的理论和实践,温故而知新,然后再出发。
阿里巴巴资深Java技术专家,韩陆

【译者序】
Java作为OOP(面向对象编程)的集大成者,融合了其他语言的诸多优点,在经历了多个版本更新之后,它也重新焕发出新的生机,特别是Java 8的发布,更是让开发者体验到了函数式编程的精妙及强大之处。而随着这几年开源社区的蓬勃发展,越来越多的组件、框架、方案如雨后春笋般涌现,现代工程师们大多不用再像前辈们那样从零开始编写代码,而是更多地将精力放在业务功能的实现上,这在很大程度上提高了软件开发的效率。特别是在Java方面,其技术体系之庞大,解决方案之丰富,完全超出任何其他语言平台,可以说,我们遇到任何一种钉子,都能随手找到一大堆锤子。但同时我们也会发现,开发中所遇到的很多问题也并非一个新框架、新方案能完全解决的。以代码级别的扩展性、可维护性等问题为例,它考察的是工程师对常见设计原则、模式的理解,以及对软件工程最佳实践的掌握程度,而这才是工程师真正的核心竞争力!
所以我一直认为,工程师在学习编程技术时,除了要详细了解编程语言的核心API、组件和框架之外,还应该去探索编程语言的最佳开发模式,就像习武之人一样,招数重要,但内功心法更重要。幸运的是,编程语言发展数年,前辈们留下很多已被无数次证明的最佳实践,这些实践经过时间的沉淀和打磨,逐渐形成一套基本的设计原则,它们是超越框架,甚至是超越语言的存在。作为现代工程师,想要获取这些资料易如反掌。由于设计原则或设计模式都是经过高度抽象和提炼形成的,初学者非常容易被各种概念词汇带偏。目前市面上很多模式相关的书籍资料,为了让工程师便于理解,其示例代码都力求简单直接,甚至做了非常多的不切实际的具象化(拟人拟物)。所以现实情况是,很少有资料是以真实的项目迭代为蓝本进行讲解的,这会导致大家即使懂很多道理,但仍写不好代码。
而这本书填补了这方面的空白。首先,本书是以项目驱动式的方式来讲解的,即核心章节都会根据一个项目案例来引出开发过程中遇到的问题,然后引导读者一起去思考这些问题的解决方案,甚至包括一些设计权衡上的讨论。这种结合具体的业务场景进行反复验证、持续迭代的讲解方式,能让读者有身临其境之感。其次,本书在内容上涵盖了工程师必知必会的一些基本设计原则或模式,比如SOLID原则。SOLID是一组旨在帮助开发易于维护的软件的原则集,包括:单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)。书中并不会很生硬地介绍每个原则,而是会根据实际情况来引出这些原则的使用方式。最后,本书还介绍了TDD(测试驱动开发)、流式API、函数式编程等目前比较流行的主题,相信大家同样会有所收获。
当然,由于篇幅有限,本书不可能全面介绍上述所有内容,很多时候只是给读者指明一个思考的方向,同时在很多问题上,作者并不会很武断地表达出对某种设计选型上的肯定或否定。一般情况下,我们需要根据实际情况做出选型上的权衡,以找出当下的最优解。假如我们总是期望在最开始就能找到一个绝对正确的答案,很可能会失望而归。
本书的两位作者在Java领域都有一定的造诣,他们曾在多个大型国际会议上发表过精彩的主旨演讲,同时也是多本畅销书的作者,比如Raoul-Gabriel Urma博士曾出版过《Java 8实战》,而Richard Warburton博士曾出版过《Java 8函数式编程》,这两本书可谓是学习Java 8的必备资料,大家应该都比较熟悉。由如此经验丰富的作者来执笔,本书在质量上也是经得起推敲的。
由于我是第一次翻译整书,所以刚拿到原著时,比较担心自己能否准确地呈现原著之意,好在快速读完原著之后,发现书中所讲内容也是自己多年来心中所思所想,所以翻译过程比较顺利,竟然实现了人生第一次提前交稿。不过由于译者水平有限,书中所译内容难免存在词不达意的情况,在此也请各位读者朋友批评指正。我的邮箱是angel6380@126.com,对书中有任何疑问,都可以通过该邮箱联系我,谢谢!
在本书的翻译工作完成之际,我首先要感谢机械工业出版社华章公司王春华老师的信任,在今年年初,正是她询问我是否有兴趣翻译本书,最终才促成了这次合作。然后非常感谢本书的责任编辑李忠明老师,在翻译过程中他帮我解答了大量问题。
最后,感谢家人、朋友的支持与陪伴,你们是我前进路上的最大动力!
內容試閱
【前言】
掌握软件开发需要学习一组完全不同的概念。无论你是一名初级的软件开发人员,还是更有经验的开发高手,这看起来都是一个不可逾越的障碍。你是否应该花时间去学习面向对象世界中既有的主题,比如SOLID原则、设计模式或测试驱动开发?你是否应该去尝试一些越来越流行的东西,比如函数式编程?
即使你已经选择了一些主题来学习,通常也很难确定它们是如何结合在一起的。什么时候应该在项目中应用函数式编程思想?什么时候担心测试问题?如何知道在什么时候引入或改进这些技术?是否需要读一本关于这些主题的书,然后再读一些博客文章或看视频来弄清楚如何把这些主题结合在一起?该从哪里开始呢?
不用担心,本书就是来帮助你的。它将通过一个综合的、项目驱动的方式来帮助你学习。你将学习成为一名高效的开发人员所需了解的核心主题。不仅如此,我们还展示了如何将这些东西组合起来,以应用于更大的项目。

【为什么写作本书】
多年来,我们在教授开发人员编写代码方面积累了丰富的经验,我们都写过关于Java 8的书籍,并围绕专业软件开发运营了一些培训课程。在这个过程中,我们被认证为了Java Champion并成为多个国际会议的演讲者。
这些年我们发现许多开发人员都可以从几个核心主题的介绍或复习中受益。通过实践,通常可以很好地覆盖到设计模式、函数式编程、SOLID原则以及测试,但是很少看到它们如何良好地工作以及相互配合。人们有时甚至会因为对学习内容的选择性麻木而放弃提高自己的技能。我们不仅想教授人们核心技能,而且还要以一种容易接近和有趣的方式来做这件事。

【面向开发者的方式】
本书也给了你一个以面向开发者的角度去学习的机会。书中包含大量的代码示例,每当我们引入一个主题时,都会提供具体的代码示例。你可以获得书中项目的所有代码,因此,如果你想继续学习,甚至可以在集成开发环境(IDE)中单步调试书中的代码,或者运行程序来尝试它们。
涉及技术的书籍通常是以正式的、讲义式的方式编写的,那不是正常人说话的方式!本书采用会话式风格,帮助你参与到书的内容中来,而不是被居高临下地教导。

【本书内容】
本书每章都围绕一个软件项目展开。在每章的结尾,如果你一直在跟进,应该能够编写出那个项目。这些项目一开始是简单的命令行批处理程序,但随着复杂度的增加,它们会发展成功能齐全的应用程序。
你将从项目驱动的结构中以多种方式获益。首先,你将看到不同的编程技术如何在集成环境中协同工作。当我们在本书的最后部分看到函数式编程时,它不仅仅是抽象的集合处理操作,而是为了计算所讨论的项目中要使用的实际结果而提出的。这解决了一个问题,那就是:对于教学资料中看起来很好的想法和方法,开发人员经常会不恰当地或脱离上下文地使用它们。
其次,项目驱动的方法有助于确保在每个阶段都能看到实际的示例。教学资料中经常有很多被称为Foo的示例类和被称为bar的方法。而我们的示例与所讨论的项目相关,并展示了如何将这些想法应用到实际问题中,这些问题类似于你在职业生涯中可能会遇到的那些问题。
本书每章都是一个全新的项目,是一个学习新事物的新机会。我们希望读者能从头到尾读完本书,并且真正享受阅读的过程。这些章节以一个将要解决的挑战开始,带你去了解它的解决方案,然后通过评估你学到了什么以及如何解决这个挑战来结束。我们在每章的开头和结尾都特别指出这个挑战,以确保你清楚它的目标。

【本书目标读者】
我们相信,各种不同背景的开发人员都将在本书中发现一些有用和有趣的东西。而且,某些开发人员将会从这本书中获得最大的价值。
初级的软件开发人员,通常是刚从大学毕业或从事编程工作几年的开发者,我们认为他们是本书的核心读者。你将了解一些基本的主题,我们希望这些主题与你的整个软件开发生涯都是息息相关的。不要求读者一定有大学学历,但是要知道编程的基础知识,这样才能更好地利用本书。例如,我们不会解释if语句是什么或循环是什么。
你不需要了解太多关于面向对象或函数式编程的知识就可以开始阅读本书。在第2章中,除了假设你已知道类是什么并且能使用集合和泛型(例如,List)之外,我们没有做其他任何假设。我们是从基础开始的。

另一个对本书特别感兴趣的群体是正在学习Java的开发人员,他们可能熟悉其他编程语言,如C#、C 或Python。这本书帮助你快速掌握语言结构,以及编写好的Java代码所必需的原则、实践和习惯用法。

如果你是一名很有经验的Java开发人员,你可能想跳过第2章,以避免重复你已经知道的基本内容,但是第3章将会包含对许多开发人员都有用的概念和方法。

【示例代码】
可以从https:github.comIteratr-LearningReal-World-Software-Development下载补充材料(示例代码、练习等)。

【推荐序】
软件开发是互联网、软件、工业等行业中最核心的智力活动。需要从业者具备知识的大量输入和高度聚合能力,并在实际业务中,充分运用在软件工程基础理论和实践两大方向所学所感的多种技能。软件工程基础理论的核心是对编程语言和设计模式、设计原则的深刻理解,并将两者融会贯通。工程实践是对各种方法论的理解和使用。
本书通过各章实例,很好地向读者传授了基础和实践相结合的实践方法。项目驱动下的软件设计不再是空谈,我们耳熟能详的SOLID原则、KISS原则、DRY等理论,在各章的实例中准确地指导了项目案例的设计。同时,作者在每章的实践中,展示了在设计模式和原则的指导下,如何优雅地完成编码。
此外,本书还从实践角度展示了工程构建(Gradle)和测试驱动开发(TDD)。通常实际的业务项目都是模块化的,如何利用构建工具对项目进行编译、调试、构建、分发,如何运用TDD等理论实现快速迭代和持续交付,这些都是开发者的基本修养。这本书虽然没有面面俱到地讲到工程实践的完整技术栈,但是开而弗达,将读者引到以工程项目为主视角的设计和开发的正确道路上来。
对初学者来说,通过阅读本书,可以在较短的时间内对软件开发有较清晰的理解,并能产生与自身结合的学习路线图。对于有一些工作经验的开发者来说,本书可以帮助你梳理这些年积累的理论和实践,温故而知新,然后再出发。
阿里巴巴资深Java技术专家,韩陆

【译者序】
Java作为OOP(面向对象编程)的集大成者,融合了其他语言的诸多优点,在经历了多个版本更新之后,它也重新焕发出新的生机,特别是Java 8的发布,更是让开发者体验到了函数式编程的精妙及强大之处。而随着这几年开源社区的蓬勃发展,越来越多的组件、框架、方案如雨后春笋般涌现,现代工程师们大多不用再像前辈们那样从零开始编写代码,而是更多地将精力放在业务功能的实现上,这在很大程度上提高了软件开发的效率。特别是在Java方面,其技术体系之庞大,解决方案之丰富,完全超出任何其他语言平台,可以说,我们遇到任何一种钉子,都能随手找到一大堆锤子。但同时我们也会发现,开发中所遇到的很多问题也并非一个新框架、新方案能完全解决的。以代码级别的扩展性、可维护性等问题为例,它考察的是工程师对常见设计原则、模式的理解,以及对软件工程最佳实践的掌握程度,而这才是工程师真正的核心竞争力!
所以我一直认为,工程师在学习编程技术时,除了要详细了解编程语言的核心API、组件和框架之外,还应该去探索编程语言的最佳开发模式,就像习武之人一样,招数重要,但内功心法更重要。幸运的是,编程语言发展数年,前辈们留下很多已被无数次证明的最佳实践,这些实践经过时间的沉淀和打磨,逐渐形成一套基本的设计原则,它们是超越框架,甚至是超越语言的存在。作为现代工程师,想要获取这些资料易如反掌。由于设计原则或设计模式都是经过高度抽象和提炼形成的,初学者非常容易被各种概念词汇带偏。目前市面上很多模式相关的书籍资料,为了让工程师便于理解,其示例代码都力求简单直接,甚至做了非常多的不切实际的具象化(拟人拟物)。所以现实情况是,很少有资料是以真实的项目迭代为蓝本进行讲解的,这会导致大家即使懂很多道理,但仍写不好代码。
而这本书填补了这方面的空白。首先,本书是以项目驱动式的方式来讲解的,即核心章节都会根据一个项目案例来引出开发过程中遇到的问题,然后引导读者一起去思考这些问题的解决方案,甚至包括一些设计权衡上的讨论。这种结合具体的业务场景进行反复验证、持续迭代的讲解方式,能让读者有身临其境之感。其次,本书在内容上涵盖了工程师必知必会的一些基本设计原则或模式,比如SOLID原则。SOLID是一组旨在帮助开发易于维护的软件的原则集,包括:单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)。书中并不会很生硬地介绍每个原则,而是会根据实际情况来引出这些原则的使用方式。最后,本书还介绍了TDD(测试驱动开发)、流式API、函数式编程等目前比较流行的主题,相信大家同样会有所收获。
当然,由于篇幅有限,本书不可能全面介绍上述所有内容,很多时候只是给读者指明一个思考的方向,同时在很多问题上,作者并不会很武断地表达出对某种设计选型上的肯定或否定。一般情况下,我们需要根据实际情况做出选型上的权衡,以找出当下的最优解。假如我们总是期望在最开始就能找到一个绝对正确的答案,很可能会失望而归。
本书的两位作者在Java领域都有一定的造诣,他们曾在多个大型国际会议上发表过精彩的主旨演讲,同时也是多本畅销书的作者,比如Raoul-Gabriel Urma博士曾出版过《Java 8实战》,而Richard Warburton博士曾出版过《Java 8函数式编程》,这两本书可谓是学习Java 8的必备资料,大家应该都比较熟悉。由如此经验丰富的作者来执笔,本书在质量上也是经得起推敲的。
由于我是第一次翻译整书,所以刚拿到原著时,比较担心自己能否准确地呈现原著之意,好在快速读完原著之后,发现书中所讲内容也是自己多年来心中所思所想,所以翻译过程比较顺利,竟然实现了人生第一次提前交稿。不过由于译者水平有限,书中所译内容难免存在词不达意的情况,在此也请各位读者朋友批评指正。我的邮箱是angel6380@126.com,对书中有任何疑问,都可以通过该邮箱联系我,谢谢!
在本书的翻译工作完成之际,我首先要感谢机械工业出版社华章公司王春华老师的信任,在今年年初,正是她询问我是否有兴趣翻译本书,最终才促成了这次合作。然后非常感谢本书的责任编辑李忠明老师,在翻译过程中他帮我解答了大量问题。
最后,感谢家人、朋友的支持与陪伴,你们是我前进路上的最大动力!

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.