昨天,团队里的一个女孩突然要求阿芬教她如何写出好的代码。
本着负责任的态度,阿凡专门写了一篇文章。
写注释、写代码,大概就意味着要编程一段时间,然后调试火葬场。
一位粉丝曾经有过没有好好写评论的经历,因为当时开发任务太紧,功能实现之后就结束了。结果,几个月后,由于需求的变化,该功能引入了错误。如果出现错误,只需解决它即可。
但!由于阿凡没有写注释,所以我完全忘记了当时的实现逻辑以及为什么要这样写,感觉就像是从头再来一遍逻辑。
因此,粉丝应该是第一个提出这个建议的人。
写注释的时候,如果你的逻辑比较复杂,可以先写大体思路,等实现的时候再写细节。比如阿芬曾经写过的一段代码(麻木不仁,别太当真,重点是阿芬)用粉色写的注释。
/*** 当执行XX操作向数据库插入数据时调用该方法*
@参数
saveModel 要插入的数据* @return
是否保存成功* * @author
阿芬* @date
2023-10-17 23:50:45*/
民众
布尔值是保存成功
(保存模型){
/*总体思路:1 接收收到的所有ID/姓名信息。 2 插入相关信息。 2.1 XX信息插入成功后,移至YY表,插入相关信息。 3 插入YY表时,首先判断是否有相关信息。如果是,请更新。如果没有,4.是否添加AA。如果您的企业配置了AA,则需要将相关内容更新到ZZ表中。信息已经插入到ZZ表中了,所以这里更新一下即可*/。
//1 接收所有收到的ID/姓名信息
//创建一个xxList来接收所有ID/name信息
ListxxList=新
数组列表();
//将接收到的信息按照ID进行排序,方便下一步操作
saveModel.getIdList().stream.collect(Collectors.groupingBy(SaveModel:getId)).forEach((String mapKey, 保存列表) – {xxList.addAll(save);});
//2 插入相关信息
//循环遍历xxList
为了
(XXModel 型号: xxList) {
//向XX表中插入信息
执行代码
//2.1 插入成功。到YY表中插入相关信息。
实现代码}
//3 向YY表插入时,首先判断是否有相关信息,有则更新,没有则直接插入。
执行代码
//4.是否添加AA。如果您的企业配置了AA,则需要将相关内容更新到ZZ表中。
实现代码}
在编写代码之前,请考虑可能的应用场景。获得需求后匆忙完成这些需求可能会在以后消耗您大量的精力。
曾经有一位粉丝做过类似用户充值场景的业务。粉丝收到这个需求后,以为只是为了充值,所以直接定义了一个整数类型就可以了。就像老虎一样,上线之后就没有任何问题。
结果,公司以前都是和其他第三方合作使用充值接口,但持续的高充值量直接超出了Integer的承受范围,迫使整个业务线都跑不动了。
后来,当我把问题查到底时,才发现原因是阿峰,数据类型就是原因……当时阿峰真的很想转入地下。
代码是为人类阅读而编写的,因此请保持代码整洁。有些代码是为人类而不是机器而编写的。试想一下,如果你想让机器读它,就写它
0110001
这样的编码方式是不是看起来很美味呢?毕竟机器只能识别0或1。
因此,当你编写代码时,一定要保持干净和有条理,因为你的代码是为人们阅读而编写的。
例如:如果需要缩进,想要空行就留空行,像这样:
public static void sleep(long millis, int nanos) throws InterruptedException { if (millis 0) { new IllegalArgumentException(\’超时值为负\’); } if (nanos 0 || nanos 999999) { throw new IllegalArgumentException( \’Nanos } if (nanos=500000 || (nanos !=0 millis==0)) { millis++; } sleep(millis); }如果你想要缩进,我不会留下它。向你致敬,我认为这段代码真的很好!(谁能说线程源代码有什么不好的?
没事就跟阿凡聊聊源码。其实想要写出好的代码,最重要的是自己多读、多写。
你在看什么?粉丝们认为看源码就够了。 JDK源码被大量的人使用,可见JDK源码有多么的好。
所以,当我没事做的时候,我就多跟Afwan 聊源码,当我没事做的时候,我就约Afwan 一起去图书馆,一起研究源码,我一般都会这样写代码。我自己也很想看到更多从源码中学到的实现思路。随着时间的推移积累的编程技巧肯定会带来更好的编程。
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/654944.html