Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么程序员都不喜欢写注释?

为什么程序员都不喜欢写注释?

作者头像
周三不加班
发布于 2023-03-15 07:42:18
发布于 2023-03-15 07:42:18
3780
举报
文章被收录于专栏:程序猿杂货铺程序猿杂货铺

大家好,我是啊粥。

今天我们来聊一下关于代码注释的问题,开始阅读正文之前,你先想 3 个问题:

  1. 你平时写代码的时候会写注释嘛?
  2. 你的注释是怎么样写的,主要都表达些什么?
  3. 你一般会在什么样的代码里写注释?

好了,我们正文开始。

首先,我个人刚开始写代码的时候,非常喜欢写注释,我一般会把代码思路先用文字表述出来。然后分成 1 2 3 4 每一步要干什么,怎么干。

然后写完之后开始在每个步骤下边填代码,这个时期我的代码注释量是非常高的。

但是后来随着技术熟练程度的提高,以及代码水平的提高,我的注释量就逐渐减少了。

并不是我觉得自己牛逼了不用写代码了,也不是我想专门给后人挖坑,纯粹是我觉得不太有必要了。

因为一方面我认为当你可以写出相对比较好的代码的时候,你的代码就是你的注释,你的命名、你的日志以及你的单元测试等等所有东西会共同构建成你的完整注释,最终他们合在一起形成的注释远比你一字一句写出来的注释要更清楚更实用。

并不是只有 // 后写的才叫注释。

通常来说,我们去阅读理解一段代码,一般我们会有下面三种诉求:

  1. 这代码是用来解决什么的问题的?
  2. 怎么使用这段代码,有没有什么注意事项?
  3. 这个代码的实现细节是什么,它是如何运作的?

对于第一点来说,Why 是很重要的,但我们需要知道,【代码注释通常来说都是微观的,不是宏观的】。

对于宏观的东西都会写在需求和设计文档中,那些微观的 Why 如果能写成注释确实是挺好的,因为代码再简单再易读也不会告诉你 Why,这一点上我还是非常认同的。

但同理,这个 Why 写成日志好像也是可以的,比如:“正在解决 XXX 问题...”,你想想是不是这么个道理?

对于第二点来说,怎么使用这个函数,这个类,有没有什么注意事项。

其实,我们需要的可能是一些示例,最好是可以直接拷贝复制后改一改就可以用的示例,毕竟大家都知道写代码的意义就在于是粘贴复制

但是呢,这些示例完全可以写成 Unit Test 单元测试案例,Positive 的案例告诉我们正常应该怎么用,Negtive 的案例告诉我们有哪些注意事项,不要这么用

这比单纯的代码注释要强数百倍,不是吗?

难不成跟具体的例子相比,你更喜欢看一段话,告诉你:“请不要 XXX 使用这个函数”?

对于第三点来说,你要搞清楚代码是怎么运作的,我们每个写代码的人都知道,注释对于你搞清代码是怎么运作的几乎是没有什么帮助的

最好的方式就是打一些断点,然后 Debug 一下代码,看代码运行时的那些 Context(变量里的值,状态,条件,执行路径等)是什么样的

这时,注释是低效的,把这些上下文打在 Debug log 里输出才是最高效的。

生产环境可以选择关掉 Info 或 Debug 级别的日志,然后开发的时候这些日志其实比注释可能还好用(如果 Context 输出比较全,且有规范)。

同时日志开关是自如的,完全可以由我们自己来进行控制,当你遇到 Bug 需要调试的时候你打开丰富的 Debug ,之后你可以再把他调回 Info 或者 Error。

我相信以上观点可能很多人是不认同的,但是我说真的,作为初学者你肯定会有一个需要大量注释的阶段,主要是因为你经验还比较缺乏,所谓没有达到熟能生巧的地步。

但时,当你写代码写的足够久了之后,你会发现写得好的代码是自注释的,代码既注释,而重要的地方才写注释,其实就是日志 ……

当然,还有一种情况我是建议写注释的,那就是二笔产品非要提一个不合理的需求导致你有一个不合理的写法,这个时候我希望你能注明“不是我要这么写的,是产品需求要求这样的,我也没办法的”的无奈,免得下一任接受你代码的人骂娘,说你是个菜鸡。

好了,今天的内容就到这里了。

