注释是恶魔,请不要再写一行注释
📅 2026/7/3 10:12:32
👁️ 次浏览
如果你找到的代码没有出现上面两种毛病而注释依然存在那你再看看这个注释是否有实际意义是不是这个注释不要也无所谓呢。注释是恶魔这个观点可能你第一次看到你可能很难接受因为写了这么多年的注释你从未想过注释居然是恶魔所以你看到这个观点的时候可能就会本能的找出1000种理由反对绝对不可能实现啊什么的但是这个观点并不是今天才出现相信很多年前就有人提出现在已被越来越多的人认可。我第一次接受到这个观点还是从一个美国客户十几年编程经验的技术大牛那里2011年他让我们不要写注释。他当时主要意思是我们写的中式英语他猜起来太费劲所以他后面又安慰我们说“好的代码是不需要注释的”而我从此就将他后面那半句话奉为至宝。注释是恶魔它将我们的代码变得很难理解。就像本文开篇说的你可以找找你们项目中出现注释的地方要么命名不准确要么方法太长。你可以随机找10处注释看看有几处是恶魔欢迎贴到评论中。举一个以前项目中的例子吧命名不准确的例子/// summary /// 管理员是否可以审核该申请 /// /summary public bool IsAudit { get; set; }在这个例子中其实将is换成can就不需要注释了。写注释让代码更难读。首先如果一个程序员可以随便写注释那么他对命名准确性和方法长度的控制就不会那么在意写代码更随意代码质量比不能写注释的程序员更大几率低下。其次代码注释只是在写代码的时候提供说明如果读代码都依靠注释的话那一个类被另一个类引用来引用去的就根本没法阅读了。所以“写注释是为了让代码更易读”本身就是站不住脚的。不写一行注释根本就做不到这句话可能从你阅读本文开始在心里面重复了无数遍这也是大多数人的心声。其实前面说的写注释让代码更难读的观点很多朋友从内心上是认可的。因为确实没有办法啊有的方法业务逻辑复杂不知不觉方法已上百行有的命名还是中西结合的不写注释自己第二天就读不懂了。所以真是纠结内心承受百般折磨。写到这里突然想起在园子里看到的一个笑话说一个公司的产品每年都在更新换代因为每年新招的程序员都要把程序重新写一遍。“零注释”根本做不到如果你丛刻开始怀疑自己的这个观点那你就可能做得到。如何做到不写一行注释1. 从现在开始强迫自己不要写注释。2. 控制每个方法不超过50行用方法定义来描述方法的实现逻辑。3. 变量命名不要太过随便。本文想要告诉大家的是零注释一点都不难。我们团队大约从2012年开始全面执行零注释后面经历2个产品项目多个外包项目积累的经验越来越多获得的质量效果越来越好零注释越来越深入人心。零注释这个编码规则也是我们团队近些年质量建设非常重要的里程碑之一再此分享给大家。如果能够影响你一点点那都足够了。附2个我们的代码片段虽没有注释大家不妨猜猜这两个方法做什么用的。1. 查询的例子1 public PageResultIssueDto Search(IssueSearchCriteria criteria, PageRequest request) 2 { 3 using (var db base.NewDB()) 4 { 5 return db.Issues 6 .WhereByAssignee(criteria.AssignedUserId) 7 .WhereBySupervisor(criteria.SupervisorUserId) 8 .WhereByCategory(criteria.CategoryId) 9 .WhereBySearchStatus(criteria.Status) 10 .WhereDateRange(criteria) 11 .WhereNotDeleted() 12 .WhereByKeyword(criteria.Keyword) 13 .ToDtos() 14 .OrderByDescending(x x.CreatedTime) 15 .ToPageResult(request.PageIndex, request.PageSize); 16 } 17 }2. 更新的例子1 public void Submit(Guid userId, string content, string text, double lng, double lat, string address) 2 { 3 using (var db base.NewDB()) 4 { 5 var issue new Issue(userId, content, text, lng, lat, address); 6 db.Issues.Add(issue); 7 db.AddIssueLog(IssueLog.CreateOnSubmit(issue.Id, db.Users.GetNickName(userId))); 8 db.SaveChanges(); 9 10 issue.GenerateSerialNumber(); 11 if (!string.IsNullOrEmpty(SettingContext.Instance.AdminOpenIds)) 12 { 13 var name db.Users.GetName(userId); 14 var totalPendings db.Issues.Count(x x.Status IssueStatus.None x.IsDeleted false); 15 var adminOpenIds SettingContext.Instance.AdminOpenIds.Split(,); 16 foreach (var openId in adminOpenIds) 17 { 18 var message new PendingProcessTemplateMessage(openId, issue, name, totalPendings); 19 db.WeixinScheduledMessages.Add(message.ToWeixinScheduledMessage()); 20 } 21 } 22 db.SaveChanges(); 23 } 24 }
1. 项目概述:为什么需要一个标准化的自动化测试环境?如果你是一名Web开发者或者测试工程师,每天手动在Chrome、Firefox、Safari以及各种版本的浏览器上重复点击、输入、验证,很快就会感到疲惫不堪且效率低下。更别提还要考虑不同操…
📅 2026/7/3 10:10:32
1. 项目概述:为什么我们需要更“聪明”的GUI自动化?如果你做过GUI自动化测试或者RPA(机器人流程自动化),大概率经历过这样的痛苦:脚本运行得好好的,突然就卡住了。可能是某个按钮的ID变了&#…
📅 2026/7/3 10:10:32
KKManager:终极游戏模组管理解决方案,一键解决插件冲突难题 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager
在当今的游戏模组生态中&…
📅 2026/7/3 10:10:32
更多请点击:
https://kaifayun.com
第一章:软考通关黄金法则的底层逻辑 软考并非单纯的知识记忆竞赛,而是对系统性思维、工程实践与标准化认知的综合检验。其底层逻辑根植于“标准—过程—证据”三位一体模型:考试大纲即国家标准…
📅 2026/7/3 11:57:15
本文为AI大模型新手提供了一条从零开始的学习路线,将学习过程分解为7个循序渐进的阶段,包括Python基础、使用现成大模型、搭建RAG知识库、掌握智能体Agent、本地部署开源大模型、进阶微调和封装可视化网页。全程采用大白话讲解,无需高数或深厚…
📅 2026/7/3 11:57:15
更多请点击:
https://intelliparadigm.com
第一章:软考零基础通关黄金72小时总览与认知重构 软考不是知识堆砌的终点,而是系统化工程思维的起点。对零基础考生而言,72小时并非冲刺时限,而是一次认知范式的强制切换——…
📅 2026/7/3 11:57:15
更多请点击:
https://kaifayun.com
第一章:注释模板定制的核心价值与认知重构 在现代软件工程实践中,注释早已超越“说明代码功能”的初级定位,演变为承载设计意图、协作契约与知识传承的关键媒介。当团队规模扩大、模块边界模糊…
📅 2026/7/3 11:57:15
1. 项目概述:为什么是Playwright MCP Pytest?如果你还在用Selenium写Vue或React项目的UI自动化测试,是时候考虑升级你的技术栈了。我最近在几个大型前端项目中,彻底用Playwright的组件测试(Component Testing…
📅 2026/7/3 11:57:15
“钨金精准刀出现质量问题怎么判断?”很多刚接触这类高端电外科器械的临床科室和采购老师都会有这个疑问。判断质量不能单凭手感,需要从外观完整性、绝缘层完好性、刀头锐利度、接口兼容性与术中放电表现几个维度综合验收。作为深耕医用耗材领域多年的丹…
📅 2026/7/3 11:55:14
1. AI Agent设计模式全景概览在智能系统开发领域,AI Agent的设计模式就像建筑师的蓝图,决定了智能体如何感知环境、处理信息并采取行动。从业五年来,我见证过太多团队因为模式选择不当导致系统重构的案例。最近在金融风控系统升级时ÿ…
📅 2026/7/3 0:00:32
1. 项目概述:iOS自动化测试的“定位”之痛做iOS自动化测试的朋友,十有八九都卡在“元素定位”这个环节上。你兴冲冲地写好了测试脚本,结果一运行,要么是找不到元素,要么是找到了但点不动,要么是这次能跑通下…
📅 2026/7/3 0:00:32
MTKClient实战指南:深度解析联发科芯片调试与设备修复方案 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient
MTKClient是一款专业的联发科芯片调试工具,为技术爱好者和…
📅 2026/7/3 0:00:32
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/7/2 17:37:53
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/7/2 17:37:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/3 4:46:22
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/2 9:49:12
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/3 10:20:06