当前位置: 首页 > news >正文

【第21期】以实际项目作驱动,换种方式学Java

Java作为OOP(面向对象编程)的集大成者,融合了其他语言的诸多优点,让开发者体验到了函数式编程的精妙及强大之处。

随着这几年开源社区的蓬勃发展,越来越多的组件、框架、方案如雨后春笋般涌现,现代工程师们大多不用再像前辈们那样从零开始编写代码,而是更多地将精力放在业务功能的实现上,这在很大程度上提高了软件开发的效率。特别是在Java方面,其技术体系之庞大,解决方案之丰富,完全超出任何其他语言平台,可以说,我们遇到任何一种“钉子”,都能随手找到一大堆“锤子”。但同时我们也会发现,开发中所遇到的很多问题也并非一个新框架、新方案能完全解决的。以代码级别的扩展性、可维护性等问题为例,它考察的是工程师对常见设计原则模式的理解,以及对软件工程最佳实践的掌握程度,而这才是工程师真正的核心竞争力!

 

所以,工程师在学习编程技术时,除了要详细了解编程语言的核心API、组件和框架之外,还应该去探索编程语言的最佳开发模式,就像习武之人一样,招数重要,但内功心法更重要。幸运的是,编程语言发展数年,前辈们留下很多已被无数次证明的最佳实践,这些实践经过时间的沉淀和打磨,逐渐形成一套基本的设计原则,它们是超越框架,甚至是超越语言的存在。

 

作为现代工程师,想要获取这些资料易如反掌。由于设计原则或设计模式都是经过高度抽象和提炼形成的,初学者非常容易被各种“概念”“词汇”带偏。目前市面上很多模式相关的书籍资料,为了让工程师便于理解,其示例代码都力求简单直接,甚至做了非常多的不切实际的具象化(拟人拟物)。所以现实情况是,很少有资料是以真实的项目迭代为蓝本进行讲解的,这会导致大家“即使懂很多道理,但仍写不好代码”。

 

本期为大家带来一本《软件开发实践:项目驱动式的Java开发指南》 :填补了这方面的空白。

 

首先,本书是以项目驱动式的方式来讲解的,即核心章节都会根据一个项目案例来引出开发过程中遇到的问题,然后引导读者一起去思考这些问题的解决方案,甚至包括一些设计权衡上的讨论。这种结合具体的业务场景进行反复验证、持续迭代的讲解方式,能让读者有身临其境之感。

 

其次,本书在内容上涵盖了工程师必知必会的一些基本设计原则模式,比如SOLID原则。SOLID是一组旨在帮助开发易于维护的软件的原则集,包括:单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)。书中并不会很生硬地介绍每个原则,而是会根据实际情况来引出这些原则的使用方式。

 

最后,本书还介绍了TDD(测试驱动开发)、流式API函数式编程等目前比较流行的主题,相信大家同样会有所收获。

 

对初学者来说,通过阅读本书,可以在较短的时间内对软件开发有较清晰的理解,并能产生与自身结合的学习路线图。对于有一些工作经验的开发者来说,本书可以帮助你梳理这些年积累的理论和实践,温故而知新,然后再出发。

 

 

简介

主要内容

本书向你展示了如何开发真实项目,并同时学习最佳实践。每一章会聚焦于一个项目,该项目从一个命令行批处理程序开始,然后发展成一个功能齐全的应用程序。如果能够编写基本的Java代码,那么你将学习先进的软件开发实践,以构建现代的、健壮的和可维护的Java软件。

收获

通过阅读本书

了解编写可维护代码的核心设计原则。

增加代码库的灵活性,提升代码可维护性,以及处理异常。

理解如何应用耦合、内聚和SOLID原则。

使用测试驱动开发来处理新的设计问题。

从外到内思考:从全局转移到应用程序领域的核心。

了解函数式编程并学习如何在Java中使用它。

第020期赠书活动中奖名单公布

赠书规则

送书规则:感谢大家对华章图书的信任与支持。围绕Java,留言谈谈你的想法。小编会在留言池随机捞两条锦鲤,分别包邮送出1本正版书籍。

截止日期:9月18日下午17:00

特别注意:请按规则留言。阅读最多、分享最多者优先。

更多精彩回顾

书讯 |9月书讯(下)| 开学季,读新书

书讯 |9月书讯(上)| 开学季,读新书

上新 | 一本书带你吃透Nginx应用与运维
书单 | 开学季——计算机专业学生必读的10本畅销经典

干货 | 巨详细!使用OpenCV和OpenVINO轻松创建深度学习应用

收藏 | 开学季——想打好数学基础?这些经典教材你最需要!

视频 | 4min视频带你了解阿里B2B电商算法

点击阅读全文购买

相关文章:

  • 确定了!图灵奖得主John Hennessy将来CNCC 2020做特邀报告!
  • Webpack优化——将你的构建效率提速翻倍
  • 用 Python 画哆啦 A 梦
  • 红帽资深解决方案架构师魏新宇:云原生应用构建之路
  • 为什么Spark能成为最火的大数据计算引擎?它是怎样工作的?
  • 主题沙龙 | 订阅模式和SaaS 行业的未来
  • 程序员过关斩将——应对高并发系统有没有通用的解决方案呢?
  • 8个流行的Python可视化工具包,总有一款适合你
  • 20张图片梳理工业软件全貌
  • 使用pandas进行数据快捷加载
  • 大数据必备的十大工具
  • SpringBoot基于jar包启动核心原理及流程详解
  • 【第22期】网络安全在身边|最强学习书单整理
  • 从“新基建”重新认识数据中心
  • 还在为面试被问JVM发愁?来看看阿里P7大佬的JVM笔记吧
  • 分享一款快速APP功能测试工具
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • docker容器内的网络抓包
  • JavaScript 一些 DOM 的知识点
  • Python学习之路16-使用API
  • Sublime Text 2/3 绑定Eclipse快捷键
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 百度小程序遇到的问题
  • 编写符合Python风格的对象
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 学习Vue.js的五个小例子
  • 一道面试题引发的“血案”
  • 译有关态射的一切
  • 由插件封装引出的一丢丢思考
  • Android开发者必备:推荐一款助力开发的开源APP
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​queue --- 一个同步的队列类​
  • ![CDATA[ ]] 是什么东东
  • # centos7下FFmpeg环境部署记录
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #Spring-boot高级
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二十四)Flask之flask-session组件
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (数据结构)顺序表的定义
  • .NET delegate 委托 、 Event 事件
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 解决重复提交问题
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET6实现破解Modbus poll点表配置文件
  • //解决validator验证插件多个name相同只验证第一的问题
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @基于大模型的旅游路线推荐方案
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用