要不要写代码注释

前言

代码是否应该写注释,目前大概有两种看法。第一种认为,优秀的代码不需要注释,即很多人推崇的代码即注释;第二种认为,写代码应该要写注释。

在此,先给出结论:代码需要注释。但是不是每行都需要注释,或者需要多少注释,我们会在接下来的文章中讨论这个问题。(文中的例子均为PHP代码)

首先,我们先讨论下代码即注释 的问题。

我们先思考下,代码即注释的观点是否正确。对于代码即注释,主要有两个好处。 其一是在不写注释的情况下,避免了一定的工作量,这个工作量包含注释的编写,维护以及注释规范的保持。在实际工作中,我们都遇到过注释和实际代码意图不一致的情况,这就是注释没有维护好,为代码的维护造成更多的负担。 比如下面这个经常被用来被调侃的例子

<?php/** 获取明天这个时候的时间戳./*/* @return int 时间戳.*/function getTomorrowTime(){ sleep(86400); return time();}复制代码

其二是代码即注释,能提高团队的代码命名、可读性等。对于一个有强制代码风格检查、Code Review执行到位的团队来讲,推崇代码即注释,确实会强有力地推动代码的命名和可读性,提升编码能力。

从以上两点来讲,代码即注释的观念是正确的,也确实能给团队带来收获。但是,在团队实践代码即注释,也是有前置条件的。

