Clean Code 笔记 之 第四章 如何应用注释
继上一篇笔记之后,今天我们讨论一下 代码中是存在注释是否是一件好的事情。
在我们开发的过程中讲究“名副其实,见名识意”,这也往往是很多公司的要求,但是有了这些要求是不是我们的代码中如果存在注释是不是意味着我们的 函数,变量,以及类 的命名就不符合了“名副其实,见名识意”。
我们先区分一下注释的类别,注释一般分为以下几种:
- 1, 单行注释
- 2, 多行注释
- 3, 文档注释
- 4, #region 折叠注释,可以将 代码折叠
注释的类别
1, 单行注释:
在以 “//” 开头,用以说明一行代码的作用放置位置 看习惯或者公司要求合理就行。常用于函数内部,在很多的开源代码中文件的头部我同样见到很多人使用单行注释进行说明,灵活就好。
体现形式如下:
public List<string> getVipUserNameByUserType() { // Vip user name list var vipUserNames = new List<string>(); foreach (var user in Users) { if (user.Type = "VIP") vipUserNames.Add(user.Name); } return vipUserNames; }
2, 多行注释:
以“/*”开头 “*/” 结尾 常用于描述说明一段代码以及类注释或者说代码块常用于文件的顶部。说明作者信息,时间如果是开源的这包含开源的更多说明。
通常使用如下:
/* * 作者:〈版权〉 * 描述:〈描述〉 * 创建时间:YYYY-MM-DD * 作用: */
3, 文档注释:
也就是常用的XML 注释:它的说明性更加的强烈,多用于类以及函数上,当然属性上同样可以使用:
如下所示:
/// <summary> /// MyClass /// </summary> public class MyClass { /// <summary> /// MyProperty /// </summary> public int MyProperty { get; set; } /// <summary> /// MyMethod /// </summary> public void MyMethod(){ } }
以下是官方建议的文档标记 点击标签会制动跳转
4, #region : 折叠注释,常用于描述多个函数的基本作用
书中最喜欢的话
好的注释不能美化糟糕的代码,真正好的注释是你想尽办法不去谢的注释。怀注释都是糟糕代码的支撑或借口,或者是对错误决策的修正。
下面看一个例子
//Check to see if the employee is eligible for full benefits ()If((employee.flags & HOURLY_FLAG)&& (employee.age>)) ()If(employee.isEligibleForFullBenefits())) 这两个你更喜欢哪个
好的注释的特征:
1:表示法律信息(这样的注释一般出现在文档顶部说明作用以及协议)
// Copyright (c) .NET Foundation. All rights reserved // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
2:提供信息的注释(指无法通过命名提供信息如要 注释辅助的)
public void ConfigureServices(IServiceCollection services) { // These two middleware are registered via an IStartupFilter in UseIISIntegration but you can configure them here. services.Configure<IISOptions>(options => {}); }
3:对意图的解释
4: 警示:告知其他人会出现某种后果的注释
5: TODO注释: 主要描述应该做的目前还没有做的事情。
6: 放大:提示不合理之物的重要性。
应避免的注释
应该避免以下几点:
1: 误导性注释
2: 日志式注释
3: 废话注释
4: 标记位置的注释
5: 括号后的注释
6: 归属与签名
7: 注释掉的代码
8: Html 注释
以上没有一一举例的原因是我的PPT是一份演示的PPT,里面很多公司的代码不便贴出,抱歉。
不足之处还请指出
Clean Code 笔记 之 第四章 如何应用注释的更多相关文章
- 【NPDP笔记】第四章 文化组织与团队
此为临时链接,仅用于预览,将在短期内失效.关闭 [NPDP笔记]第四章 文化组织与团队 小康 小康哥的产品之路 9月6日 4.1 文化和氛围对创新的重要性 文化:信念,价值观,假设,与期望 氛围:直接 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第四章:Direct 3D初始化
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第四章:Direct 3D初始化 学习目标 对Direct 3D编程在 ...
- Clean Code 笔记 之 第二章
你是否真正的会命名 前言 这是我第二次看这本书了(Clean Code)的时候,第一次看的时候是,看到某世界五百强在他们的代码中我竟然看不到一句注释,现在我还记得当时的情景,当我Download 下第 ...
- 代码整洁之道Clean Code笔记
@ 目录 第 1 章 Clean Code 整洁代码(3星) ?为什么要整洁的代码 ?什么叫做整洁代码 第 2 章 Meaningful Names 有意义的命名(3星) 第 3 章 Function ...
- win32多线程程序设计笔记(第四章下)
上一笔记讲了同步机制中的临界区域(Critical Sections).互斥器(Mutexes),下面介绍同步机制中的另外两种. 信号量(Semaphores) 举个例子: 现在有人要租车,接待他的代 ...
- 05 技术内幕 T-SQL 查询读书笔记(第四章)
第四章 子查询:在外部查询内嵌套的内部查询(按照期望值的数量分为,标量子查询 scalar subqueries,多值子查询multivalued subqueries)(按照子查询对外部查询的依赖性 ...
- Linux内核分析 读书笔记 (第四章)
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限 ...
- 《深入理解java虚拟机》读书笔记三——第四章
第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local ...
- 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据
相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...
随机推荐
- 小白学 Python(8):基础流程控制(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- git中fatal: Authentication failed的问题
git中fatal: Authentication failed的问题 有两种办法,一种是删除重新认证,另一种是使用Ssh 删除重新认证 有控制面板->用户账户->管理windows凭据- ...
- CMMS系统中工单派案&调度
系统为客户经理提供一个有效的调度控制台,由客户经理负责将需要外派现场处理的工单进行统一的分配调度,系统显示每个技术人员的时间表,根据专业技能.可用性.距离或其他资格标准筛选技术服务人员,并向调度人员提 ...
- .net core跨平台应用研究-ubuntu core下配置.net core运行时
引言 年初研究了一阵子.net core跨平台应用,先后发表了几篇应用研究的文章.因工作原因,忙于项目上线,有一阵子没来博客园写文章了.最近项目基本收尾,抽空翻了下自己的博客,廖廖几篇文章,真让人汗颜 ...
- (二)与animation播放对比
animation播放动画 1.播放默认动画 直接将动画拖入动画对象animation组件的animation变量中,然后加入如下代码既可以播放(此处采用toggle控制动画的播放) public A ...
- Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现 一. 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...
- PHP函数preg_match()
部分内容来自:http://www.nowamagic.net/librarys/veda/detail/1054 preg_match — 进行正则表达式匹配. 语法:int preg_match ...
- 《Effective Java》 读书笔记(一) 使用静态构造方法代替传统构造函数
对象的创建与销毁 ITEM1 使用静态工厂方法代替构造函数 传统的新建一个对象的方法是通过构造函数: Foo foo =new Foo(); 一个类也可以提供一个静态方法产生一个对象: Boolean ...
- [考试反思]1029csp-s模拟测试93:殇逝
并不是把它消成上三角矩阵 停止! 思考, 回顾. 疑惑? 遗忘… 一直只是在匆忙的赶进度,实际上的确是一点也不扎实. T1,裸的偏序,想了一个多小时什么也没想到,只打了$O(n^2)$ 难道之前学的就 ...
- 求和:fft,表达式化简
$f(n)=\sum\limits_{i=0}^{n} \sum\limits_{j=0}^{i} S(i,j) \times 2^j \times j!$ 其中$S(i,j)$为第二类斯特林数,公式 ...