或许是我变强了
前几天,在股东群里看到一条消息:“感觉这个代码注释不太够啊”。我默默打开了austin项目,在核心流程上翻了些代码,自我感觉良好,注释应该是有的才对。
当然了,跟下图这种顶级开源组件,注释是没法比的,这种要求确实很高了,就不亚于在注释里写文档了。
我在初学的时候,会写很详细的注释。说到这,我这去翻下我以前初学时的代码,举例给你们看看:
工作了几年以后,看了不少系统,也发现很多人写的注释其实是没有意义的,在些无关紧要的地方写下注释,这些注释看了好像跟没看一样:
// 打印日志
log.info("austin");
// 创建Map
Map<String, String> map = new HashMap<>();
// 把List集合所有元素清空
list.clear();
// 把HashSet对象添加至List集合
list.addAll(set);
后来,我习惯在自认为有必要的地方才加上对应的注释。一般是为了讲述业务逻辑的流程(写在类或方法上),亦或是用注释隔断代码块分割逻辑(写在方法内)。
/**
* 获取 contentModel,替换模板msgContent中占位符信息
*/
private static ContentModel getContentModelValue(MessageTemplate messageTemplate, MessageParam messageParam) {
// 得到真正的ContentModel 类型
Integer sendChannel = messageTemplate.getSendChannel();
Class<? extends ContentModel> contentModelClass = ChannelType.getChanelModelClassByCode(sendChannel);
// 得到模板的 msgContent 和 入参
Map<String, String> variables = messageParam.getVariables();
JSONObject jsonObject = JSON.parseObject(messageTemplate.getMsgContent());
// 通过反射 组装出 contentModel
Field[] fields = ReflectUtil.getFields(contentModelClass);
ContentModel contentModel = ReflectUtil.newInstance(contentModelClass);
for (Field field : fields) {
String originValue = jsonObject.getString(field.getName());
if (StrUtil.isNotBlank(originValue)) {
String resultValue = ContentHolderUtil.replacePlaceHolder(originValue, variables);
Object resultObj = JSONUtil.isJsonObj(resultValue) ? JSONUtil.toBean(resultValue, field.getType()) : resultValue;
ReflectUtil.setFieldValue(contentModel, field, resultObj);
}
}
// 如果 url 字段存在,则在url拼接对应的埋点参数
String url = (String) ReflectUtil.getFieldValue(contentModel, LINK_NAME);
if (StrUtil.isNotBlank(url)) {
String resultUrl = TaskInfoUtils.generateUrl(url, messageTemplate.getId(), messageTemplate.getTemplateType());
ReflectUtil.setFieldValue(contentModel, LINK_NAME, resultUrl);
}
return contentModel;
}
对于总体的系统架构或者系统流程,或是觉得有比较难懂的地方,我一般会单独写成文档。
我写了几年博客了,对我比较好的评价就说我的博客写得通俗易懂。我翻看自己写的博客,我也认为自己写得不错。
我在初学的时候,看过太多的博客了,那时候他们写的内容,有好多我都理解不了。后来我理解透了以后,发现明明就不是复杂的东西,但是从他们博客上就是看不懂,我很简单的就能想到:他们根本就不懂初学者。
所以,后来我大多数博客都是以初学者的角度去写的,按着我学习的思考思路和过程,一般写得也比较详细。所以吧,往往我看到通俗易懂的文章了以后,会想,有没有可能是写博客的人把这知识讲述变简单了,而不全是自己的理解能力。
工作了几年以后,我逐渐也偏向省略些基础内容了。
-
觉得这块以前就写过了,引用个文章就算了,但是却好像没几个人会点击这个引用的文章。 -
觉得能看这篇文章的人,应该有相关基础了,没必要再重复讲述某个基础细节了。
如果austin算是没有什么注释的话,那去到公司看项目代码,那就更坑爹了。大多数开发真的不太愿意写文档,写注释,无论大厂还是小厂,很多都一样的,业务和细节就是口口相传。如果你遇到的项目注释和文档都很齐全,那你真的是维护了宝藏系统。
回到项目代码上,注释是一方面,另一方面,其实无论是谁看别人代码,在最开始看的时候,都是会感到陌生的。只要有某个地方卡住了,在代码里没看到对应的注释,都不会太好受。但,相信我,这肯定是常态。
当遇到好的代码,惊叹下前人的代码是真不错,看看有没有可以借鉴参考的地方,用小本本记下来,绝大多数时候自己也不会复现出来,反正收藏起来可能就是学会了。
现在遇到各种垃圾的硬编码代码,没有任何注释,也没啥感觉了。别人吐槽烂代码的时候,我都会安慰下,让他们看看我遇到过线上环境更烂的代码。
注释变少,文章越写越短,看垃圾代码也不气了,或许是我变强了。
我开通了项目股东服务,已经有不少消息推送平台项目股东拿了阿里/vivo等大厂offer了。我是没找到网上有跟我提供相同的服务,价格还比我低的。
👉一对一周到的服务:有很多人的自学能力和基础确实不太行,不知道怎么开始学习,从哪开始看起,学习项目的过程中会走很多弯路,很容易就迷茫了。付费最跟自学最主要的区别就是我的服务会更周到。我会告诉你怎么开始学这个开源项目,哪些是重点需要掌握的,如何利用最短的时间把握整个系统架构和编码的设计,把时间节省下来去做其他事情。学习经验/路线/简历编写/面试经验知无不言
👉本地直连远程服务:生产环境的应用系统肯定会依赖各种中间件,我专门买了两台服务器已经搭建好必要的环境🙉,在本地就可以直接启动运行体验和学习,无须花额外的时间自行搭建调试。
👉细致的文档&视频:巨细致的语雀文档11W+ 字,共106个文档,项目视频还在持续制作更新中(20个),不怕你学不会。
👉付费社群:优质的社群里需筛选过滤,学习氛围是很重要的,多跟同辈或前辈聊聊,会少走很多弯路💯
如果想获取上面的权益,可以看看👉VIP股东服务