关于脚本中注释的五点建议

脚本

 
  当你学习某代码技术已经基本入门以后,自然会注意到提高代码质量的重要性,而书写注释则是提高代码质量的第一关——可能也是最容易的一关。以下是我总结的关于书写注释的一些建议!

  一、切勿为了注释而注释!

  为代码添加注释的最主要目的是提高代码可读性,但这里面还有一个心态问题:如果你认为,写了注释,就可以提高代码质量,就可以证明实力,那就错了,事情并没有那么简单。

  相信一定有人在写注释的时候,没有把握正确的心态,这就导致写出来的注释往往不合时宜。什么是不合时宜的注释?我就写过这样的注释:

  ……
  '打开记录集,记录Orders表所有数据
  objRS.Open "SELECT * FROM Orders",objConn,1,1
  ……
  objRS.Close '关闭记录集
  Set objRS=Nothing '释放记录集对象
  ……

  明白了吧?这就是不合时宜的注释的情形之一:形式化的注释,往往会成为代码的累赘,甚至无法突出真正需要注释的地方,降低了代码的可读性。

  这都是心态没有把握好的原因。如果能正确把握心态,就会把心思放到提高代码可读性上,而不是放到写注释上了!写注释只是提高代码可读性的手段之一,而且写注释也是要讲技巧和效率的。下面将对此进行讨论。

  二、废话连篇的注释不是好注释!

  在我看来,优秀的命名规范和代码格式往往比注释更能提高代码可读性。命名规范可以说明代码元素的作用,而代码格式则能使编程思路更清晰——不过很遗憾,它们无论如何都跳不出代码的圈圈,对代码的描述能力并不强,所以我们还是要依靠注释。

  因此,我们应该先在命名规范和代码格式两个方面严格要求自己,然后再以注释为辅助来描述代码。——请不要怀疑,你读代码的时候是先看代码还是先看注释?一般的情况是,代码能明确说明的问题往往就不需要看注释了,比如上面第一点里写出的那些垃圾注释,没人会把它们当回事的(但被当作入门教程中的示例还不错)。当然,也有例外,以注释为代码主要描述手段的情况在第三点讨论。

  什么样的注释才是合时宜的呢?在适当的地方,以适当的篇幅写出来的注释就是合时宜的。我不能给你更具体的答案,但方向已经指明了,你需要做的就是思考、参考、再思考……总之,让注释也和代码一样简单、优雅而又有效就是目标,这样的代码才能达到提高代码可读性的效果!

  仅仅是合时宜还不够,如果注释含糊不清,仍然不是好注释!所以,让注释更准确地描述代码同样重要,特别是对函数/过程、技巧性质的代码段等。以昨天那篇文章(你抄近道了吗?——源自两个VBS过程的感慨)中提到的两个过程之一——GetRandom——为例,我为其作用的描述是:返回从源数组中随机抽取指定数目的位置不重复元素组成的新数组。如果让你描述它的作用,你会如何描述?请不要误会,我可不是在自卖自夸,我只是取了一个离自己最近的例子而已。

  总之,好的注释,要合时宜,还要准确有效!否则不如不写。

  三、外部文档往往比内部注释更有效!

  你也许会奇怪,我上面强调了函数/过程和技巧性质的代码段的注释要准确,为什么我没有提到对类的注释呢?个人以为,如果程序广泛采用了面向(或者基于)对象的设计方法,对类的注释应该从长计议。情况之一是,如果类需要封装,那注释也只在设计时有效,对提高代码可读性的意义不大;情况之二是,类的设计和使用应该宏观把握,而代码中的注释往往是微观的描述,很难达到宏观描述的效果——比如许多用图才好描述的类关系,注释的效果就不好。

  这个时候,我们就需要有外部文档了!不要问我什么是外部文档,如何写外部文档。总之,一切为提高代码可读性服务,做你能做的一切。

  还有一个问题要说,到底该在什么时候写注释和文档呢?有些人是先把代码写好,再趁着自己没有淡忘之前把注释补上;有些人先写好设计草案,然后再开始写代码……其实没有对错,达到目的就好。——注意,理性统筹的正规项目工程开发不在讨论范围内,这种开发要考虑的因素太多了,不能那么随意的。

  四、尽量避免客户端注释!

  客户端注释的唯一缺点应该是增加I/O压力吧?大家可以算一算,如果为HTML和客户端脚本添加注释,主观估计将为每页增加1K字节,现在剩下的就是估计页访问量了……

  为什么要为客户端脚本和HTML添加注释呢?特别是为HTML添加注释更是难以理解——也可能是我没见识吧,呵呵。标准化的B/S客户端设计讲究结构、呈现、行为的分离,我想这是对客户端代码最好的注释吧?

  五、常审视和改善以前代码中的注释!

  写注释很大程度上也是为了防止自己以后读到这些代码的时候也不明其意,所以,如果能经常审视和改善以前代码中的注释……呵呵,还是不多说了吧,相信大家用膝盖想也能明白其中的好处。——怎么感觉我的文章都是虎头蛇尾?

  最后,祝所有专情的人好运!

时间: 2024-11-17 06:06:55

关于脚本中注释的五点建议的相关文章

关于在脚本中注释的几点建议和看法

