重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容介绍了“如何写出好的代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 创新互联公司是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于做网站、网站制作、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!
写好注释
写代码这件事情,大概就是一时编程一时爽,过后调试火葬场
阿粉有过一次经历,就是当时开发任务紧,把功能实现之后就完事儿了,也没有好好写注释。结果过了两三个月之后,那个功能因为需求变动出 bug 了,出了 bug 就去解决呗
但是!!!因为阿粉没有写注释,当时的实现逻辑,为什么这样写全忘了,所以相当于又重头捋了一遍逻辑,那个味道,真是酸爽
图片
所以阿粉要把这个建议放在第一个!
写注释的时候,如果逻辑比较复杂,可以先写一下大体思路,然后下面具体实现时再详细写,比如阿粉曾经写过的代码(做了脱敏处理,大家不要太较真啦,重点是阿粉写的注释
/** * 进行 XX 操作时调用此方法,用来向数据库插入数据 * @param saveModel 要插入的数据 * @return 是否保存成功 * * @author a'fen * @date 2020-10-17 23:50:45 */ public Boolean isSaveSuccess(SaveModel saveModel) { /* 整体思路: 1 接收传入的所有 id/name 的信息 2 插入相关信息 2.1 XX 信息插入成功之后,再去 YY 表进行相关信息插入 3 对 YY 表进行插入时,先判断是否有相关信息,如果有则进行更新,如果没有则直接插入 4 是否添加 AA ,如果业务上配置了 AA ,则需要将相关内容更新到 ZZ 表中 注: 在 BB 界面点击下一步时,已经将相关信息插入到了 ZZ 表中 所以在这里只做更新即可 */ // 1 接收传入的所有 id/name 的信息 // 创建 xxList 用来接收所有的 id/name 的信息 ListxxList = new ArrayList<>(); // 对传入的信息按照 id 进行排序,方便接下来的操作 saveModel.getIdList().stream.collect(Collectors.groupingBy(SaveModel::getId)) .forEach((String mapKey, List save) -> { xxList.addAll(save); }); // 2 插入相关信息 // 循环 xxList for (XXModel model : xxList) { // 向 XX 表插入信息 实现代码 // 2.1 插入成功,去 YY 表做相关信息插入 实现代码 } // 3 对 YY 表进行插入时,先判断是否有相关信息,如果有则进行更新,如果没有则直接插入 实现代码 // 4 是否添加 AA ,如果业务上配置了 AA ,则需要将相关内容更新到 ZZ 表中 实现代码 }
在写代码之前,先想想可能的应用场景
有时候拿到需求之后,如果着急去做,后期可能会耗费不少的精力
阿粉曾经做过一个业务,类似用户充值的场景,当时阿粉拿到这个需求之后,就想着不就是充值钱嘛,那就定义一个 Integer 类型不就完了,然后一顿操作猛如虎,上线之后也没啥问题
结果有一次公司运营和其他一些第三方合作,用的就是充值这个接口,然后因为运营大批量的持续充值,直接超出了 Integer 的允许范围,导致整条业务线都没办法跑通
然后排查问题排查到最后,发现是阿粉造成的,而且还是因为一个数据类型引发的...阿粉当时真的是想钻到地下
代码是写给人看的,所以让自己的代码干净整洁一些
代码是写给人看的,不是写给机器看的。你想嘛,如果想要让机器看,直接写 0110001 这种编码方式不香吗!毕竟机器它只认 0 或者 1
所以代码是写给人看的,那么写代码的时候就让它干净整洁一些
比如:该缩进的缩进,该空一行的就空一行,比如下面这样:
public static void sleep(long millis, int nanos) throws InterruptedException { if (millis < 0) { throw new IllegalArgumentException("timeout value is negative"); } if (nanos < 0 || nanos > 999999) { throw new IllegalArgumentException( "nanosecond timeout value out of range"); } if (nanos >= 500000 || (nanos != 0 && millis == 0)) { millis++; } sleep(millis); }
要缩进有缩进,该空一行就空一行,不用你们夸,我自己都觉得这代码写的,真是好!(Thread 源码谁敢说不好?!
没事儿就和阿粉多聊聊源码
其实想要写一手好的代码,最重要的就是要多看,自己多写
看什么呢?阿粉觉得看源码就够了。JDK 源码这么多人都在用,足以说明 JDK 源码的代码写的有多优秀
所以呢,没事儿就和阿粉多聊聊源码,没事儿就约约阿粉去图书馆一起研究研究源码,平时自己写代码的时候,多注意借鉴从源码中学到的实现思路,学到的编程技巧,日积月累下来肯定能在编程上有一个很好的提升
“如何写出好的代码”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!