前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么我不建议你写注释?

为什么我不建议你写注释?

作者头像
用户7386338
发布于 2020-05-29 07:21:15
发布于 2020-05-29 07:21:15
1.3K00
代码可运行
举报
文章被收录于专栏:Java患者Java患者
运行总次数:0
代码可运行

前言

实际上,注释最多也就是一种必须的恶。若编程语言足够有表达力,或者我们擅长于用这些语言来表达意图,就不那么需要注释了,甚至也许根本不需要。 注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败,我用了失败一词,其实是说真的。注释总是一种失败,是因为我们无法找到不用注释就能表达这段代码含义的方法。 如果你发现你的代码需要写注释,那么你就应该想想是不是有办法翻盘,用代码来表达。并不是不让你真的不用注释,而是有些时候,用注释是因为我们怕其他的开发者在我们的代码的时候,看不懂我们的代码从而去加注释,那么我们为什么不写出其他开发者一目了然的代码呢?

为什么不建议写注释?

为什么我们极力贬低注释?因为注释跟代码一样,注释会撒谎,但这并不是我们有意的写一些撒谎的注释。我们可以想象一个项目如果做了一年两年三年,代码的业务逻辑永远都不会改变吗?不可能……. 注释存在的时间越久,就离其所之前描述的代码越远,越来越久就会变得全然错误。为什么呢?因为程序员不能坚持维护注释。 代码在变动,在演化。从这里移到那里。彼此分离、重构又合到一起,而注释却不一定就会随着代码的移动重构而移动重构,慢慢的,业务逻辑改了,注释则会与代码分隔,时间很长了就不准确了。所以,只有代码,代码才能确定的告诉你,它做了什么事,代码才是唯一的信息来源。所以,尽管有时候也需要注释,我们也该多花心思尽量减少注释量。

注释美化代码?

写注释的常见动机之一是因为糟糕代码的存在,我们编写一个方法,写完之后发现这个方法内容乱七八糟,这个时候我们可能会告诉自己,在上面写点注释!但是错了,最好的方法是让代码变得干净! 带有少量注释的整洁而有表达力的代码,比带有大量注释的零碎而又复杂的代码像样的多,与其花时间编写解释你写的代码的注释,倒不如花时间清洁你那堆糟糕的代码。

如何用代码来阐述?

你愿意看到这个?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// check to see if the employee is eligible for full benefits 
if ((employee.flag & HOUTLY_FLAG) && employee.age > 65) {

}

还是愿意看到这个?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (employee.isEligibleForFullBenefits()) {
}

能用代码解释你的意图,就不用去写注释,很多时候我们只需要想上几秒钟,简单到只需要创建一个描述与注释表达出同一事物的函数即可。 有些注释是必须的也是有利的,不过,唯一真正好的注释是你想办法去把你想表达的事物用代码表达出来。 然而有些时候,一些废话的注释我们不要去写 比如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {

   // Default constructor
    public Demo () {

    }


}

甚至

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
*Return the day of the month
**/
pubilc int getDayOfMonth () {

}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java患者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
0700-6.2.0-使用Solr7对多种格式文件建立全文索引
Solr是一个开源搜索平台,用于构建搜索应用程序。它建立在Lucene(全文搜索引擎)之上。Solr是企业级的,快速的和高度可扩展的。使用Solr构建的应用程序非常复杂,可提供高性能 。它提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式),并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。Solr7要求JDK为1.8以上。在Solr7版本中新增了跨核(solr 跨核概念,是建立在solr存储方式的基础上,因为使用solr前必须创建Core,Core即为solr的核,那不同的业务有可能在不同的核中,之前版本是不支持跨核搜索的)搜索功能。本文主要介绍如何在CDH6.2.0集群中使用Solr7对多种格式的文件建立全文索引。
Fayson
2019/09/18
1.9K0
0700-6.2.0-使用Solr7对多种格式文件建立全文索引
如何使用Lily HBase Indexer对HBase中的数据在Solr中建立索引
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- 上一篇文章Fayson介绍了《如何使用HBase存储文本文件》,我们将文本文件存储到HBase中,文件名作为HBase表的Rowkey,每个文件转为二进制字节流存储到HBase表的一个column中。我们可以通过Rowkey来查询这些数据,但是我们却没办法实现这些文本文件的全文索引
Fayson
2018/07/12
5.1K0
01 、Solr7.3.1 在Win10平台下使用jetty的部署及配置
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
全栈程序员站长
2022/07/05
5810
01 、Solr7.3.1 在Win10平台下使用jetty的部署及配置
如何在CDH中使用Solr对HDFS中的JSON数据建立全文索引
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。SolrCloud是Sol
Fayson
2018/07/12
6.1K0
solr使用教程【面试+工作】
solr使用教程一【面试+工作】 Solr调研总结 开发类型全文检索相关开发 Solr版本4.2文件内容本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示、拼写检查、搜索建议、分组统计、拼音检索等功能的使用方法。版本作者/修改人日期V1.0gzk2013-06-04 1. Solr 是什么? Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提
Java帮帮
2018/04/17
8.4K0
solr使用教程【面试+工作】
0701-6.2.0-使用Solr7对结构化csv文件建立全文索引
在上一篇《6.2.0-使用Solr7对多种格式文件建立全文索引》中介绍了如何在CDH6.2.0中使用Solr7对多种格式的文件进行全文索引,测试中使用的主要是非结构化的word、ppt、pdf等非结构化的数据,很多时候需要使用Solr对结构化的数据进行索引,根据其中某些字段进行精准的查询或者范围查询,本文档将介绍如何使用Solr对csv文件建立全文索引。
Fayson
2019/09/18
1.2K0
0701-6.2.0-使用Solr7对结构化csv文件建立全文索引
Solr搜索引擎 — 中文全拼简拼分词
搞定了中文分词下一个就是要来搞定拼音分词了,拼音分词有分为全拼和简拼 附上: 喵了个咪的博客:http://w-blog.cn Solr官网:http://lucene.apache.org/solr/ PS:8.0.0版本已经发布,本文使用此时较为稳定的7.7.1版本 一,全拼分词 > wget http://files.cnblogs.com/files/wander1129/pinyin.zip > unzip pinyin.zip > mv pinyin4j-2.5.0.jar serve
喵了个咪233
2022/11/28
3270
使用SolrJ(即java客户端)开发Solr。
1、什么是SolrJ呢?   答:Solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务。开始配置schema.xml,/home/hadoop/soft/solr-4.10.3/example/solr/collection1/conf。添加IK中文分析器,然后定义定义自己的业务域。
别先生
2019/09/29
1.5K0
使用SolrJ(即java客户端)开发Solr。
Solr的知识点学习 Solr单机版的安装与使用
1、Solr单机版的安装与使用,简单写了如何进行Solr的安装与使用。那么很多细节性问题,这里进行简单的介绍。我使用的是Solr与Tomcat整合配置。
别先生
2019/09/29
1.2K0
Solr的知识点学习

            Solr单机版的安装与使用
