注释的两难之道:程序员的反思

news2024/11/30 10:41:05

文章目录

    • 代码即注释?
    • 注释的艺术
      • 1. 注释要言简意赅
      • 2. 注释的时机
      • 3. 注释内容
      • 4. 避免无意义的注释
      • 5. 维护注释
    • 如何看待注释?

在这里插入图片描述

🎉欢迎来到Java学习路线专栏~注释的两难之道:程序员的反思


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:Java学习路线
  • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
  • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

在程序员的世界里,一个广为人知的笑话是:程序员最烦的两件事,一是别人写代码不写注释,二是自己写代码要写注释。这看似矛盾的说法反映了程序员们对注释的复杂情感。对于程序员来说,写代码和写注释似乎总是一对矛盾的任务,那么我们究竟该如何看待这个问题呢?

在这里插入图片描述

代码即注释?

有人会提出这样的观点:优秀的代码应该是“自解释”的,不需要额外的注释。在一定程度上,这是有道理的。清晰、有逻辑的代码确实能够降低阅读和维护代码的难度。例如,一个函数的命名如果能够准确反映其功能,那么它是否需要注释来解释呢?

当然,理想是美好的,但现实往往复杂。首先,即使代码写得再清晰,随着时间的推移,阅读它的人也可能忘记了当初的目的。其次,项目往往是团队协作完成的,其他成员可能无法理解代码背后的逻辑。最后,复杂的算法或特殊的业务逻辑可能需要详细的解释,而这些解释往往不适合直接写在代码中。

因此,注释并不是多余的。恰当的注释可以提供关键信息,帮助他人理解代码,以及帮助自己在未来回顾代码时节省时间。

在这里插入图片描述

注释的艺术

既然我们认为注释是必要的,那么如何编写好的注释呢?注释也有它的艺术,下面是一些有关注释的最佳实践:

1. 注释要言简意赅

注释应该是简洁明了的,准确地传达关键信息。不要写过多废话,注释的目标是让人更容易理解代码,而不是让人阅读注释比阅读代码本身更费力。

2. 注释的时机

最好在编写代码的同时添加注释,这样可以更容易记住代码的意图。随后,当你需要修改代码时,你也能够更清楚地知道这些注释代表什么。

3. 注释内容

注释的内容应该包括代码的目的、输入和输出的解释、特殊情况的处理等。它们应该回答“为什么这么做”、“这个函数的作用是什么”等问题。

4. 避免无意义的注释

不要添加明显的、无意义的注释。例如,不要在一个名为increment的函数上添加注释“这个函数用于增加值”,这种注释是多余的。

5. 维护注释

随着代码的演进,注释也应该保持同步。当你修改代码时,要确保相应的注释也被更新。

如何看待注释?

作为程序员,我们不应该视注释为一项烦人的任务,而应该将其视为提高代码质量和可维护性的有效工具。注释是代码的补充,帮助团队成员和未来的你更好地理解和修改代码。

而关于“别人写代码不写注释”和“自己写代码要写注释”的矛盾,实际上体现了编程领域的多样性。不同的项目和编程环境可能会有不同的注释要求。有些项目要求详尽的注释,有些则更注重代码的清晰度。因此,要视具体情况而定,不必太过极端。

在这里插入图片描述

最重要的是,在注释与代码之间找到平衡。注释是程序员工具箱中的一部分,当用得当时,它可以使你的代码更具可读性,同时也为他人和自己提供了方便。因此,不要害怕编写注释,它们往往是代码中的珍贵资产。


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1095744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDBC批量插入数据

PreparedStatement的一些好处 1.PreparedStatement可以防止SQL注入 2.PreparedStatement可以操作Blob数据,Statement做不到. 3.PreparedStatement可以实现更高效的批量操作 演示PreparedStatement批量操作 在数据库操作中 update,delete后面如果没有条件,本身就可以就可以…

基于html5开发的Win12网页版,抢先体验

据 MSPoweruser 报道,Windows 11虽然刚刚开始步入正轨,但最新爆料称微软已经在开启下一个计划,Windows 12 的开发将在 去年3 月份开始。德国科技网站 Deskmodder.de 称,根据内部消息,微软将在 2022年3 月开始开发 Wind…

02_单片机及开发板介绍

单片机简介 单片机,又称为微控制器(Microcontroller),是一种集成了微处理器核心、存储器、输入/输出接口及各种功能模块的集成电路芯片。它通常由中央处理器(CPU)、存储器、输入/输出接口以及各种外设组成&…

HDLbits: Fsm serial

