读书笔记 - 码农心得(重学Java设计模式)
粗暴的开发方式可以归纳为三步:定义属性,创建方法,调用展示。虽然初次实现很快,但不便于后期维护和扩展。
真正好的代码不只为了完成现有功能,更会考虑后续扩展。在结构设计上,讲究松耦合、易读和易扩展。在领域实现上,做到高内聚,不对外暴露实现细节,不被外部干扰。这就像家庭的三居室(MVC)、四居室(DDD)的装修,绝不允许把水电管线裸漏在外面,也不允许把马桶装到厨房,更不会把炉灶安装到卫生间。
视觉盲区决定了你的选择。
同样一本书、同样一条路、同样一座城,真的以为生活中有选择吗?有时候很多选项只是摆设,给多少次机会我们选择的都是一模一样的。这不是如何选的问题,而是认知范围决定了下一秒做的事情,下一秒做的事情又影响了再下一秒的决定。就像管中窥豹一样,总有一部分视野是黑色的,会被忽略掉,而这看不到的部分却举足轻重。但人可以学习,可以成长,可以脱胎换骨,可以努力付出,通过一次次的蜕变拓展自己的视野。
代码一把梭,兄弟来背锅。
大部分从事开发工作的技术人员,都有一颗把代码写好的初心。除了把编程当作一份工作,同时还具备了一定的工匠精神。但很多时候又很难把初心坚持下去,尤其面对接了烂手的项目、产品功能要得急迫、个人能力不足等问题时,这些原因导致开发的工程代码臃肿不堪,线上事故频出。
懂得高并发,可还写不好代码。
这就像家里装修完之后购买家具,花了几十万元买的实木沙发,怎么摆放也不好看!代码写得不好,不一定是基础经验不足,也不一定是产品需求要得急迫。很多时候是自己对编码经验掌握得不足,以及对架构的把控能力不到位。其实,大多数产品的第一个需求往往并不复杂,甚至可以说所见即所得般容易。但在接手开发时,如果不考虑后续是否需要扩展,将来会在哪些模块继续添加功能,这样的“病毒代码”就会随着种下的第一颗劣质种子开始蔓延。
只有标准的研发规范流程,才能写出更好的程序!
一个项目的上线往往要经历业务需求、产品设计、研发实现、测试验证、上线部署后最终对外开量。对研发人员来说,非常重要的一环是研发实现,又包括架构选型、功能设计、设计评审、代码实现、代码评审、单测覆盖率、编写文档及提交测试。所以,如果一个大项目由多人开发,研发人员之间一定要遵守研发规范并互相协作。
代码开发不是炫技,就像盖房子一样,如果不按照图纸修建,随意地造出一间厨房或卫生间是很荒唐的,但研发人员有时却总敲出这样不规范的代码。
程序员中有两类人:一类是喜欢编程的人;一类是仅把编程当作工作的人。喜欢编程的人会主动学习,不断丰富自己的知识,也非常喜欢对技术进行深度的探索,力求将所学的知识运用到工作中。
怎样成为喜欢编程的人?
其实无论做哪一行,凡是能达到喜欢这个行业的程度,往往是从这个行业里持续不断地积累并获取成就感开始的。对于编程开发而言,因为自己的一行代码能影响到千千万万的人,能使整个系统更加稳定,能让系统扛过大促、秒杀……这样一行行的代码都是日积月累学习的经验结晶。想源源不断地获得成就感,需要程序员持之以恒地探索知识、运用知识、验证知识,开发更多的核心业务系统。
方向不对,努力白费。
有些人平常也付出了很多时间学习,但没有取得多少效果。很多研发人员问我,该怎样学习一个之前没有接触过的技术?以我个人的经验,先不要学太多理论性的内容,而是要多尝试实践操作验证。这就像买了自行车,是先拆了看看运转原理是什么,还是先骑起来转几圈呢?
书不是看的,是用的。
关于新知识的学习方法,有很多初入研发编程行业的人员会有疑虑,就像明明看了、看的时候也懂了,但到实际使用的时候却用不上?其实这涉及对知识的理解程度,更重要的是动手实践能力。有的研发人员往往把看视频学习当作看电影,把看书学习当作看故事,在学习过程中没有经过深度思考,也没有实践操作,所以也就没有学会这些知识。只有把它用起来,逐字逐句地深挖,一点一滴地探求,把各项遇到的盲点全部扫清,才能真正掌握这些技能。
研发人员在编程开发时,除了编写正常流程,更多的时候会考虑异常流程。就像脑筋急转弯:树上有7只鸟,打死1只树上还剩下几只?我们可能会说,其他鸟飞走了,树上没有了。但在实际的编程开发中会考虑更多的情况,比如剩下6只鸟是真鸟还是假鸟、它们听力有没有障碍、有没有被绑在树上、枪声是否把其余6只震晕等。而这些奇怪的情况往往也是用户的行为体现到程序编码里的反映。
有些程序员在工作一段时间后都会想办法提升自己的技术栈能力,也是为了后续可以写出更好的程序。通常会尝试阅读一些源码,如 Spring、MyBaits、Dubbo 等。但在阅读时会发现,这件事并不那么容易。因为一个框架源码随着不断地迭代,会变得越来越复杂;同时,在框架代码中不仅