声明:这篇文章的原文出自José M. Aguilar的Variable Not Found,这里仅对其进行中文转译工作,一切版权归原作者所有
以下将会介绍13给有用的TIPS供你参考注释代码,借此你可以很容易的维护理解你的代码:
1、分级注释
对于每一个代码块,每一级代码都进行统一风格的注释,例如:
=>对于每一个class,注释应该包含简介,作者,和最后修改日期
=>对于每一个方法,注释应该包含方法的目的,功能,参数,返回值的简介
团队工作中统一风格的注释显得格外重要。当然,我们能够接受也推荐使用代码注释工具(例如xml in c#或者javadoc for java)来简化这项任务。
2、段注释
我们可以用注释来将代码块分解成多个“段”,每一个段完成一个单一的任务。段注释将会在段起始处说明段内代码的功能,使阅读者明确接下去代码的功能。
// Check that all data records
// are correct
foreach (Record record in records)
{
if (rec.checkStatus()==Status.OK)
{
. . .
}
}
// Now we begin to perform
// transactions
Context ctx = new ApplicationContext();
ctx.BeginTransaction();
. . .
3、对齐的连行注释
对于多行连续代码的尾部注释,将注释对齐将会方便阅读者的阅读
const MAX_ITEMS = 10; // maximum number of packetsconst MASK = 0x1F; // mask bit TCP
一些程序员习惯用tab来对齐注释,然而其他人却喜欢用空格。因为tab的占位是取决于不同IDE的,而空格则没有这个问题,因此最佳的方法是使用空格。
4、不要侮辱读者的智慧
要避免对功能显而易见的代码进行注释,比如:
if (a == 5) // if a equals 5
counter = 0; // set the counter to zero
这不仅浪费你的时间去写这些毫无意义的东西,而且这些显然能从代码中推断出的“细节”还扰乱了读者的思路。
5、请礼貌些~
避免粗鲁的注解,比如“那些愚蠢的家伙输入了个负数”或者“这修正了那些可悲又愚蠢的程序员最初实现的副作用”。这些注释将给作者带来不必要的麻烦,你根本不知道将来谁会来阅读你的代码:你的老板,你的客户,或者是那些你刚侮辱的“可悲”程序员。
6、一针见血
请不要写过多的废话来表达你的思想。要避免使用ASCII ART,笑话,诗歌,hyperverbosity(译者注:天哪,谁会去写这些诡异的东西?)。总而言之,保持你注释的简单,明了。
7、统一的风格
一些人认为注释的一种作用是让非程序员来读懂代码。而另一些人认为注释仅仅是服务于程序员的。在任何情况下,正犹如Successful Strategies for Commenting Code中所说,最终要的是注释风格要连贯 ,并且面向统一的阅读者。就我个人而言,我很怀疑那些非程序员会去阅读我们的代码,因此注释应该服务于程序员。
8、为团队服务的特殊标记
当我们团队协作时, 常会用一些特殊的标记来交流。比如,很多团队用"TODO:"标记来说明这段代码需要补充额外的工作:
int Estimate(int x, int y)
{
// TODO: implement the calculations
return 0;
}
这些标记并非用来解释代码,而是作为讯息发布的工具。但是,请记住这一点,当你利用这些标记工作时,请确切地理解标记的含义,并且去完成标记隐含的需要你做的工作。
9、边CODE边注释
在编写代码的同时完成注释,这有助于你时刻了解自己在干什么。如果你把这项工作放到最后,你不得不痛苦地做第二次的“编码”工作。“我没有时间写注释”,“我很忙”,“项目进度已经晚了”都是我们常用的理由来搪塞注释的编写工作。一些程序员认为应该在CODE前就开始注释的编写,这有助于对程序有一个总体的计划。例如:
public void ProcessOrder() { // Make sure the products are available // Check that the customer is valid // Send the order to the store // Generate bill}
10、为自己而写
当写代码时,请好好考虑,你不单单是为那些将来维护你代码的程序员写注释,同时也是为你自己。用伟大的Phil Haack的话来说:
‘当一行代码出现在屏幕上时,你就已经处于维护这行代码的状态下了’("As soon as a line of code is laid on the screen, you’re in maintenance mode on that piece of code.")
因此,你自己将会是自己那些优秀(糟糕)注释的第一个受益者(受害者)。
11、更新代码的同时更新注释
如果代码并没有改变,那么注释也就没有必要进行修改。但是代码与注释是一体的,两者要保持同步的更新,否则维护者将会发现读懂你的代码是一项极其痛苦的工作。这里要注意那些重构工具,它们常常为你更新了代码却留下了一堆不知所谓的注释。
12、黄金准则:可阅读的代码
一条程序员的基本准则是:让你的代码自己解释自己。虽然有人质疑那些不愿意写代码的程序员提出这项原则的动机,但那些可自解释的代码的的确确能够很好的解释程序,并且使得注释毫无用武之地。比如,在我的Fluid Interfaces 这篇文章中表现了自解释代码是多么地清晰易懂:
Calculator calc = new Calculator();
calc.Set(0);
calc.Add(10);
calc.Multiply(2);
calc.Subtract(4);
Console.WriteLine( "Result: {0}", calc.Get() );
在这个例子中,注释是没有必要的并且是有悖于TIP 4的。为了写出可阅读的代码,你应该要使用那些合适的变量名,保证正确的缩进,以及采用编码样式指导(coding style guides)。如果没能做到这一点,你就不得不为你那些糟糕的代码负责了~
13、与你的同事分享这些TIPS
虽然TIP 10说明了我们自己能够从优秀的注释中获益良多,这些TIPS同样有益于你的同事们,特别是与自己一同工作的团队成员。因此,和你的同事们自由得分享这些TIPS, 你会发觉代码是多么得容易编写与维护。
原文地址:http://www.codethinked.com/post/2008/07/14/Getting-IronRuby-Up-and-Running.aspx
在这片文章中,我想简单地介绍一下IRONRUBY的安装配置以及如何运行示例。通常而言,我是一个玩弄C#的人,而且这个BLOG大多数时候本身就关于C#,但我想接触动态语言是十分重要的。因为.net已经开始逐步走向动态化(其拥有IronPython,Boo,IronRuby,和VB.net 10),所以我想作为程序员应该开始逐步去了解更多关于动态语言的知识。正处于这种目的,我写下了这个系列。(译者注:此处省略了一些无关的话题)
这个教程可能节奏比较慢,但我想确保对于绝大多数人而言都能看懂。
OK,我们开始:
第一步是最简单的,你只需点击这个链接:http://www.ironruby.com/

在那你会找到一个指向RubyForge.org的一个链接:http://rubyforge.org/projects/ironruby
在RubyForge那,你将找到一些文件,此时你有必要先安装TortoiseSVN来获取他们。如果你没有TortoiseSVN,请到这里下载http://tortoisesvn.net/downloads
第二步是用Tortoise来获取代码,首先新建一个文件夹:
然后右键点击选择"SVN Checkout..."

当checkout对话框弹出后,我们在svn的url链接处填写地址:
svn://rubyforge.org/var/svn/ironruby
好了,现在安静地休息一会等待下载的完成。这东西不是一般的大,因此究竟要等对久完全取决于你的网速。当它结束后,画面如此:
当你得到源码后你需要重新设置你的vs2008。如果你没有vs,你可以从这里得到:http://www.microsoft.com/express/download/
之后浏览到你下载源码的目录,这里我是下载到了C:\development\Ruby\IronRuby\. 你可以看到我们有一个"trunk"文件夹,这是源码的一部分。然后打开 IronRuby.sln.
你将会收到一个关于Microsoft.Scripting.Core 的警告要求你自定义设置,因为它来自于微软,所以你只要让它正常加载就行了。
项目加载后,你会看到:
现在你要做的就是生成整个工程,你会希望看到如下的画面:
为了使用IronRuby,你需要进入文件夹 \trunk\build\debug (这里假定你是用debug模式编译的). 你可以用以下命令来使用IR:
第一次运行时,你会得到一个FileLoadException告知你无法加载 ir
这是因为IronRuby项目被签名了,而且delay signing选项被选中了。如果你查看项目属性,你会在"Signing" tab下看到:
好了,你要做的就是打开一个终端窗口,进入trunk文件夹。然后找到runfirst.cmd,这个文件包含了一些命令,其中一个叫做"sn -Vr *,31bf3856ad364e35". 这个命令将会使IronRuby项目跳过强名称检验
我第一次执行时,得到了如下信息:
这是因为sn.exe并不在我默认的path, 通过打开一个Visual Studio Command Prompt我解决了这个问题 (如果你使用Vista,点击右键选择 "Run As Administrator"):
你需要管理员权限来执行一下操作
但再一次的我又遇到了强名称检验的问题,我做了些研究终于发现毛病出在我使用64位系统上。因为默认的32位 sn.exe 已经使用了.64位版本的 sn.exe 在 "\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64". 因此,我用command prompt执行以下命令 command (确保运行于管理员权限下):
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64>sn.exe -Vr *,31bf3856ad364e35
最终,最终。。。。。
好了,你终于能够用IR了,很简单,是不?
不!现在是你安装 alpha software的时候了!
现在让我们测试一下。先把Ironruby 添加到我们的 path. 在控制面板打开“系统”选择“高级”标签
你会在底部找到“环境变量”按钮:
点击它,然后你会看到以下内容:
把你IR的路径添加进取,对我而言是';C:\development\Ruby\IronRuby\trunk\build\debug'.
现在你可以在任何目录下运行IR了.我再 'development\Ruby\' 下新建了一个HelloWorld文件夹,并创建了一个HelloWorld.rb文件.
命令行下,运行这个程序:
好了,我们搞定这些了~你已经能够用它进行开发了。希望能够对你有所帮助!!

