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

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

卡卷网12个月前 (01-11)每日看点167

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

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

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

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

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

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

    使用描述性的变量名:有意义的变量名可以减少对注释的依赖。例如,在一个扫雷游戏代码中,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

分享给朋友:

相关文章

WordPress建设的网站为什么不推荐国内机房?

WordPress建设的网站为什么不推荐国内机房?

我劝大家不要用WordPress做国内网站,不要用国内机房的主机。原因如下:1 WordPress 很多主题和插件都是国外开发的,特别是付费版本,需要联网验证,或者远程写入。国内机房的虚拟主机和服务器大概率会屏蔽或者阻断这些连接,无法完成任...

有没有推荐什么手游搬砖,或者是用手机就能做的工作能日入100左右就好了?

有没有推荐什么手游搬砖,或者是用手机就能做的工作能日入100左右就好了?

大家好,我是思聪。思聪游戏搬砖社每天分享真实靠谱的游戏赚钱的方法。整个游戏的攻略用一句话概括就是:打元宝兑换平台物品,xx元宝兑换一个分红物品。你把你打游戏得来的元宝去兑换平台的分红物品,就能每天领取xx元的分红。(具体看是哪个分红物品,比...

为什么我们一直在给B站充大会员但B站却一直处于亏损状态?

我讲一下离谱的真相吧,欢迎喷我。很多人都觉得B站在赶走人才,赶走优秀的长视频创作者,也觉得知乎在这么做,是没错的。确实在这么做。而原因很简单。只有影响力很大的KOL才有商业价值。(KOL是指“关键意见领袖”)而你说你是人才?对不起,人才不赚...

4499 元起的荣耀Magic7 系列实际使用体验怎么样,值得入手吗?

全是软文。。。。。。不过我买了,标准版。为什么买荣耀:屏幕看着舒服,玩游戏选择大屏,超声波指纹解锁。其它,系统、续航、充电、拍照,不是最强,但均衡下来短板都不是很短。其它米OV,IQ、一加,都看了,预算有限,米OV的小屏不感兴趣,OPPO硬...

有哪些网站,一旦知道,你就离不开了?

有哪些网站,一旦知道,你就离不开了?

这六个网站,一旦用过,基本上是离不开了。都是我超爱的一些网站,基本上每天都用。1 地图生成器第一个,我要给大家推荐的是地图生成器。可以下载到各省,各市,各县的svg格式的地图素材。这些素材导入PPT中都是可以编辑的。可以单独更改颜色和轮廓。...

无意中发现技术主管写的代码,大家帮忙看看什么水平?

无意中发现技术主管写的代码,大家帮忙看看什么水平?

虽然很多答主用了诸如“典范级”、“心旷神怡” 的形容, 赞美这段代码, 但这里, 出于技术讨论的动机, 我说说不同看法.栈, 如果善于利用栈来处理树结构, 那么可以写出更简洁的代码, 根本不需要 recuresiveFn 这种方法. 泛型,...

发表评论

访客

看不清,换一张

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