首先,团队必须是相对固定的,这里的相对固定是指团队成员不会经常性流动。一个团队要达到代码即注释的水平,是很难的,即使你的团队是精英团队,每个人能力极强,但是大概率会有不同的技术背景,在认知上难免出现差异,这里举几个例子:

  • 当代码中,需要发送一个事件时,有人喜欢用dispatch,有人喜欢用send。
  • 转换成布尔值,有人喜欢 (bool) $var,有人则会用 !!$var
  • 参考以下代码片段
  • 0) { return 100 / $a; } return 0;}// vs function test() { return $a > 0 ? 100 / $a : 0;}

    我们先不论谁好谁坏,这种不一致性是确实存在的。 要到达代码即注释,最重要的一点是你需要将团队成员的编码认知,基本拉到同一个水平,并且团队内部形成大家都认可的最佳实践。要做到这一点,需要团队长时间的协作和磨合。 对于一个流动性大的团队,是无法做到这一点的,假设团队5个人,刚把大家的认知统一,结果走了3个人;补充的3个新人,还得重新去拉齐大家认知,人员再流动,再拉齐,永远达不到目标。所以对于流动性极高的团队,老老实实写注释是最好的选择。

    其次,你得有拉齐团队认知的工具和文化。比如严格的Code Review,自动化的代码风格检查等。一个Code Review 都做不好的团队,代码风格、逻辑实现千奇百怪,怎么能统一认知,怎么做到代码即注释呢。

    总结一下,要在团队中实践代码即注释,首先得考虑团队的流动性、其次有没有相关工具和规范;对于一个新团队,即使有条件,也要长期坚持不懈推行规范,建立文化,才能得以成功。

    最后,在谈谈代码即注释还有一个弊端,在一些特定的场景下,代码中会包含一些隐藏的逻辑,无法很好通过代码表达出来。对于不了解隐藏逻辑的人来说,往往会错误地使用该代码,造成Bug。

    鉴于以上的原因,加上国内这种为抢占市场快速产出而导致遍地加班的环境,代码注释绝对是有必要的,至少使用90%以上的团队。

    代码注释写多少合适

    对于这个问题,我们倾向于从三个情况考虑: 第一,你的团队是践行代码即注释的团队,并且做得还不错;对于这种情况,常规的代码注释可以省略,但是对于业务逻辑复杂或者包含隐藏逻辑的代码,这是需要注释的。

    第二,你的团队有明确的注释规范;这种情况按团队规范来即可。

    第三,你的团队没有良好代码的基因,不推崇代码即注释,也没有规范;这种情况下,团队负责人需要评估,是制定一套注释规范,还是践行代码即注释。我们的建议一般都是先制定注释规范,因为注释规范实现相对于代码即注释,时间和成本都要小很多;注释规范落地后,再考虑代码即注释的问题。

    最后,不管是写注释还是践行代码即注释,Code Review 都是保证代码质量(包括代码和注释本身)的重要工具。

    郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
    用户投稿
    上一篇 2022年6月19日 09:14
    下一篇 2022年6月19日 09:14

    相关推荐

    • 央行全面降准0.25个百分点 释放资金5000亿

        图虫创意/供图 证券时报记者 贺觉渊 11月25日,央行宣布,为保持流动性合理充裕,促进综合融资成本稳中有降,落实稳经济一揽子政策措施,巩固经济回稳向上基础,决定于2022年1…

      2022年11月26日
    • 《我在岛屿读书》:文坛大家是最会讲故事的人

      当余华、苏童、西川这些文坛大家相聚在一起,会碰撞出怎样的火花?外景纪实类读书节目《我在岛屿读书》给出了答案。 上周节目首播之后,观众一边从中汲取文学养分,一边又惊叹于作家们接地气的…

      2022年11月24日
    • 微软合并Azure Virtual Desktop和Windows365服务

      微软宣布合并 Azure Virtual Desktop 和 Windows 365 服务,合并之后交由 21 年老将斯科特・曼彻斯特(Scott Manchester)负责。 我…

      2022年11月23日
    • 分享2大类微信引流软件(不花钱的微信引流软件都有哪些)

      不花钱的微信引流软件之前介绍了不少节省社群运营精力、提高社群运营效率的方法,今天主要给大家推荐一些简单好用的工具。 大家首先要掌握寻找工具的方法,因为工具可能因为平台封禁等原因不能…

      2022年11月22日
    • 高德地图无网络可以导航吗 高德地图怎么离线导航

      高德地图是现在大家比较常用的一个导航软件,很多朋友在使用中都存在着一个疑惑,那就是在没有网络的时候该怎么导航呢?现在就让小编带大家来看一下吧。 1.首先打开进入高德地图页面,然后点…

      2022年11月21日
    • 马斯克凌晨一点半晒“代码审查”现场,编排他的段子比疯狂星期四还多

      梦晨 Pine 发自 凹非寺 量子位 | 公众号 QbitAI 每一个真正会写代码的人,请在下午2点到总部10层报到。 每一个真正会写代码的人,请在下午2点到总部10层报到。 马斯…

      2022年11月21日
    • 提倡小规模旅游团队(严格控制旅游团队规模)

      团队旅游应控制组团规模,提倡小规模旅游团队强化数据分析,科学安排团队旅游线路和出游时间,分时段分批次分区域开展旅游活动,避免游客聚集对于游客,指南明确应加强行前排查,旅行社要做好游…

      2022年11月19日
    • 没团队就做这几种(一个人适合做哪一领域短视频)

      自媒体短视频什么领域比较火呢?又有哪些领域收益高?现在自媒体短视频越来越火了,很多新手想要入门,但是又不知道做什么领域。经过小编多方面观察和统计,发现了5个比较容易上热门的视频领域…

      2022年11月19日
    • 淘宝运营团队怎么找(网店运营与推广)

      很多商家认为网店代运营就是将网店外包出去 因此在找服务商的时候不知道从何下手,也不知道怎么配合代运营公司 其实网店代运营除了有运营外包之外,还可以根据自己的实际情况进行选择其他合作…

      2022年11月18日
    • “工具人”杨幂的一天

      但是没想零点一过,杨幂生日还没上热搜,一些奇奇怪怪的话题已经霸占在热搜上了。第一个就是迪丽热巴为杨幂庆生。话说两个人作为同公司的艺人,热巴为杨幂庆生也是理所当然的,但是谁能想到热巴…

      2022年11月18日

    联系我们

    联系邮箱:admin#wlmqw.com
    工作时间:周一至周五,10:30-18:30,节假日休息