java程序员记录自己开发过程中的一些经验

1.要把业务拆分的细一点,最好就是能像我们要开发一个工具类写一个小方法一样,好处就是调用的时候知道这个方法是做什么的,当业务足够复杂的时候,你验证和排查bug的时候不会怀疑这个方法,不然当你对很多子方法都充满怀疑的时候,你会很奔溃的不知道是哪里的问题,并且当层级比较深的时候,看到后面的方法可能就会忘记前面写了什么玩意哈哈。所以我感觉其实合适的开发顺序应该是自底向上的的,从个人经验来说,并且一定要保证自底向上的的每一个方法的健壮性,这样子开发起复杂的业务的时候才比较舒服。
2.方法的入参细粒度一定要足够小,只传所必须的参数,不传不必要的参数,这样子是为了保证可读性,比如一个方法需要传用户名和密码,就不要把整个user对象传进来。不然时间久了,就不知道这个方法干了什么,你怕还干了一些不好的事情。
3.只要是有阈值的(时间、开关、范围),我觉得都得配置到配置文件,千万不要写死,一定要留有修改的余地。
4.功能模块划分也很重要,老实说这一块我做的也不是很好。很多时候可能追求效率,忽视了设计,这样子在设计复杂的业务时维护起来比较困难。其实就像我们接口都放到controller,数据库操作都放到dao一样,也是为了管理方便。当我们一看到报错的时候,立马就肌肉记忆的知道哪里出问题。所以功能模块划分很重要,比如外部接口调用放到manager,工具放到utils一样。
5.多线程一定要注意不能吃掉异常,然后打印日志要能追踪。
6.下班后不要学习,如果你并不喜欢学习的话。这里一定是会有不同的想法,很正常,谈谈我的理解。
首先上班就已经很累了,这里的累体现在用脑程度,沟通交流,心理压力,还有一些别的杂七杂八的事情可能会影响你。当你不喜欢学习,上完一天班又很累的状态下,学习起来效率很低,很枯燥,就和你晚上加班干活一样,你很难坚持下去。再者,焦虑的人记性差,比如我,学的东西根本记不住,甚至面试的时候根本回忆不起来其中的细节。
教你们一个方法,如果你和我一样只是一个普通的程序员,不用深研其中的原理,只要知道怎么用就行了。我的诀窍就是记住有什么功能,不记住具体使用,等要用的时候再查找(有强大的AI很容易),缺点就是开发起来效率没那么高,所以如果你需求多,可能就不一定适用了。不过主要还是我记性真的特别特别差,AI就相当于我的记忆备份了。所以有时候一看技术水平,我好像不如公司的,但是真的在解决问题,研究新的东西的时候,往往我的综合能力更强。就好像你看有些人打球很花里胡哨,或者有些人看起来功夫很强的,但一面对实际的职业运动员就不行了一样(类比形容,当然夸张了点,实际上我能解决问题,但是我的代码设计水平真的不行)。
7.刚刚第一次严格意义上的自底向上开发,是的,受黑马程序员老师的影响,我的开发风格一直都是自顶向下开发,也就是从接口入口,接口需要返回什么,底层方法再提供什么。这刚开始入门的时候很有用,我知道要什么,我就造什么。但是随着工作时间的推移,越来越发现,这种开发思路存在某种问题,当业务稍微复杂一点,开发起来思路就不清晰了,通常会遇到底层提供不了什么出参,或者底层缺失什么出参的时候就改上层,或者底层需要什么入参的时候,上层取创造什么入参。这就导致你原本上层写的可读性还不错的代码,因为下层方法的需要,进行改造,最后变得杂乱,甚至向上的方法都需要逐一改造。这时候你会陷入严重的自我怀疑,怀疑代码的功能性、健壮性,怀疑自己的开发水平。
通过长期以来的踩坑,我终于悟出来了合理的开发思路。市面上很多教程、包括培训结构都会教你设计模式,但是却没讲到底为什么。你知道这是为了设计规范、增加健壮性和可读性,但是你理解不了,只是生硬照搬,有形而无神,领悟不了精髓,其实对于开发起代码来,可能还变得不好理解了。但是现在我明白了,自顶向下的开发思路就相当于要什么,自底向上就相当于有什么,要什么的时候最后发现某样东西缺失,这时候可能整个结构逻辑都得重新设计,我已经遇到很多次了,这是致命的,浪费了先前的时间,并且后面所剩时间也被压缩,这时候是充满焦虑和紧张的以及自我怀疑。而有什么则不一样了,这相当于调用jdk的方法,工具类的方法,有什么就是什么,当你发现还要其它的时候就会另外从其它地方以别的方式获取。这样子,当你底层的资源都满足的时候,作为上层的方法只要进行组装和处理就可以了。并且当底层的方法进行严格的单元测试之后,你完全不会在遇到逻辑问题时候怀疑底层的方法,就像你不会怀疑jdk的方法一样(几乎)。这样子,当你排查问题的时候,你只需要排查上层的逻辑是否正确而不会每个方法都排查,轻松省力。而自顶向下则不一样了,你的底层方法都是为了满足上层的需求而开发出来的,有时候并不会进行完全的单元测试,因为它不是主动提供者,它是被动创造出来的,所以一旦遇到问题,自我怀疑的时候,可能觉得每个方法都有问题,都需要排查,费时费力,很奔溃,很怀疑人生。
所以对于需求来说,是要什么,我们根据要什么,自底向上的提供有什么。看看最后要的东西还缺失什么,我们是否有某种方式获取,或者创造出来。
…后续补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值