开发代码规范和通过规范避坑

目录

一、常规代码规范

二、代码块规范

三、代码块避坑总结

     


        相信所有的开发小伙伴都有自己的开发习惯和写代码的思路。有些可以让你的代码或者阅读星强,或者扩展性强,又或者特定场景下性能非常好。但是有没有一种比较好的方式来规范呢?通常一种规范并不能解决所有问题。但是可以解决70%的常规问题我认为这就是一个好的规范。规范是为了解决我们不小心,或者容易出错的地方。当然也有代码扫描工具可以规避部分代码上的逻辑漏洞如:sonar扫描等。本文重在探讨常规开发过程当中的一些规范动作和代码块的开发逻辑编写。

一、常规代码规范

       常规代码规范目前阿里巴巴的代码规范挺全面。尤其注意分类为高并发的注意非常实用,特别是在生产环境非常多的问题都能够提前规避。这个都是活生生的生产事故才能积累的点,尤为重要。本文主要介绍代码块规范,如果想学习阿里巴巴代码规范可以点击链接进去查看相关规范手册。

        阿里的代码开发规范手册:Java开发手册(嵩山版)-藏经阁-阿里云开发者社区

二、代码块规范

        代码快规范仅仅是本人几年工作经验,大量的生产事故和生产问题排查而引发的一些个人对代码块的规范逻辑。通过该规范可以避免大批量的生产问题,拓展性和可维护性都非常高。当然不能百分百解决所有问题,但是能够规避解决70%左右的生产问题。

        1、代码块的第一个规范,所有的方法不建议超过200行,平均最好50行以内。超过则可读性会非常差。代码块的方法逻辑通过注释编辑。

        2、代码块的逻辑实现。方法逻辑分为如图所示:

                

 

三、代码块避坑总结

        代码块解决问题:

        1、规定方法行数,有超过需要另外起一个方法来解决代码的可读性问题,增强方法的复用性。代码注释由于每一个方法的行数代码都很少,且每个方法都有对应的逻辑注释,可以通过注释快速读懂代码逻辑。代码可维护性增强,特别是两三年之后,以后的同事维护代码更加的轻松快捷。也不会出现“祖传代码”改不动,不敢更改的问题。

        2、代码块逻辑实现。解决问题;

                2.1、分布式事务锁:根据方法是否有高并发增加分布式锁(redis锁等),解决高并发重复处理,也可以一定程度的降低数据库事务出现死锁的概率(一般分布式锁放在事务外层)。

                2.2、查询数据库:通过将查询归类到一个方法里面。目的是为了降低查询数据库的压力,通过将逻辑当中使用的查询都统一做好归口;该查询方法可以查询只读库,不放在事务当中降低事务的执行时长。(重点是降低对数据库连接的占用,降低数据库连接的阻塞。)事务时间过长会出现各种千奇百怪的生产事故,该专题作为以后单独章节。

                2.3、业务核心逻辑:通过将逻辑处理写入到一个方法当中,重点是为了将查询出来的数据做逻辑处理,将查询数据进行加工判断,生成需要新增,删除和修改的数据对象做好封装。(该过程可能存下较多的临时对象,特别是数组较多,需要及时的进行clear;为什么需要clear对象呢?后续会文章单独说明),逻辑清晰只要后续的看逻辑实现方法就可以知道改业务功能的核心逻辑实现,类似将流程图当中的判断都写入其中。此处重点消耗cpu。如果遇到高并发的情况需要考虑逻辑尽量精简。

                2.4、数据落库:将所有对数据库的新增,删除,修改;写入到一个方法当中,同时该方法必须开启事务。通过此方法大大的降低了数据库对表锁的时长,从而也降低了死锁带来的风险。(若分批则需要做异常记录,后续有定时任务补偿处理落库失败的数据。后续会单独章节介绍大数据量的数据处理逻辑和方案。)

                2.5、清理临时变量:主要是将查询出来的临时数组做clear及时清空,用于防止应用内存溢出。

                通过上述的的代码块的编写,可以发现一个业务功能,或者一个方法都可以按照以上步骤编写和设计你的程序,让程序可读性和可复用性都大大提升。重点是该编写逻辑再生产当中解决了大量的生产故障,特别是偶尔出现报错但是在测试环境当中很难复现,非常适合开发同学参照。该代码块经历过2000个并发压测0错误率的问题,且大大降低了数据库的压力。(当然如果专门处理数据库连接我们可以使用流式处理等。)

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值