脚本 当你学习某代码技术已经基本入门以后,自然会注意到提高代码质量的重要性,而书写注释则是提高代码质量的第一关--可能也是最容易的一关.以下是我总结的关于书写注释的一些建议! 一.切勿为了注释而注释! 为代码添加注释的最主要目的是提高代码可读性,但这里面还有一个心态问题:如果你认为,写了注释,就可以提高代码质量,就可以证明实力,那就错了,事情并没有那么简单. 相信一定有人在写注释的时候,没有把握正确的心态,这就导致写出来的注释往往不合时宜.什么是不合时宜的注释?我就写过这样的注释: -- '打开

提前认识软件开发(26) 数据库脚本的注释

1. 概述 注释在程序语言的编写中占有非常重要的地位.优美的.得当的注释不仅有助于研发人员理解程序,还能够提高编程效率(进而提高办事效率). 但是,可能是由于工作比较忙的缘故,许多开发人员不重视注释的书写,这也导致了项目交接的时候,其他开发人员理解程序困难,甚至不知道程序到底要做什么事情.因此,良好注释的书写是对一个开发人员的基本要求,大家一定要重视. 对于脚本的注释,建议大家一律采用英文,这样可以体现出国际化.专业性与规范性. 2. 数据库脚本文件头部的注释 很多脚本文件都没有头部的注释,大家

让你提前认识软件开发(26):数据库脚本的注释

第2部分 数据库SQL语言 数据库脚本的注释   1. 概述         注释在程序语言的编写中占有非常重要的地位.优美的.得当的注释不仅有助于研发人员理解程序,还能够提高编程效率(进而提高办事效率).         但是,可能是由于工作比较忙的缘故,许多开发人员不重视注释的书写,这也导致了项目交接的时候,其他开发人员理解程序困难,甚至不知道程序到底要做什么事情.因此,良好注释的书写是对一个开发人员的基本要求,大家一定要重视.         对于脚本的注释,建议大家一律采用英文,这样可以

把内链当外链 自然链接时代内链建设的五点建议

  Lee在谈好的外链的时候,用一个词就概况了:自然链接.其实当我们反思网站内部链接的时候,也是同样的道理,什么样的内链是好内链?自然链接.很多人简单的将内链认为是各种随意的链接,但我认为这更需要引起人们的注意,本文强调内链乱砌的问题.为了避免由于内链乱砌造成的SEO问题,我根据一些经验提出五点建议: 1.不要随意使用自动内链插件 自动内链可能带来隐患.它们会使文章内爬满链接,扰乱读者视线.太多的链接会分散权重.我们应该紧紧将内部链接的建设权限掌控在自己手中.我的建议是,安装一个非常好控制的插件

提前认识软件开发(31) 数据库脚本中的begin与end

在数据库脚本中,begin与end是一对奇怪的单词.缺少它们,某些代码看起来会让人一头雾水:添加它们,代码的结构瞬间就清晰了. 确实,begin与end作为代码语句的开始和结束标志,可以让脚本程序的逻辑明确,易于阅读. begin与end主要用在以下地方: 1. if.else.else if.while等语句中 if.else.else if.while等语句要自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加语句块标志begin-end. 脚本文件中的begin和end应独占一行并且位

提前认识软件开发(30) 数据库脚本中的空行与空格

在数据库脚本中,空行与空格起着"锦上添花"的作用.恰当地使用它们,可以提高代码的规范性及可阅读性,进而提升数据库的编程效率. 1. 空行 空行起着分隔脚本段落的作用,适当的空行可以使脚本的布局更加的清晰.空行的作用有以下几个: (1) 用于分隔两个数据表的创建脚本 示例: create table tb_example1 ( [表内容实现代码] ) go -- 空行 create table tb_example2 ( [表内容实现代码] ) go (2) 用于分割两个存储过程的创建脚

unity3d-unity脚本中使用Instantiate创建GameObject的实例时,如何设置实例的脚本的参数

问题描述 unity脚本中使用Instantiate创建GameObject的实例时,如何设置实例的脚本的参数 例如: Create是某个脚本类(即public class 某某某 : MonoBehaviour)中的方法,该方法要在必然事件Update中调用(这个前提不能改变). bulletType是GameObject的实例,该变量对应的prefab有脚本BulletForward 脚本BulletForward的脚本类有属性velocity. private void Create(fl

如何在Shell脚本中执行语法检查调试模式

我们开启了 Shell 脚本调试系列文章,先是解释了不同的调试选项,下面介绍如何启用 Shell 调试模式. 写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作. 在本系列的这一部分,我们将了解如何使用语法检查调试模式.记住我们之前在本系列的第一部分中解释了不同的调试选项,在这里,我们将使用它们来执行脚本调试. 启用 verbose 调试模式 在进入本指导的重点之前,让我们简要地探索下 verbose 模式.它可以用 -v 调试选项来启用,它会告诉 sh

如何在 Shell 脚本中执行语法检查调试模式

我们开启了 Shell 脚本调试系列文章,先是解释了不同的调试选项,下面介绍如何启用 Shell 调试模式. 写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作. 在本系列的这一部分,我们将了解如何使用语法检查调试模式.记住我们之前在本系列的第一部分中解释了不同的调试选项,在这里,我们将使用它们来执行脚本调试. 启用 verbose 调试模式 在进入本指导的重点之前,让我们简要地探索下 verbose 模式.它可以用 -v 调试选项来启用,它会告诉 sh