我应该在代码中写一个注释吗

我应该在代码中写一个注释吗
当很多高级教育人员在年轻时写笔记时,当程序员写笔记脚本的时候网络已经满了,这是一个很有争议的话题。我们应该编写更多的代码,而不是更多的注释。

注释确实有它的用途,但在大多数情况下,程序员滥用注释,我反对代码之间的注释,我认为注释应该独立于代码——通常称为文档。

请看下面的代码部分。

复制代码代码如下所示:

/ / / *静态市场/ checkout.js

创建orzfly 2014.7.2

2014.7.29更新jysperm:fixbugs

待办事项:这段代码太多的注释和需要被删除,jysperm

* /

无功raw_products =请求查询{ }等级产品的分裂(',');

一系列货物

var产品= }

每个参数过滤器

对于(var i = 0,我的<< raw_products.length,i++){

如果(!raw_products {我})

返回;

数据出现在前面。

如果(!我raw_products { }。修剪())

返回

* 2014.7.22:现在可以使用非数字ID。

跳过非数字条目

如果(isnan(raw_products {我}。修剪()ToFixed())))

返回;

* /

Products.push(raw_products {我}。修剪()ToFixed());

}

总金额。

var总和= 0;

每种商品的货币数计算总数。

对于(var i = 0,我的<< products.length,i++){

从数据库中检查商品信息

VaR数据= db.product.byid(产品{我});

谁将写关于待办事项:没有检查货物

这个数字加在货币/货物的总价格中。

data.price总和=;

}
你花在阅读评论的一半以上的时间,这就是生命的东西浪费,每个代码中的注释,代码会——即使读者了解一个音符传达精神增加阅读成本;也会增加维护成本:对人的修改代码与注释一起改变,你不知道他会不会这样做。

因此,只有在必要的情况下,才应该添加注释,并且简明明了。注释不应该解释一段代码在做什么,因为这是每一个合格的程序员都应该知道的,但为什么我们要解释这段代码。

这导致了一些不应该添加的明显注释:

应该由版本控制系统记录的信息、对代码的注释和待办事项。那不是很重要。

代码不是全部。如果一个项目是可靠的,它应该有自己的版本控制系统。除了记录代码差异之外,它还应该具有工作表和发布功能。

读代码的人通常不需要知道程序员之间的敌意。他们常常不在乎这段代码的历史。他们只把代码拖走。

Discarded code

删除的代码应该删除,这会影响阅读,而且它们通常很长。

在大多数情况下,放弃的代码将不再被使用,即使只有少数情况下,您也可以从版本控制系统中找到它们。

变量和函数名的解释

显然,在这种情况下,您需要一个更合适的名称。如果标识符具有较小的函数,则可以使用较长的名称来容纳更多信息。

例如,下面的:

产品应改为products_id

总和应改为total_amount

数据应改为product_record

语法的解释和明显的东西

例如,在上述商品货币总数中添加的价格中,a = a=a是B的缩写,显然没有人知道。

也许有人愿意写这样的笔记来理清思路:

复制代码代码如下所示:

过滤参数:

删除ID空间

删除非数字标识

每一种商品流通:

检查记录/数据库

这个数字加到了货币{商品}的总价格中。
但记住在代码完成后删除它。

逻辑块的推广

例如,在上述情况下,过滤每个参数和计算每个商品的总金额,通常你不会抽象出逻辑。

复制代码代码如下所示:

要做的第一行25行代码

/然后有5行代码做B

这里有90行代码要做C

最后,有45行代码要做d
这将导致您需要一些注释来分割这四个部分。如果这四个部分都是函数调用,那么函数名本身就是逻辑的解释。读者可以很快地找到函数B,而不是搜索前25行中B的五行代码。

总之,我对这段代码的改进如下:

复制代码代码如下所示:

无功filterproductid =功能(raw_products_id){

结果= { }

raw_products_id.foreach(功能(product_id){)

如果(product_id和product_id.trim())

products_id.push(product_id.trim()ToFixed());

});

返回结果;

};

无功getpriceofproduct =功能(ID){

无功product_record = db.product.byid(产品{我});

如果(product_record)

返回product_record.price;

其他的

返回0;

};

无功products_id = filterproductid(需求,查询{ }等级产品。分裂(','));

无功tatol_amount = 0;

products_id.foreach(功能(product_id){)

tatol_amount = getpriceofproduct(product_id);

});
虽然我用一个虚构的、故意编好的代码来支持我的观点,但我相信在实际的项目中,我们也可以通过改进代码来减少注释,并且通常节省更多的时间和精力。

tag:注释代码电脑软件

相关内容