Coding style “你的”是什么;硬性规定”;关于注释代码?
我已经看到了其他问题,但我仍然对这个主题的涵盖方式不满意 我想提取一份详细清单,以便在代码检查时查看注释。Coding style “你的”是什么;硬性规定”;关于注释代码?,coding-style,comments,Coding Style,Comments,我已经看到了其他问题,但我仍然对这个主题的涵盖方式不满意 我想提取一份详细清单,以便在代码检查时查看注释。 我相信人们会说一些相互抵消的话。但是,嘿,也许我们可以为每个营地建立一个列表。对于那些根本不发表评论的人,列表将非常简短:)如果评论过期(与代码不匹配),请将其删除或更新。永远不要留下不准确的评论 文件就像性;当天气好的时候 很好,非常非常好,什么时候 这很糟糕,总比什么都没有好 尽可能编写自解释的可读代码。当您必须编写过于复杂而一眼就看不懂的代码时,请添加注释。还可以添加注释来描述您编写
我相信人们会说一些相互抵消的话。但是,嘿,也许我们可以为每个营地建立一个列表。对于那些根本不发表评论的人,列表将非常简短:)如果评论过期(与代码不匹配),请将其删除或更新。永远不要留下不准确的评论 文件就像性;当天气好的时候 很好,非常非常好,什么时候 这很糟糕,总比什么都没有好
尽可能编写自解释的可读代码。当您必须编写过于复杂而一眼就看不懂的代码时,请添加注释。还可以添加注释来描述您编写的代码背后的业务目的,以便于将来维护/重构。在实现RFC或其他协议规范时,请使用规范对应的部分注释状态机/事件处理程序等。确保列出规范的版本或日期,以防以后修改。我写了一篇关于不好评论的完整文章。享受:)
您所写的注释可以揭示代码的质量。我无数次删除代码中的注释,以更好、更清晰的代码替换它们。为此,我遵循两条反评论规则:
- 如果您的注释仅仅解释了一行代码,那么您应该让这行代码自己说话,或者将其拆分为更简单的组件
- 如果您的注释解释了函数中的一段代码,那么您可能应该解释一个新函数
- 使用动态类型语言时,记录重要函数对其参数的期望,以及调用方对返回值的期望。重要函数是那些将有非本地调用方的函数
- 当您的逻辑由另一个组件的行为决定时,最好记录您对该组件的理解和期望
仅限步行前;说明一个类的单一职责、任何注释或注释以及更改日志。至于方法,如果任何方法需要大量的注释,那么是时候重构了。关于注释,我有一条简单的规则:你的代码应该讲述你正在做的事情;你的评论应该说明你为什么要这么做
通过这种方式,我确保继承我的代码的人能够理解代码背后的意图。我记录了类中的每个类、每个函数和每个变量。简单的docblock是前进的方向 一般来说,我写这些docblock更多的是为了自动化API文档,而不是其他任何东西 例如,我的一个PHP类的第一部分
/**
* Class to clean variables
*
* @package Majyk
* @author Martin Meredith <martin@sourceguru.net>
* @licence GPL (v2 or later)
* @copyright Copyright (c) 2008 Martin Meredith <martin@sourceguru.net>
* @version 0.1
*/
class Majyk_Filter
{
/**
* Class Constants for Cleaning Types
*/
const Integer = 1;
const PositiveInteger = 2;
const String = 3;
const NoHTML = 4;
const DBEscapeString = 5;
const NotNegativeInteger = 6;
/**
* Do the cleaning
*
* @param integer Type of Cleaning (as defined by constants)
* @param mixed Value to be cleaned
*
* @return mixed Cleaned Variable
*
*/
而且,如果某些东西以某种方式做某些事情的原因不是不言自明的,我会在你写评论的时候评论一下,停下来,反思一下,问问自己是否可以修改代码,这样就不需要评论了。您能否更改一些变量、类或方法名称以使事情更清楚?一些
断言
s或其他错误检查是否会将您的意图或期望编码?你能把一些很长的代码分割成清晰命名的方法或函数吗?注释通常反映了我们无法清晰地编写(a-hem、代码)。用计算机语言写清楚并不总是容易的,但需要一些时间来尝试。。。因为代码从不说谎
另外,你在“硬规则”周围使用引号的事实很能说明问题。未强制执行的规则不是“硬规则”,唯一强制执行的规则是在代码中。我通常在编写方法之前对其进行注释。我将为函数中需要执行的每个步骤编写一行或两行注释,然后在注释之间编写代码。当我完成时,代码已经被注释了
最重要的是,在我编写代码之前,它已经被注释过了,所以在注释中没有对以前的知识进行不合理的假设;一、 我自己在写代码的时候对代码一无所知。这意味着它们往往很容易理解,正如它们应该理解的那样。没有硬性规则——硬性规则导致教条,人们通常在不够聪明,不能独立思考时遵循教条 指南我遵循: 1/注释说明正在做什么,代码说明如何做-不要重复您的工作 2/注释应指代码块,而不是每行。其中包括解释整个文件、整个函数或只是一段复杂代码的注释
3/如果我认为我会在一年后回来,并且不理解代码/注释的组合,那么我的注释还不够好。我会在总结我所做工作的代码块中添加一条注释。这有助于那些
// Register the Auto-Loader
spl_autoload_register("majyk_autoload");
// Add an Exception Handler.
set_exception_handler(array('Majyk_ExceptionHandler', 'handle_exception'));
// Turn Errors into Exceptions
set_error_handler(array('Majyk_ExceptionHandler', 'error_to_exception'), E_ALL);
// Add the generic Auto-Loader to the auto-loader stack
spl_autoload_register("spl_autoload");