根据题意设计了四个状态,写出代码如下: module top_module(input clk,input in,input reset, // Synchronous resetoutput done ); parameter IDLE 3b000, START 3b001, DATA 3b010, STOP 3b100, bit_counter_end 4d7;reg [2:0] state,next_sta…

关于TCP协议面试中常见的一千个问题

TCP传输层控制协议 TCP是面向连接的、可靠的、基于字节流的传输层通信协议。 TCP 头部格式 1、 源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 2、 序号字段——占 4 字节。TCP 连接中传送的数据流中…

诊断DLL——Vector模板生成Send2Key.dll

文章目录 前言一、Vector诊断控制台Secutity Access基本原理二、Seed2Key DLL生成GenerateKeyEx源码自定义安全算法源码CAPL调用27服务解密算法前言 在实际诊断工程应用中,如UDS刷写——27服务,经常会遇到一些Seed2Key的算法问题,为了安全保密,这个算法的源码不便公开,我…

【C++基础】10. 指针

文章目录 【 1. 指针的定义 】【 2. 指针的调用 】【 3. NULL 空指针 】【 4. 指针的算术运算 】4.1 指针的递加4.2 指针的递减4.3 指针的比较 【 5. 指针与数组 】5.1 通过指针操作数组5.2 指针数组、数组指针 【 6. 指向指针的指针(多级间接寻址)】【 7. 传递指针给函数 】【…

【Vue面试题二十七】、你了解axios的原理吗?有看过它的源码吗?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说下你的vue项目的目录结…

第三章 内存管理 四、连续分配管理方式

目录 一、内存空间的分配与回收 1、连续分配管理方式 (1)、单一连续分配 优点: 缺点: (2)、固定分区分配 分区大小相等: 分区大小不等: (3)、动态分区…

leetcode17.04面试题:消失的数字

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 思路1:暴力枚举 定义一个[0~n]的数组与所给数组nums进行循环遍历,如果不相等则返回那个数。 int missingNumber(int…

Git 安装和配置教程:Windows / Mac / Linux 三平台详细图文教程,带你一次性搞定 Git 环境

Git是一款免费、开源的分布式版本控制系统,广泛应用于软件开发领域。随着开源和云计算的发展,Git已经成为了开发者必备的工具之一。本文将为大家介绍Git在Windows、Mac和Linux三个平台上的安装和配置方法,带你一次性搞定Git环境 Windows平台 …

windows计划任务的配置文件

界面操作 创建计划 依次设置 命令行操作 SCHTASKS 命令简介 SCHTASKS 命令是由微软公司开发并内置于 Windows 系统中的一个命令行工具。该命令可用于设置、修改、查询和删除计划任务,或启动计划任务中所定义的程序或脚本。 SCHTASKS 命令的基本语法 SCHTASKS 命…

【算法|动态规划No.20】leetcode416. 分割等和子集

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

38_Nginx 启动流程

文章目录 src/core/nginx.cint ngx_cdecl main(int argc, char *const *argv) {ngx_buf_t *b;

CSS基础详细解析(附带综合小练习)

目标:掌握 CSS 属性基本写法,能够使用文字相关属性美化文章页。 01-CSS初体验 层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容&#…

JVM之class文件结构剖析

文章目录 0.前言1. 引言1.1 Java编译原理基础1.2 Class文件在Java编译过程中的角色 2. Class文件的整体结构2.1 Class 文件组成 3. Class文件的详细解析3.1 魔数与版本号的作用和意义3.2 常量池的结构和作用3.3 访问标志的含义和可能的值3.4 类索引、父类索引和接口索引集合的作…

如何在小程序中设置页面显示的文字

不同商家,对于小程序有不同的要求。所以,小程序应该支持商家在后台灵活配置小程序各个页面的文字显示。下面具体介绍如何显示各个页面的文字。 朋友圈分享图文字:会显示在朋友圈海报顶部 升级会员提示:对于普通会员,在…

一些基础知识

一些基础知识笔记Git clone gitxxxxx pip install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple wget google.com 可以快速看你的服务器到底有没有链接代理 benchmark和baseline L1 loss & MSE loss L1是差的绝对值和,MSE是差的平方和 …

KMP 算法 + 详细笔记

给两个字符串,T"AAAAAAAAB",P"AAAAB"; 可以暴力匹配,但是太费时和效率不太好。于是KMP问世,我们一起来探究一下吧!!! (一)最长公共前后缀 D[i] p[…

【Vue面试题三十】、vue项目本地开发完成后部署到服务器后报404是什么原因呢?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:vue项目本地开发完成后部…