Linux之父:连你自己都懒得解释,那这就是一堆垃圾!
不出意外,Linus又开喷了,这次的激情开麦,源自一部分没有做注释的合并请求:Linux6.3内核收到了一部分合并请求,但这部分合并完全没有注释。
如果你懒得解释为什么存在一个合并,那这个合并从本质上来说就是错误的垃圾,这是每个开发者都应牢记于心的规则。我重复一遍:如果你不能解释清楚这个合并请求,那就不要做,就是这么简单。——Linus Torvalds
让Linus如此生气的代码注释,到底有啥用?
注释不仅展现了代码背后的逻辑,让我们在后期维护时能更容易阅读、理解代码,还能将授权许可、版权信息编写进去。此外,注释也有提示作用,如标记为FIXME或TODO的注释往往表示待定的工作等等。
总之,代码注释告诉了我们为什么会写这样的代码。对Linus来说,收到的合并请求缺乏注释,因为没有合理的解释,代码不仅变得毫无意义,还会变得更难读、难维护。所以代码注释很重要,编写合理的代码注释更重要。
编写注释,快看这三不要!
1.不要花大力气编写注释,解释代码的每一个细节!
过多的注释会让源文件变得非常混乱,不仅会降低代码的可读性,还难以维护。(这种写大量注释的行为,也很难不让Linus发火。)
2.不要留不恰当的注释!
很多人会通过注释保存代码演变的历史记录,但这往往是无用功。一个热知识:版本控制系统可以保存历史记录。还有一些过时的、被废弃的、不正确的注释,一经发现就需要尽快更新或删除,不能再让这些废弃注释误导我们了!
3.不要犹豫!看到注释掉的代码,请直接删掉它!
对于那些不再使用的旧代码,大家可能下意识会直接注释掉,但直接干脆利落删除掉这些旧代码会更简洁。毕竟后期维护的时候,大家面对这些注释掉的代码只会敬而远之。
重构吧!
通过重构那些烂代码,可以摆脱不必要的注释:
- 命名:比如将变量
i重命名为numGoals,能明确意图。对于变量、方法以及类,我们都可以这样做; - 结构:如果某一段代码没有注释就无法理解,可以尝试更改代码结构;
- 子表达式:将一个复杂的表达式拆分为多个子表达式,可以帮助大家更好地理解代码;
- 断言:当我们遇到“当某个条件为真时,某段代码才能正常运行”的情况时,可以引入断言标明假设。
这样才能使注释更简洁、易看。
如何编写好的代码注释?
以下几个注释模式送给大家:
- 文档注释模式:记录接口,而不是解释代码本身。
- 脚注注释模式:主要用于描述为什么采用特定方法,短小精悍。通常在无法从代码中推断出此类信息的情况中使用。
- 警告注释模式:警告开发人员注意某些特殊需求的注释,如:以超级管理员的身份调用函数。警告可能涉及安全或设计缺陷,注释可能包括
TODO或FIXME。 - 签名注释模式:注释中加上开发人员的首字母缩写。在团队中,我们可以更快速地找到相应人员讨论。
- 编织代码模式:代码和文档结合在一起。需要首先编写文档,然后对该文档进行编码。
在Linus看来,写代码非常重要,写好的代码更重要。注释、命名、版式等代码规范检验的正是程序员最重要的基本功,如果基础不牢,必定地动山摇。
相关文章:
Linux之父:连你自己都懒得解释,那这就是一堆垃圾!
不出意外,Linus又开喷了,这次的激情开麦,源自一部分没有做注释的合并请求:Linux6.3内核收到了一部分合并请求,但这部分合并完全没有注释。 如果你懒得解释为什么存在一个合并,那这个合并从本质上来说就是错…...
二战华为成功上岸,准备了小半年,要个27k应该也算不上很高吧~
先说下我基本情况,本科不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,华为的游戏专场又是最早开始的,就投递了…...
全国青少年电子信息智能创新大赛(复赛)python·模拟三卷,含答案解析
目录 一、编程题 答案解析: 文档下载打印: 老子搞不懂了,答案解析,还版权问题,有毛病是不。谁在瞎投诉啊。 全国青少年电子信息智能创新大赛(复赛)python模拟三卷 一、编程题 第一题:描述 输入某学生成绩,若成绩在 85分及以上,输出“A”,若成绩在 60分到 85分之间…...
服务网关选型指南
1、为服务网关选型需要考虑哪些因素? 功能需求:您需要考虑您的服务网关需要提供哪些功能,例如 API 管理、请求转发、负载均衡、安全认证等。您应该选择能够满足您的需求的服务网关。 可扩展性:您的服务网关需要能够扩展以支持未来…...
华为OD机试-查找充电设备组合-2022Q4 A卷-Py/Java/JS
某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集合P的最优元素,表示最接近充电站最大输出功率P_max的元素 输入描述 输入为3行: 第1行为充电设…...
免费好用的oa系统有哪些?盘点这几款!
免费好用的oa系统有哪些?盘点这几款! 办公自动化(OA),英文Office Automation的缩写。它可以通过特定流程或特定环节与日常事务联系在一起,使公文在流转、审批、发布等方面提高效率,实现办公管理…...
光伏发电系统模拟及其发电预测开源python工具pvlib
1. 太阳辐照量模拟 pysolar是一个用于计算太阳位置和辐照量的Python库。它是基于python语言编写的,可以方便地在各种python项目中使用。pysolar主要用于计算太阳的位置、太阳高度角、太阳方位角、日出和日落时间等信息。这些信息可以用于太阳能电池板和太阳能集热器…...
精彩回顾 | 2023工赋Meetup—上海站
2023工赋Meetup—上海站 2023年4月2日下午,在上海数字长宁体验馆举办的“价值驱动的数字化转型技术专场”Meetup圆满落幕,本次活动由工赋开发者社区主办,上海市工业互联网协会指导,长宁区东虹桥发展办公室和积梦智能联合主办。 …...
[oeasy]python0132_[专业选修]utf-8_unicode_transformation_format_8_编码方式
utf-8 回忆上次内容 上次再次输出了大红心♥ 找到了红心对应的编码黑红梅方都对应有编码 原来的编码叫做 ascii️ \u这种新的编码方式叫unicode包括了 中日韩字符集等 各书写系统的字符集 但是有个问题 拜这个字在字节中应该是b"\x62\xdc"两个字节 该如何理解b&qu…...
DNS 的解析过程以及相关问题
文章目录DNS解析过程DNS 为什么用 UDP简单说下怎么实现 DNS 劫持谈谈你对域名缓存的了解DNS解析过程 浏览器首先看看自己浏览器缓存有没有对应的IP记录,同时还要查询一下主机本地文件里面有没有对应的记录,如果有记录就没必要进行后面的步骤了。 浏览器…...
个人情况-单词练习
目录 前言原文兴趣爱好特长专业习惯理想志向情境常用单词性别家庭成员正面性格前言 加油 原文 1.come from… 来自…… I come from Shanghai. 我来自上海/我是上海人。 2.born[bɔrn]adj.出生的 be born into + 家庭 出身……的家庭 George was born into a poor fami…...
python天狗吃月 青少年编程电子学会python编程等级考试一级真题解析2022年9月
目录 python天狗吃月 一、题目要求 编程实现 二、解题思路 1、图形分析...
JAVA做语言国际化
项目场景: 问题描述 提示:这里描述项目中遇到的问题: 例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据 APP 中接收数据代码: Overridepublic void run() {bytes mmInStream.read(buff…...
面试题 16.19. 水域大小
题目链接 面试题 16.19. 水域大小 mid 题目描述 你有一个用于表示一片土地的整数矩阵 land,该矩阵中每个点的值代表对应地点的海拔高度。若值为 0 则表示水域。由垂直、水平或对角连接的水域为池塘。 池塘的大小是指相连接的水域的个数。 编写一个方法来计算矩阵…...
在vscode中切换分支,显示已经删除的远程分支
运行命令:修剪远程分支 git remote prune origin 然后远程的已经删除的分支就不见了。...
森林督查违法图斑内业报告高效制作实践技术
Python已成为最热门的编程语言之一,与arcpy、geopandas等行业软件包相结合,能极大程度地减轻森林督查违法图斑内业报告制作的工作量,显著提升工作效率。为了提升广大从业人员在森林违法图斑内业报告制作等方面的技能,内容主要包括…...
华为OD机试-日志限流-2022Q4 A卷-Py/Java/JS
某软件系统会在运行过程中持续产生日志,系统每天运行N单位时间,运行期间每单位时间产生的日志条数保行在数组 records中。records[i]表示第i单位时间内产生日志条数。 由于系统磁盘空间限制,每天可记录保存的日志总数上限为total条。 如果一天…...
ChatGPT能胜任高级程序员吗?
与开发人员信任的其他软件开发工具不同,AI工具在训练、构建、托管和使用方式等方面都存在一些独特的风险。 自2022年底ChatGPT发布以来,互联网上便充斥着对其几乎相同比例的支持和怀疑的论调。不管你是否喜欢它,AI正在逐步进入你的开发组织。…...
effective c++ item 25-29
item25:自定义swap函数 namespace std{template<typename T>void swap(T& a, T& b){T temp(a); // T要满足拷贝构造和拷贝赋值a b;b temp; } }1、Pimpl 2、自定义swap item26:尽可能延后变量的定义 case 1: temp j; for(int i 0; i < n; …...
MasterCAM实体旋转命令相关几个问题:曲线相交于边缘等
MasterCAM版本:2022 目的:通过旋转画杯子边缘主体 内外环直径分别是:56、60mm 命令:实体 - 旋转 问题: 一、处理实体期间错误parasolid(r) kernel 界面错误PK 错误代码:942-曲线相交于边缘 对应参数&a…...
Atomics探究(四)-- atomic flag
本篇将研究atomic_flag相关函数底层汇编指令,以及与其他原子操作函数进行比较,探讨其存在的意义。 1、标准描述: 2、定义 gcc 头文件中定义如下 typedef _Atomic struct { #if __GCC_ATOMIC_TEST_AND_SET_TRUEVAL == 1_Bool __val; #elseunsigned char __val; #endif } at…...
服务器 网络科技运行
服务器是网络科技运行的核心支撑,承担着数据存储、处理、应用部署及资源调度等关键职能,在网络科技领域,服务器的稳定运行直接关系到整个业务系统的顺畅与否,无论是企业内部的办公系统、数据管理平台,还是面向公众的互…...
实战构建开放数据可视化平台,从采集到展示的全流程开发指南
今天想和大家分享一个完整的开放数据可视化项目实战经验。这个项目从数据采集到最终展示,涵盖了全流程开发的关键环节,特别适合想积累真实项目经验的朋友参考。 项目背景与目标 开放数据正在成为数字化转型的重要资源,但很多开发者面对海量…...
OpenClaw+Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF:学术论文辅助写作系统
OpenClawQwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF:学术论文辅助写作系统 1. 为什么需要AI辅助学术写作 去年冬天,我在赶一篇计算机视觉领域的会议论文时,经历了所有研究者都熟悉的痛苦:连续三天熬夜整理参考文献、…...
当孩子冲动行为影响学习,如何借助哈洛韦尔医生的情绪管理技巧?
如何有效应对孩子情绪管理困难,促进学习进步 面对孩子的情绪管理困难,家长和教育者可以采用一些实用的策略来帮助他们更好地表达情绪和应对挑战。首先,建立一个安全的环境非常重要,让孩子感到可以自由表达自己的情感而不必担心负面…...
从苹果AirTag到国产车钥匙:拆解UWB芯片厂商格局与选型指南(附功耗实测参考)
从苹果AirTag到国产车钥匙:拆解UWB芯片厂商格局与选型指南 当你的手机靠近车门自动解锁,或是通过AirTag精准定位背包位置时,背后都离不开一项关键技术——UWB(超宽带)。这种厘米级精度的空间感知能力,正在重…...
EVA-01场景应用:电商商品分析、文档信息提取,真实工作流分享
EVA-01场景应用:电商商品分析、文档信息提取,真实工作流分享 1. 从科幻到现实:EVA-01的商业价值 在电商运营和文档处理的日常工作中,我们常常面临这样的挑战:海量商品图片需要人工标注关键信息,繁杂的合同…...
抖音视频智能管理:如何通过批量下载与自动化分类实现90%效率提升
抖音视频智能管理:如何通过批量下载与自动化分类实现90%效率提升 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在短视频内容爆炸的时代,高效的视频采集、批量下载与系统化内容管理已…...
NaViL-9B多模态提示词工程:提升图文理解准确率的10个实用技巧
NaViL-9B多模态提示词工程:提升图文理解准确率的10个实用技巧 1. 认识NaViL-9B多模态模型 NaViL-9B是一款原生支持多模态交互的大语言模型,能够同时处理文本和图像输入。与传统的纯文本模型不同,它可以直接"看懂"图片内容&#x…...
ESP8266嵌入式JavaScript引擎:零内存分配的确定性JS执行
1. 项目概述 ESP8266-Arduino-JavaScript 是一个面向 ESP8266 平台的轻量级嵌入式 JavaScript 引擎库,其核心目标并非在微控制器上完整复刻 V8 或 SpiderMonkey 的功能,而是为资源受限的 IoT 设备提供一种 可预测、内存可控、无动态分配、零依赖 的脚本…...
