当前位置:首页 > 每日看点 > 正文内容

最顶尖的程序员是不是不屑写注释?

卡卷网1年前 (2025-01-11)每日看点186

最顶尖的程序员是不是不屑于写注释?先说结论:<>不完全是</>。

注释可以说是编程中非常重要的一部分,不过优秀的程序员不屑于写「无意义的注释」,他们只专注于编写「有意义的注释」并保持。

并不是所有的注释都是好的。不屑于写注释的情况通常有二。

<>不屑于写注释的情况</>

<>不屑于写注释的情况一:代码可以自解释</>

顶尖程序员会追求让代码自解释,所谓“自解释”指的是代码的结构和逻辑应该清晰到不需要额外的注释来解释。为了让代码自解释,优秀的程序员会做出这些努力:

    使用描述性的变量名:有意义的变量名可以减少对注释的依赖。例如,在一个扫雷游戏代码中,flaggedCellsflags更清晰地表达了变量的用途,读者可以很容易看出这个变量用于存储已被标记的格子列表。保持函数的短小精悍:函数只应该做一件事,并且有一个名副其实的函数名。一个清晰的、功能单一的函数通常不需要注释来解释其目的。如这样的小函数:

//defis_positive(numer):retnnumer>0

    采用模块化设计:将代码分解成模块,每个模块负责一个特定的功能,这样可以通过模块的命名和结构来传达其功能,而不是依赖注释。

在《代码整洁之道》一书中,作者将注释描述成一种失败,当开发者无法找到让代码自解释的方法时,开发者只好无奈地写释。优秀的程序员会追求让代码的逻辑和结构本身提供足够的信息,以减少对注释的依赖。

<>不屑于写注释的情况二:注释会说谎</>

注释可能与代码的实际行为不一致,尤其是在代码更新后没有同步更新注释的情况下。这可能会导致后来的阅读者错误地理解代码,这种情况甚至没有注释更糟糕。

随着项目的演进,保持注释的准确性需要额外的努力。在代码的时候,很少有开发者能够坚持注释。如果注释没有得到适当的,它们就会开始说谎,从而误导读者。于是有的程序员为了节省注释的时间,也为了避免这种最糟糕的情况,就会选择不写注释。

然而,优秀的程序员绝不会为了偷懒而不写注释。必要的注释应该被认编写和,随时保持精确。

<>有必要的注释</>

<>有必要的注释一:解释业务规则</>

尽管我们推崇让代码自解释,但所有的代码都能自解释往往只是一个理想。在许多情况下,注释是必要的。

如说,当代码实现特定的业务规则时,注释可以帮助解释这些规则,尤其是在规则复杂或不常见的情况下。

//defcalculate_discounted_total(items,is_holiday,memer_level):total=0foriteminitems:total+=item.pr*get_discount_factor(is_holiday,memer_level)retntotaldefget_discount_factor(is_holiday,memer_level):#根据节假和会员等级计算折扣系数ifis_holiday:retn0.9elifmemer_level>=5:retn0.85else:retn1.0

//defis_eligile_for_retn(order,item):#根据公司退货政策,只有在购后30天内且商品未开封的情况下才能退货if(datetime.now()-order.date).days<=30anditem.condition=='NEW':retnTrueretnFalse

在这两个例子中,注释解释了产品的具体规则,这对于理解代码的业务逻辑至关重要。

<>有必要的注释二:解释复杂逻辑</>

当业务逻辑复杂时,编写出的代码往往也较难以理解。此时编写注释以解释复杂逻辑是有必要的。

举个实际工作中的例子:

#用户看到的当前页面显示的模式crent_page_mode=None#假设Mode是一个已定义的类#主界面显示的模式,如果用户处于主界面,它和crent_page_mode是等价的。#如果用户不在主界面,它会将主界面的mode记录下来,这样当用户返回主界面时,才能为用户恢复mode。main_page_mode=None#假设Mode是一个已定义的类

