热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《代码整洁之道》读后总结--关于注释

关于注释的简单思考:注释的目的,在于使代码查看者能够快速的理解代码表达意思。而表达意思的有:代码+注释+程序结构+程序的结构一定有安排好,取决于分类管理,组织

关于注释的简单思考:

  • 注释的目的,在于使代码查看者能够快速的理解代码表达意思
  • 而表达意思的有:代码 + 注释 + 程序结构 + ...
  • 程序的结构一定有安排好,取决于分类管理,组织能力。
  • 代码的表达力:通过命名,清晰的逻辑,适当的模块化表现出来。
  • 注释一方面用来弥补代码表达力的缺陷(KEY),另一方面用来自然语言快速表达意思。但注释本身就存在着一些缺陷,比如说:让程序的结构混乱,自然语言表达的不准确引起错误理解。


摘自《代码整洁之道》


1.注释总述

1.1.注释的恰当用法 是弥补我们在 用代码表达意图时遭遇的失败

1.2 .注释会撒慌

  • 注释存在的越久,离其所描述的代码越远,越来越变得错误。 ( reason :程序员不能坚持维护注释)
  • 代码在变动,演化。但是注释不一定。导致代码与注释演化的不同步,从而给程序员造成理解上的错误。

1.3.我们要尽量减少注释量

  • 将更多的精力放在代码表达力上。
  • 代码忠实告诉我们它做的事情
  • 注释不能美化糟糕的代码。
  • 与其花时间为糟糕的代码注释不如花时间 清洁糟糕的代码


2. 好的注释

例子 : 标准java库中的javadoc是好注释的例子。(学习其注释的风格,但不要在自己程序上全部注释)

2.1.法律信息

  • 一般,公司代码规范要求编写与法律相关的注释。(如:版权,著作权)

2.2.提供信息的注释

  • 用注释来提供基本的信息也有其用处。

2.3.对于意图的解释

  • 注释不仅体现了有关现实的有用信息【功能,用法等】,并且体现了某个决定后面的意图【目的】。

2.4.阐释

  • 注释把某些晦涩难懂的参数或返回值的意义 解释 为 某种可读形式。
  • 尽量使用命名来表达意思,若不能修改参数名等(库函数),在考虑使用阐释。

2.5.警示

  • 用于警告其他程序员会出现某种后果的注释。(比如说:某个方法会消耗大量时间)

2.6.TODO注释

  • 用来在源码中放置要做的工作列表。(将来打算做什么?为什么还没做?)

2.7.放大

  • 注释可以用来放大某种不合理之物的重要性。


3.坏的注释

3.1. 喃喃自语

  • 如果需要添加注释,就有必要写出最好的注释。【表意清晰】
  • 如果作者喃喃自语,表达不清楚自己的想法(对于作者来说可能有意义),对于后续工作者来说将是一个谜团。

3.2.多余的注释

  • 注释若不能提供比代码本身更多的信息,并且读它并不比读代码容易。
  • 注释不如代码精确,甚至可能误导读者。

3.3.误导性注释

  • 不精确的注释有误导作用。所以代码的注释,一定要反复斟酌。

3.4.循规式注释

  • 每个函数都有javadoc , 每个变量  都有注释的 规矩是愚蠢可笑的。(这种注释让代码变的散乱,不易让人理解)

3.5日志式注释

  • 每次编辑代码,都在文件头部写注释。(类似于日志)【因为版本控制器的存在,应该抛弃这种方式】

3.6.废话注释

  • java语法中包含的信息(再次用注释表现)等,重复已经众所周知的内容。

3.7.能用函数或者变量时就不要注释

3.8.归属与签名

  • 已经被版本控制系统替代。

3.9.注释掉的代码

  • 直接把代码注释掉很让人恶心,造成混乱。
  • 会导致后来的代码维护者 不敢 删除注释掉的代码。(越累计越多)
  • 有些注释代码可能后来确实会用到,但是现在 版本控制器 可以做到。

3.10.信息过多

  • 代码中注释的信息,应该是简单的,有针对性的。
  • 不要在注释中讲故事,以及一些不相关的事情。

3.11.不明显的联系

注释和代码之间的联系,应该是显而易见的。




推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 最近学习反射机制的时候Properties.load(读取本地文件流的时候怎么也找不到加载文件后面发现IDEA的默认根目录是在它的Project工程下IDEA的文件目录和Ec ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
author-avatar
浮夸诗人_219
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有