Comments

Nothing can be quite so helpful as a well-placed comment.Nothing can clutter up a module more than frivolous dogmatic comments.Nothing can be quite so damaging as an old crufry comment that propages lies and misinformation.

The proper use of comments is to compensate for our failure to express ourself in code.Comments are always failures.We must have them because we cannot always figure out how to express ourselves without them,but their ues is not a cause for celebration.

Comments do not make up for bad code

  One of the more common motivations for writing comments is bad code.Clear and expressive code with few comments is far superior to cluttered and complex code with lots of comments.Rather than spend your time wrting the comments that explain the mess you‘ve made, spend it cleaning that mess.

Explain yourself in code

  There are certainly times when code makes a poor vehicle for explanation.In many cases it‘s simply a matter of creating a function that says the same thing as the comment you want to write.

Good comments

  Legal Comments

    Sometimes our corporate coding standards force us to write certain comments for legal reasons.For example, copyright and authorship statements are necessary and reasonable things to put into a comment at the start of each source file.Comments like this should not be contracts or legal tomes.Where possible,refer to a standard license or other external document rather than putting all the terms and conditions into the comment.

  Informative Comments

    It is sometimes useful to provide basic information with a comment.For example, consider this comment that explains the value of an abtract methos:

    // Returns an instance of the Responder being tested

    protected abstract Responder reponderInstance();

    A comment like this sometimes be useful, but it is better to use the name of the function to convey the information where possible.For example, in this case the comment could be made redundant by renaming the function:responderBeingTested.

  Explanation of Intent

    Sometimes a comment goes beyond just useful information about the implementation and provides the intent behind a decision.

  Clarification

    Sometimes it is just helpful to translate the meaning of some obscure argument or return value into something that‘s readable.In general it is better to find a way to make that argument or return value clear in its own right;but when its part of the standard library, or in code that you cannot alter, then a helpful clarifying comment can be useful.

  Warning of Consequences

    Sometimes it is useful to warn other programmers about certain consequences.Nowadays, of course, we‘d turn off the best cast by using the @Ignore attribute with an appropriate explanatory string.But back in the days before JUnit 4, putting an underscore in front of the method name was a common convention.

  TODO Comments

    It is sometimes reasonable to leave "To do" notes in the form of //TODO comments.

    TODO are jobs that the programmer thinks should be done, but for some reason can‘t do at the moment.It might be a reminder to delete a deprecated feature or a plea for someone else to look at a problem.It might be a request for someone else to think of a better name or a reminder to make a change that is dependent on a planned event.Whatever else a TODO  might be, it is not an excuse to leave bad code in the system.

  Amplification

    A comment may be used to amplify the importance of something that may otherwise seem inconsequential.

  Javadocs in Public APIs

    There is nothing quite so helpful and satisfying as a well-described public API.The javadocs for the standard Java library are a case in point.It woulde be difficult,a t best, to write Java programs without them.

    If your are writing a public API, then you should certainly write good javadocs for it.

Bad Comments

  Mumbling

    Plopping in a comment just because you feel you should or because the process requires it, is a hack.If you decide to write a comment,then spend the time necessary to make sure it is the best commetn you can write.

    Our only recourse is to examine the code in other parts of the system to find out what‘s going on.Any comment that forces you to look in another module for the meaning of that comment has failed to communicate to you and is not worth the bits it consumes.

  Redundant Comments

    The comment certainly not more informative than the code.It dose not justify the code, or provide intent or rationale.It is not easier to read than the code.Indeed, it is less precise than the code and entices the reader to accept the lack of precision in lieu of true understanding.

  Misleading Comments

    Sometimes, with all the best intentions, a programmer makes a statement in his comments that isn‘t precise enough to be accurate.

  Mandated Comments

    It is just plain silly to have a rule that every function must hava a javadoc, or every variable must have a comment.Comments like this just clutter up the code,propagate lies and lend to general confusion and disorganization.

  Journal Comments

    Sometimes people add a comment to the start of a module every time they edit it.These comments accumulate as a kind of journal or log,of every change that has ever been made.  

  Noise Comments

  Scary Noise

  Don‘t use a comment when you can use a function or a variable

    The author of the original code may have written the comment first and then written the code to fulfill the comment.However, the author should then have refactored the code , as I did, so that the comment shoule be removed.

  Position Markers

    Sometimes programmers like to mark a particular position in a source file.There are rare times when it makes sense to gather certain functions together beneath a banner like this.But in general they are clutter that should be eliminated.A banner is startling and obvious if you don‘t see banners very often.So use them very sparingly, and only when the benefit is significant.

  Closing Brace Comments

    Sometimes programmers will put special comments on closing braces.Although this might make sense for long functions with deeplu nested structures,it serves only to clutter the kind of small and encapsulated functions that we prefer.So if you find yourself wanting to mark your closing braces, try to shorten your functions instead.

  Attributions and bylines

    Source code control systems are very good at remembering who added what,when.There is no need to pollute the code with little by lines.You might think that such comments would be useful in order to help others know who to talk to about the code.But the reality is that they tend to stay around for years and years, getting less and less accurate and relevant.Again,the source code control system is a better place for this kind of information.

  Commented-Out Code

    Few practices are as odious as commenting-out code.Don‘t do this.Others who see that commented-out codd won‘t have the courage to delete it.They‘ll think it is there for a reason and is too important to delete.

  HTML Comments

    HTML in source code comments is an abomination, as you can tell by reading the code below.It makes the comments hard to read in the one place where they should be easy to read - the editor/IDE.

  Nonlocal Information

    If you must write a comment, then make sure it describes the code it appears near.Don‘t offer systemwide information in the context of a local comment.

  Too Much Information

    Don‘t put interesting historical discussions or irrelevant descriptions of details into your comments.

  Inobvious Connection

    The connection between a comment and the code it describes should be obvious.If you are going to the trouble to write a comment, then at least you‘d like the reader to be able to look at the comment and the code and understand what the comment is talking about.

  Function Headers

    Short functions don‘t need much description.A well-chosen name for a small function that does one thing is ususally better than a comment header.

  Javadocs in Nonpublic Code

    As useful as javadocs are for public APIs, they are anathema to code that is not intended for public comsumption.

  