Solr的schema.xml
schema.xml是Solr一个配置文件,它包含了你的文档所有的字段,以及当文档被加入索引或查询字段时,这些字段是如何被处理的。这个文件被存储在Solr主文件夹下的conf目录下,默认的路径./solr/conf/schema.xml,也可以是Solr webapp的类加载器所能确定的路径。在下载的Solr包里,有一个schema的样例文件,用户可以从那个文件出发,来观察如何编写自己的Schema.xml。 ##type节点 先来看下type节点,这里面定义FieldType子节点,包括name、class、positionIncrementGap等一些参数。必选参数:
九州暮云
2019/08/21
9960
Solr7使用Oracle数据源导入+中文分词
安装目录假设为#solr_home,本文的#solr_home为apps/svr/solr
少羽大怪兽
2018/12/11
8200
Solr单机版的安装与使用
1 1、使用Solr实现。 2 基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。 3 4 2、什么是Solr。 5 Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、 6 搜索性能进行了优化。 7 Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档, 8 Solr根据xml文档添加、删除、更新索引 。Solr搜索只需要发送 HTTP GET 请求,然后对 Solr返回Xml、json等格式的查询结果进行解析,组织页面布局。 9 Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。 10 11 3、Solr与Lucene的区别。 12 Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的 13 工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索引擎。 14 Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜 15 索功能。
别先生
2019/09/29
1.3K0
Solr单机版的安装与使用
Hive2.2.0如何与CDH集群中的Spark1.6集成
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 在前面的文章Fayson介绍了《如何在CDH集群中安装Hive2.3.3》,本篇文章主要介绍Hive2.2.0服务如何与CDH集群中的Spark1.6集成,Hive on Spark对于Hive和Spark的版本都有严格的要求,Fayson本文使用的是Hive2.2.0版本做测试,具体版本的
Fayson
2018/07/12
1.3K0
如何在CDH5.14.2中安装Phoenix4.14.0
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- Fayson在前面的文章《Cloudera Labs中的Phoenix》,《如何在CDH中使用Phoenix》和《如何使用Phoenix在CDH的HBase中创建二级索引》中介绍了Cloudera Labs中的Phoenix,如何在CDH5.11.2中安装和使用Phoenix4.
Fayson
2018/07/12
1.4K0
Solr技术(附软件分享)
Solr 版本:solr-4.10.3.tgz.tgz SolrLinux下的软件安装包以及中文分词器见末尾百度云1
时间静止不是简史
2020/07/27
1.4K0
Solr技术(附软件分享)
day66_Solr学习笔记
目录结构详解如下:   bin:solr的运行脚本。   contrib:solr的一些扩展jar包,用于增强solr的功能。   dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。   docs:solr的API文档。   example:solr工程的例子目录: example/solr:      该目录是一个标准的SolrHome目录,它包含一个默认的SolrCore目录collection1。 SolrHome目录:
黑泽君
2018/12/05
1.2K0
day66_Solr学习笔记
Solr搜索引擎 — 查询命令和两种中文分词使用
已经和mysql建立好了关联,可以查询和更新mysql的数据量,接下来就是进阶的使用方式了
喵了个咪233
2019/05/26
1.8K0
如何在Hue中使用Sentry为Solr赋权
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- Fayson在之前的文章《如何使用Sentry为Solr赋权》以及《使用命令行创建collection时Sentry给Solr赋权的问题》中,对Solr与Sentry的集成授权进行过介绍,并通过命令行的方式创建collection,以及通过命令行的方式对collection的赋权
Fayson
2018/07/12
1.1K0
solr
Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr的特性包括:
Java架构师历程
2018/09/26
11.2K0
solr
如何使用Sentry为Solr赋权
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- Sentry在CDH平台中定位为统一的授权框架,即所有的组件都要受Sentry的管理,当然也是为了方便用户的操作,一个入口为所有数据相关进行授权。Fayson在前面的文章中介绍了大量Sentry与Hive/Impala的集成文章,其实Sentry除了可以给Hive/Impala表
Fayson
2018/07/12
1K0
相关推荐
0700-6.2.0-使用Solr7对多种格式文件建立全文索引
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档