Linux之父:连你自己都懒得解释,那这就是一堆垃圾!

原创
💍
霍格沃茨青岛分校
2023-03-24 11:06:18
2595
摘要:不出意外,Linus又开喷了!
不出意外,Linus又开喷了,这次的激情开麦,源自一部分没有做注释的合并请求:Linux6.3内核收到了一部分合并请求,但这部分合并完全没有注释

如果你懒得解释为什么存在一个合并,那这个合并从本质上来说就是错误的垃圾,这是每个开发者都应牢记于心的规则。我重复一遍:如果你不能解释清楚这个合并请求,那就不要做,就是这么简单。——Linus Torvalds  
让Linus如此生气的代码注释,到底有啥用?

注释不仅展现了代码背后的逻辑,让我们在后期维护时能更容易阅读、理解代码,还能将授权许可、版权信息编写进去。此外,注释也有提示作用,如标记为FIXME或TODO的注释往往表示待定的工作等等。

总之,代码注释告诉了我们为什么会写这样的代码。对Linus来说,收到的合并请求缺乏注释,因为没有合理的解释,代码不仅变得毫无意义,还会变得更难读、难维护。所以代码注释很重要,编写合理的代码注释更重要。

编写注释,快看这三不要!

1.不要花大力气编写注释,解释代码的每一个细节!

过多的注释会让源文件变得非常混乱,不仅会降低代码的可读性,还难以维护。(这种写大量注释的行为,也很难不让Linus发火。)

2.不要留不恰当的注释!

很多人会通过注释保存代码演变的历史记录,但这往往是无用功。一个热知识:版本控制系统可以保存历史记录。还有一些过时的、被废弃的、不正确的注释,一经发现就需要尽快更新或删除,不能再让这些废弃注释误导我们了!
 

3.不要犹豫!看到注释掉的代码,请直接删掉它!

对于那些不再使用的旧代码,大家可能下意识会直接注释掉,但直接干脆利落删除掉这些旧代码会更简洁。毕竟后期维护的时候,大家面对这些注释掉的代码只会敬而远之。

重构吧!

通过重构那些烂代码,可以摆脱不必要的注释:
  • 命名:比如将变量i重命名为numGoals,能明确意图。对于变量、方法以及类,我们都可以这样做;
  • 结构:如果某一段代码没有注释就无法理解,可以尝试更改代码结构;
  • 子表达式:将一个复杂的表达式拆分为多个子表达式,可以帮助大家更好地理解代码;
  • 断言:当我们遇到“当某个条件为真时,某段代码才能正常运行”的情况时,可以引入断言标明假设。
这样才能使注释更简洁、易看。

如何编写好的代码注释?

以下几个注释模式送给大家:
  • 文档注释模式:记录接口,而不是解释代码本身。
  • 脚注注释模式:主要用于描述为什么采用特定方法,短小精悍。通常在无法从代码中推断出此类信息的情况中使用。
  • 警告注释模式:警告开发人员注意某些特殊需求的注释,如:以超级管理员的身份调用函数。警告可能涉及安全或设计缺陷,注释可能包括TODO或FIXME。
  • 签名注释模式:注释中加上开发人员的首字母缩写。在团队中,我们可以更快速地找到相应人员讨论。
  • 编织代码模式:代码和文档结合在一起。需要首先编写文档,然后对该文档进行编码。

在Linus看来,写代码非常重要,写好的代码更重要。注释、命名、版式等代码规范检验的正是程序员最重要的基本功,如果基础不牢,必定地动山摇。关于代码规范,你还有什么想要了解的?欢迎观看代码规范小视频


Q: 为什么Linus Torvalds对缺乏注释的代码合并请求感到不满?

A: 因为缺乏注释的合并请求没有合理的解释,会使代码变得难以理解和维护。


Q: 为什么注释在软件开发中如此重要?

A: 注释帮助开发者理解代码逻辑、维护代码,并记录授权许可和版权信息。


Q: Linus对代码注释有什么具体建议或原则?

A: Linus建议避免过多、不恰当的注释,并强调合理编写注释的重要性。

  • linux.png
评论列表
🙉
坚韧的茶壶2025-12-04 13:40:08回复
就差附个代码规范小视频了。

推荐阅读

如何实施极限编程?

极限编程是一种复利型的投资,越早实施,回报率越高。
🍪
春哥
2022-09-05

将代码集体所有权进行到底!

代码集体所有权从表面看是一个技术问题,只不过是源代码管理系统的权限如何设置的问题;但从本质上来讲,这是一个团队乃至整个公司的团队协作和勇气的问题。今天借这篇文章和大家仔细展开聊聊。
🍪
春哥
2022-10-18

Linux之父:连你自己都懒得解释,那这就是一堆垃圾!

不出意外,Linus又开喷了!
💍
霍格沃茨青岛分校
2023-03-24

无结对,不编程

从我们自己团队十几年的结对编程实践来看,结对编程并不会降低效率,甚至结对编程的效率会比独自编程更高。
🍪
春哥
2022-10-11
返回顶部
客服头像
高丽亚
高级客户经理
客服微信
17667930330
3645260865
统一服务热线 4006-8899-23
我要提问提问有任何问题,您都可以在这里提问。问题反馈反馈点击这里,让我们聆听您的建议与反馈。