找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 388285|回复: 0

你的烂代码终于有了解决方案

[复制链接]

该用户从未签到

发表于 2021-5-4 10:55:25 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
设计模式本身是一种通用场景的解决标准和方案,而不是实际场景开发落地的指导手册。这种通用的解决标准和方案是研发人员在大量的项目中验证和提炼的结果,如果只是学习理论知识,没有经历过大型的项目开发,则很难理解和使用设计模式。
[list,
[*,这个需求很简单,不用设计模式一样可以实现;
[*,用设计模式浪费时间,无法满足工期要求;
[*,想不到用哪种设计模式,即使知道也不会用。
[/list,但如果是一位有追求的程序员,愿意看到自己的代码是一堆if…else吗?
如果每个模块的功能逻辑实现都是靠复制粘贴,那么功能上线后一旦出现Bug,很难及时发现和解决问题。
除了个人对代码质量追求的因素,还有业务快速发展和产品功能迭代的需求因素。如果程序没有经过良好的设计,只是为了应付一次紧急的需求而东拼西凑开发的,接下来的日子就是没日没夜地修修补补。
好的功能设计可以应对快速的需求迭代,在迭代开发的同时不需要大量改动代码。就像火车加一节车厢不需要改动整列火车,插线板可以支持随时插入各种功能插头,签字笔没墨水了可以更换笔芯等一样。对应这样的代码更像是有了一个标准接口,服务是可插拔的。
整体的服务功能更像是定义好的机器,所有的功能逻辑都像插入的一个个模块。这样的编码方式就会变得非常易于维护,同时也符合设计模式的思想。设计模式本身来自建筑学,而编码逻辑按照建筑学的方式进行,也就满足了设计模式的基本原则:做出一个可扩展、易维护、好管理的工程代码。
这就是为什么应该使用设计模式开发业务需求。

                               
登录/注册后可看大图

很多东西即使摆在我们面前也看不见,就像有句话:“人生没有选择,很多选项只是摆设。”
为什么会说到这些呢?因为有些程序员是有视觉盲区或知识盲区的,主要因为程序员的工作是在承接产品需求,除此之外对业务发展、运营思路、ROI、KPI、GMV、DAU等数据是不关心或关心不到的。
如此一来就会导致一个问题,研发人员和产品经理在对接需求时,虽然在某种程度上达成了共识,但可能某些时候是存在一些目标差异的。而这个差异就是研发人员在做程序设计实现时,是否可以为业务发展和产品迭代留出相应的扩展,以及是否存在过度设计。
所以,当面对一些较简单的业务功能时,产品经理和研发人员之间并不会产生矛盾;一旦面对复杂的和快速迭代的场景需求,简单的实现可能就会变得非常麻烦,从而造成矛盾。而研发人员理解的业务经验往往也驱动着他们最终的编码实现。
使用设计模式并不像解答数学题一样有固定的公式可以套用。设计模式提供的是面对各种复杂场景中常规的解决方案,具体到实际业务中,其逻辑实现是千差万别的。所以,在学习的过程中不能生搬硬套,要活学活用。可以找一些if…else特别多的场景,尝试通过设计模式优化代码,这样能真正学会设计模式。
同时,研发人员不仅要关注自己的编码,还要多参加业务人员、产品经理、运营人员的会议,多方面了解业务需求,才能构建出更加合理的程序。
设计模式该怎样学
为了更好地接受设计模式的思想,避开理论设计模式中的简单模型案例,从真实的业务场景中提取相应的开发需求,作为学习指导思路的案例,推荐你看一下小傅哥的新书《重学Java设计模式》。
小傅哥的重学Java设计模式文章全网阅读超500万次,持续霸榜GitHubTrending!让你能真真切切地感受到设计模式的魅力。当设计模式的思想与自己的开发思路融合后,再勤加练习,就能在设计模式的基础上构建出更加合理的代码。

                               
登录/注册后可看大图

▊全网爆文【字节跳动总结的设计模式】的作者所著《重学Java设计模式》终于正式出版
付政委(小傅哥)

                               
登录/注册后可看大图

一线互联网 Java 工程师、架构师,开发过交易、营销类项目,实现过运营、活动类项目,设计过中间件,组织过系统重构,编写过技术专利。不仅从事业务系统的开发工作,也经常做一些字节码插桩类的设计和实现,对架构的设计和落地有丰富的经验。在热衷于Java语言的同时,也喜欢研究中继器、I/O板卡、C#和PHP,是一个技术活跃的折腾者。常逛GitHub,乐于分享技术文章。
沉淀、分享、成长,让自己和他人都能有所收获!
▊ 这本书适合哪些读者?
[list,
[*,具备一定编程基础在工作1-3年的研发人员
[*,希望通过此书提升编码思维,剔除到代码中的坏味道
[*,有意愿成为架构师,但还处在一定瓶颈期
[*,学习过设计模式,可是一直想找到一本可以落地真实场景参照的书籍
[/list,▊ 通过这本书能学到什么?
[list,
[*,优化平时开发中的ifelse语句,让代码更加整洁
[*,看设计模式不再是用理论生搬硬套,这次可以有点用
[*,站在更高的角度去看待编程开发,学会更多的面向对象的思维,尤其是;接口、抽象类、多态等使用
[*,升职、加薪,良好的代码是效能提升的基础,成为本组编码最靓的精神小伙
[/list,▊ 全书彩印、标配源码、动画图稿、类图添加、内容夯实
[list,
[*,有趣的例子,精美的插画,结合实战的案例讲解,有良好的阅读体验!
[*,基于小傅哥多年的经验撰写,没有晦涩难懂的理论说教,深入浅出地讲解设计模式精髓。
[*,从容应对复杂变化的业务需求,写出易维护、可扩展的代码结构!
[*,配套源码,此源码会不断接受反馈并更新。
[/list,

                               
登录/注册后可看大图


                               
登录/注册后可看大图

▊ 强大的推荐天团
本书从六大设计原则入手,警示我们在日常开发过程中需要注意代码的编写原则。同时,本书列举了大量生动形象的例子,在遇到相关业务场景时可以把代码写得非常漂亮。原则既是规范,也是日常开发过程中要遵守的约定;设计模式是在业务场景下能够使用的工具。遵守原则并在合适的场景下用合适的工具,你的代码将无懈可击!
——cxuan,微信公众号“程序员cxuan”作者
《重学 Java 设计模式》系列文章的第一篇就成功地把我吸引了,我也是从这个系列文章开始关注小傅哥的。市面上有关设计模式的书已经有很多了,但还是缺少让人眼前一亮的作品。本书通过有趣的例子,配合形象的图片,结合实战案例讲解设计模式的方式妙极了!文中的每一个细节无不透露着作者的用心。其实每一种设计模式都不难理解,不光需要我们再学习,最重要的是要不断地实践。如果你细心思考并实践本书中的每一个案例,那么对设计模式的理解一定会更上一层楼!
——Guide哥,GitHub开源项目JavaGuide作者
很久之前看到过一本关于设计模式的电子书,当时看了内容就觉得总结得很棒,如今终于出版了。虽然设计模式晦涩难懂,但作者基于自己多年的经验,将这些知识深入浅出地讲解了出来,实在难得,适合每一位开发者学习。
——Hollis,《程序员的三门课》联合作者,微信公众号“Hollis”作者
本书基于互联网真实案例编写,通过交易、营销、规则引擎和中间件等多个场景的设计和开发,让读者对设计模式有全面、彻底的认识,帮助读者灵活地使用各种设计模式。
——敖丙,微信公众号“三太子敖丙”作者
设计模式是程序员的基本功,看似用不到,却可以在无形之中增加我们对框架和功能的理解深度。如何灵活地组织代码,将复杂的业务模块解耦?如何抽象出可复用的代码框架?本书结合实际场景和代码实现,深入浅出地讲解设计模式,对于想要提升编程内功的小伙伴来说很有帮助。
——付东来,IT图书《labuladong的算法小抄》作者
掌握设计模式,对每一位开发者都是至关重要的。本书通过大量真实的业务开发案例,结合诸多常用的框架源码,生动形象地讲述了各种设计模式的思想和应用,非常值得阅读!
项目会迭代和发展,随之代码量也会越来越庞大。代码是否易于维护和理解,显得尤为重要。要实现这一目标,离不开设计模式的灵活运用,本书讲的就是这项重要技能。
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-12-23 08:04

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表