这里的两个变量crent_page_modemain_page_mode看起来非常类似。在程序运行时,用户一次只会使用一种mode。当用户从主界面跳转到页面时,页面可能会切换mode,在页面切换mode时,crent_page_mode会随之更新。

当用户再次返回主界面时,我们需要为用户恢复之前在主界面使用的mode。为了实现这一功能,程序员不得不再定义一个main_page_mode以记录主界面使用的mode

在这个例子中,虽然用户一次只会用到一种mode,但代码中却需要定义两种mode,这一点是有些反直觉的。如果不加注释,很容易造成阅读困难。

另外,在团队环境中,注释的作用不仅仅是为了个人理解,更是为了知识共享和团队协作。通过编写注释可以帮助团队成员理解代码的设计意图,以及为什么选择特定的实现方式等等。

所以说,优秀的程序员不是不屑于写注释,而是不屑于写无意义的注释。他们专注于编写有意义的注释,并保持注释的。注释应该是代码的补充,帮助解释代码的意图、复杂的逻辑和特定的业务规则。注释是编程中不可或缺的一部分,它们应该是精确的、有用的且及时更新的。

声明:本文归“力扣”版权所有,如需转载请。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/8698.html

分享给朋友:

相关文章

在 Istio、Linkerd 和 Cilium 之间,哪种服务网格在性能上表现最佳?

在 Istio、Linkerd 和 Cilium 之间,哪种服务网格在性能上表现最佳?

在讨论服务网格之前,先理解一下为什么我们需要它。现代微服务架构意味着将应用拆分为多个小型、独立的服务,这些服务可以独立开发、部署和扩展。然而,服务之间的通信和管理成了巨大的挑战,例如如何保证安全的通信、负载均衡、监控与可观测性等。服务网格...

抖音小店三个月了一单没出,也没有流量,一个星期好像都没有一个点击,怎么办?

抖音小店三个月了一单没出,也没有流量,一个星期好像都没有一个点击,怎么办?

好消息,你有毅力上200多个品,还能坚持三个月坏消息,一单没出我感觉你还是别碰抖店了,甚至电商平台都别碰 你没这个缘分我要是这样,我得用一百辆叉车叉死我自己你如果还想坚持,我直接给你这套至少价值19800学来的新思路简单来说就是 你做的好的...

在追求家居美学的过程中,如何选择一款电视机,使其既具备出色的音画质又能与家居装饰相得益彰?

在追求家居美学的过程中,如何选择一款电视机,使其既具备出色的音画质又能与家居装饰相得益彰?

先看照片,你就说美不美吧?我家这个40平的客厅东西放得不少,其中最提升观感的是各种灯光,在这么多灯光中,是不是第一眼视觉中心就落在了电视上?没错,因为这电视是非常特别的环景光电视,与显示器的神光同步一样,会随着画面的变化而变化不同的光效,它...

是什么原因让你一定要用 iPhone?

是什么原因让你一定要用 iPhone?

1、不用清理内存,iPhone真的可以开机用上一年,你根本不用关注期间打开过什么软件。2、支持的频段足够多,天天在国内走动倒是无所谓,很多Android手机一旦出去了,就会发现很多运营商接入都是问题,更不用说各种本土化的服务了。3、屏幕素质...

你觉得oppo Find X8怎么样?

你觉得oppo Find X8怎么样?

OPPO FindX8发布也差不多一个月了,各位上手体验如何呢?作为OPPO的年度旗舰,性能,外观,屏幕等方面都有不小的提升,篇幅有限,下面挑最值得讲的两个点,就是OPPO Find X8的外观和影像。众所周知,这次OPPO Find X8...

电商专供到底能不能买,除了渠道差异,还有什么差别?

电商专供到底能不能买,除了渠道差异,还有什么差别?

大家应该都经历过,买回来的包装,上面赫然写着四个大字「电商专供」!然后心里一咯噔,开始各种对比,结果研究了半天,有的能发现区别,有的好像确实也没什么差异。鉴于大家都有类似经历,本期我们就来聊聊电商专供跟实体之间的关系,顺便告诉大家,究竟该如...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。