你也可以留言分享你写注释的一些经验给到我们。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员啊粥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为什么国内程序员不喜欢写单元测试?
今天来探讨一下程序员写单元测试这个事儿,为什么国内程序员不喜欢写单元测试呢?我观察下来大概率是下面几个因素相互作用造成的。‍‍‍‍‍‍
KevinYan
2024/02/23
1680
为什么国内程序员不喜欢写单元测试?
送给程序员的 编程箴言
本文是对一些一线编程实践者们多年工作中感到大有裨益的内容总结,读起来很快,但想要用好可能要花费一生。有些人开发程序十几年,仍要不时停下来想想这行当里的核心部分。
NewBeeNLP
2022/04/15
3080
改掉这14种习惯,初级程序员分分钟进阶高级程序员
很多人也会有这种疑惑,尤其是入行好几年了还是个底层人员的小伙伴,今天就告诉你,你如何晋级为高级程序员。同时也反思下自己还有哪些不足。
学神IT
2019/08/08
4330
码农与程序员,就好比哈士奇与狼
转自~野狗 狼是自然界中真正的掠食者,而哈士奇不过是人类的玩物。两者长得确实很像,就如同IT界的Programmer和Coder。如果用狼和哈士奇来隐喻这两种职业,Programmer无疑是软件业真正
昱良
2018/04/04
6880
码农与程序员,就好比哈士奇与狼
Code Review最佳实践
因为最近在工作上参与制定了团队的一些Code Review(CR)的规范,所以想在这里给大家分享一下我们积累的一些CR最佳实践。本篇文章会包括下面这些内容:
进击的大葱
2022/08/22
9310
有哪些老鸟程序员知道而新手不知道的小技巧?自我感受
最近在朋友圈看到别人分享的一篇知乎回答:https://www.zhihu.com/question/36426051/answer/76031743
深蓝studyzy
2022/06/16
2320
2014,成为更好程序员的7个方法
英文原文:7 Ways to be a Better Programmer in 2014
Isaac Zhang
2019/09/11
4420
38件程序员应该知道的事儿
在一次迭代开始时,各项需求看上去安排的张弛有度,但仍无法避免在某个时间承受巨大的进度压力,当你发现必须在 干得快 和 干得好 之间选择时候,一般都会选择 干得快,并提醒自己将来再回头来返工优化。但实际上下一轮迭代总会有下一个问题,将来永不会来。这类久拖不决的任务就是 技术债 ,技术债 就像贷款,短期能获得好处,但你总要付出利息。时间久了,利息也将是一笔难以偿还的债务。因为有债务的存在,新功能的加入将变得困难,而且这些债务也将是 bug 的滋生地。
腾讯云开发者
2024/12/19
1960
38件程序员应该知道的事儿
【干货】如何写代码 -编程内功心法
写代码就是学一门语言然后开始撸代码吗?看完了我的《GoF设计模式》系列文章的同学或者本身已经就是老鸟的同学显然不会这么认为。 编程是一项非常严谨的工作!虽然我们自嘲为码农,但是这工作毕竟不是真正的搬砖,我们是软件工程师。 编程需要关注的问题太多,不仅仅有语言,还有算法、数据结构、编程技巧、编码风格、设计、架构、工程化、开发工具、团队协作等方方面面,涉及到很多层面的问题。 本文将分享一下根据我这几年来的编程经验总结出的一些关于如何写代码的个人见解。 由于“跟我混”的一些小伙伴编程功底相对来说比较薄弱,所以在此
WZEARW
2018/04/10
8780
程序员的心理疾病
说实话,虽然似乎为之奋斗了十多年,在真正进入软件行业的短短一年之后,我已经对它感到相当的厌倦了。这并不是说这个行业没有前景,而是在这个行业工作,其实很难得到心理上的快乐。
哲洛不闹
2018/09/18
5060
程序员的心理疾病
十个老大难的程序员问题
程序员最艰巨的任务跟编写代码没有多少关系。编码是逻辑思路的一种实践,这跟程序员日常工作中的其它任务比起来相对简单。如果你认为自己还是一个水平一般的程序员,在你真正的能进入到高手行列前,请确保你已经克服了下列晋级的障碍。 1. 解释你在干什么 解释软件开发过程是一个很困难的事情。那些非程序员职业的人也许知道很多关于编程的事情,但很显然,他们不会编程。对于他们来说,我们的生活就是在一间黑暗的屋子里趴在键盘前消耗着咖啡。 你会在你的朋友、家人和同事中遇到这样的人,他会认为编码不是一个正确的职业。 2. 形象的说
精讲java
2018/07/03
5801
程序员请改掉影响你升职加薪的36个坏习惯!
IT行业的科技公司们一直苦苦追寻传说中以一当十的超级程序员,最新的研究表明确实存在这样一小撮效率奇高的“程序金刚”,但是一位普通程序猿如何能够蜕变成代码金刚呢?
Java后端技术
2018/08/09
4700
《高效能程序员的修炼》读书笔记
《高效能程序员的修炼》写的是给程序员的一些建议。书中并没有涉及到代码,而是编码之外的一些提高程序员技能的技巧,而这些技巧往往是程序员所缺乏的。作者Jeff Atwood也是一个大牛,如果你没有听说过他,那么你肯定听说过他创立的一个网站:https://stackoverflow.com。
kai666666
2020/10/19
6960
《高效能程序员的修炼》读书笔记
当一个程序员写不出代码了,该怎么办?
你已经对着电脑 N 个小时了。不知道该写什么代码,或者一种摔键盘的冲动正在你的胸中酝酿。 咖啡一杯接着一杯。不敢再喝了,因为搞不好要有副作用了,心跳加速,身体不由自主地颤抖,出冷汗,但还是无法产出任何代码。 所有重新发现编程趣味的努力都徒劳无功,因为你的最后一点能量都用来驱逐大脑中正在攻城略地的话: “我写不出代码了!” 1 编程的本质是棘手 即使是最优秀的程序员也会遭遇无法解决的软件工程问题。碰到这样的问题,并不一定意味着你缺乏技能或知识。 编程不是一项容易的工作,我们可以通过采取非正统的方法来保持
非著名程序员
2018/02/09
7360
70条程序员编程的专业名言,你认可几条?
4. 软件设计有两种方式:一种方式是,使软件过于简单,明显没有缺陷;另一种方式是,使软件过于复杂,没有明显的缺陷。
科控物联
2023/10/10
7970
70条程序员编程的专业名言,你认可几条?
iOS程序员请改掉影响你升职加薪的36个坏习惯!
IT行业的科技公司们一直苦苦追寻传说中以一当十的超级程序员,最新的研究表明确实存在这样一小撮效率奇高的“程序金刚”,但是一位普通程序猿如何能够蜕变成代码金刚呢?
原来是泽镜啊
2018/07/04
5100
80%的程序员,不会写commit记录
据说,80%的程序员,不会写commit记录。这个比例在无规范的小公司,比例会更高一些,可以看到这是一个多么普遍的问题。
xjjdog
2021/03/10
1.5K0
80%的程序员,不会写commit记录
你写注释吗?写你就输了
我并不是提倡不写代码注释,只是建议不要过于依赖注释,这样可以使代码更干净、更有表现力,这也能提高开发人员的水平。我自己也在寻求编写更简洁的代码,我尽力不编写糟糕的注释,并在可能时重构代码。
深度学习与Python
2020/07/30
5000
你写注释吗?写你就输了
年初之后,程序员的面试简历该怎么写?
本篇文章除了教大家用Markdown如何写一份程序员专属的简历,后面还会给大家推荐一些不错的用来写Markdown简历的软件或者网站,以及如何优雅的将Markdown格式转变为PDF格式或者其他格式。
Java码农那些事
2020/02/19
1.1K0
程序员的烦恼、技术领导的烦恼和管理者的烦恼
为什么做 {程序员、技术领导、管理者} 很可怕? 我专业从事软件开发工作已超过 10 年的时间,我热爱这份事业,希望有一天我会被人们称呼为老程序员。但这一路走来,我经历了许多可怕的事情,这些事情让我讨厌我的工作。在职业生涯早期,我曾期望有人能给我一份职场指南,这样当遇到之前未曾遇到的事情时,我就不会感到如此的孤单和沮丧。 从某种意义上说,这篇文章就是那样一份指南。我写这篇文章有三个目的。 一、回顾 辨别出我们以往都曾有过的经历。这些会帮助我们建立一些理解上的共识,可以作为判断其他不熟悉的问题的参考点。 二、
用户1289394
2018/02/28
9680
程序员的烦恼、技术领导的烦恼和管理者的烦恼
推荐阅读
相关推荐
为什么国内程序员不喜欢写单元测试?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档