时间: 2024-10-29 19:08:12

Comments的相关文章

Java文法(4)—comments

------------------------------------------------------------------------------------------------------ 说明: There are two kinds of comments. • /* text */ A traditional comment: all the text from the ASCII characters /* to the ASCII characters */ is ig

How to Write Doc Comments for the Javadoc Tool

http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html This document describes the style guide, tag and image conventions we use in documentation comments for Java programs written at Java Software, Oracle. It does not rehash r

Django学习笔记—Comments库的使用方法小记

comments库是django框架内置的一个评论库,官方文档地址:https://docs.djangoproject.com/en/dev/ref/contrib/comments/可以快捷的搭建出网站需要的评论系统.不过对这个库的评价似乎褒贬不一,我自己在使用中的感受是要想让这个库能够比较完美的工作,可能自己需要做较多的定制工作,有时想想,还真不如自己重头写来的爽气.这里照例把自己的一些使用经验记录一下,以供参考. 一.激活步骤 添加APP:INSTALLED_APPS=(‘django.

JavaScript Patterns 2.11 Writing Comments

Document all functions, their arguments and return values, and also any interesting or unusual algorithm or technique. Think of the comments as hints to the future readers of the code; the readers need to understand what your code does without readin

django 1.8 评论库comments配置问题

comments库是django框架内置的评论库,可以快速搭建网站需要的评论系统.不过1.8的配置和1.6的出现了一点小小配置,由于刚刚接触,按照网上的文档配置,需要在 settings.py的INSTALLED_APPS中加入‘django.contrib.comments’,但是按照这个配置完成之后会出现一下错误: ImportError: No module named comments 开始一直以为是需要加载模块,但是添加模块之后依然有这个提示,后网上查阅发现原来1.8版本已经改了,参照

Deleting comments in c or java code by awk scripts

Last night , I attended writting examination for Bai Du,There is a problem, ask us implement a state machine to deleting the comments in c code,I don't know how to implement. So I writte this awk script to handle this problem. I test my scripts by ab

spellchecker inspection helps locate typeos and misspelling in your code, comments and literals, and fix them in one click

项目layout文件中出现 spellchecker inspection helps locate typos and misspelling in your code, comments and literals, and fix them in one click 翻译:拼写检查器检查有助于找到拼写错误和拼写错误在你的代码,注释和文字,并在点击修复 setting –> 搜索框输入 "inspection"回车 –> 右边搜索框输入 "typo"

The string “–” is not permitted within comments

ibatis中SAXParseException异常:The string "--" is not permitted within comments 这个异常是说sqlmap里面的注释不符合规范. 1. 这个问题之前看到过有一种解决方案,就是在注释结束前,也就是“–>”前面加一个英文半角的空格. 2. 今天发现了另外一个解决的方法,就是执行程序的时候加上jvm的参数 -Dfile.encoding=UTF8 这样子就算注释结束符前面不加空格也是可以的. 用eclipse的可以在

模块——Getopt::Long接收客户命令行参数和Smart::Comments输出获得的命令行参数内容

转载:http://www.php-oa.com/2009/04/04/perl_getopt-long.html  我们在linux常常用到一个程序需要加入参数,现在了解一下 perl 中的有关控制参数的模块 Getopt::Long ,比直接使用 @ARGV 的数组强大多了.我想大家知道在 Linux 中有的参数有二种形式. 长参数  –help 短参数   -h 也就是-和–的分别.–表示完整参数.-表示简化参数.在 Perl 的这个模块中也支持这二种方法.这要介绍的二 Getopt 其实