代码注释的作用  --- 为自己,也为别人。

永远不要过于相信自己的理解力!当你思路通畅,思如泉涌,进入编程境界,你可以很流畅的实现某个功能,但这种一泻千里的流畅可能只停留在了当时的状态。当你几个月,甚至是几个星期后看到你的代码,你可能会想,“这是哪位风骚少年堆的代码,他在干神马!?”。更不要讲更长的时间了。。

当你站在自己的代码面前尚且如此时,那么如果有和我们合作的小伙伴呢?考虑下他们的感受吧(=_=!)。                                                                                            

。。。所以,小伙伴们,从现在开始,请注释你的代码吧!

整理了一些网上的东西加上自己理解,供参考 (这里只说php)。

php里的代码注释主要有以下三种方法:

1.以“/*"开始并且以"*/"结束的多行注释方法 (当然,只要你愿意,单行也是没问题的)。

2.以 ”//"开始的单行注释。

3.以“#”开始的单行注释。

再介绍下符合PHPDoc风格的注释。好了,还是先说下PHPDoc。。。

PHPDoc的做法是在每个函数、类或变量定义前放置一个注释块。并不是所有情况下都要求如此,只是在必要的情况下才这么做。

   每个注释块最前面是一个描述,然后是一个或多个可选的参数。例如,向一个函数增加PHPDoc注释时,可以指定输入参数和返回值数据。显然,为变量定义所编写的PHPDoc注释则包含不同的信息。

   以下代码显示了为一个简单的用户自定义函数编写PHPDoc注释的例子:

   首先要注意注释块如何开始。/**指示PHPDoc解析器一个PHPDoc注释已经开始。

   注释块的第一行是一个简短的描述。一般在此只写函数、类或变量的名。

   注释块中下一部分是一个比较长的描述。在这里大多以一种黑盒的观点描述函数、类或变量的作用。也就是说,它会做什么,而不是它怎样做。所有具体的功能或繁杂的逻辑都由代码中的标准注释来解释。

   尽管不是必需的,不过通常的约定是在/** … */块每行起始处包含一个星号。这主要是为了提高可读性,还能容易地发现整个PHPDoc块。

   注释块中最后一部分包含各个PHPDoc参数,解析器用这些参数来更好地链接API文档,从而为你提供实用的文档。每个参数最前面是一个@,后面紧跟着参数名,然后是该参数所需的信息。

    这个例子中可以看到@param和@return参数。@param用于指定函数参数的各个方面:首先是参数的类型(在这里,第一个参数是一个字符 串);接下来是参数名(这里是$name);最后是一个简短的描述,说明输入的数据应当包含哪些内容。@return参数用于提供函数所返回数据的有关信 息:先指定数据的类型,然后是返回数据所包含内容的一个简短描述。

下面列下一些PHPDoc参数。

 <?php
/**
* @name 名字
* @abstract 申明变量/类/方法
* @access 指明这个变量、类、函数/方法的存取权限
* @author 函数作者的名字和邮箱地址
* @category 组织packages
* @copyright 指明版权信息
* @const 指明常量
* @deprecate 指明不推荐或者是废弃的信息MyEclipse编码设置
* @example 示例
* @exclude 指明当前的注释将不进行分析,不出现在文挡中
* @final 指明这是一个最终的类、方法、属性,禁止派生、修改。
* @global 指明在此函数中引用的全局变量
* @include 指明包含的文件的信息
* @link 定义在线连接
* @module 定义归属的模块信息
* @modulegroup 定义归属的模块组
* @package 定义归属的包的信息
* @param 定义函数或者方法的参数信息
* @return 定义函数或者方法的返回信息
* @see 定义需要参考的函数、变量,并加入相应的超级连接。
* @since 指明该api函数或者方法是从哪个版本开始引入的
* @static 指明变量、类、函数是静态的。
* @throws 指明此函数可能抛出的错误异常,极其发生的情况
* @todo 指明应该改进或没有实现的地方
* @var 定义说明变量/属性。
* @version 定义版本信息
*/
function XXX($a){..}

注释规范

a.注释必须是

/**
* 注释内容
*/

的形式

b.对于引用了全局变量的函数,必须使用glboal标记。

c.对于变量,必须用var标记其类型(int,string,bool…)

d.函数必须通过param和return标记指明其参数和返回值

e.对于出现两次或两次以上的关键字,要通过ingore忽略掉多余的,只保留一个即可

f.调用了其他函数或类的地方,要使用link或其他标记链接到相应的部分,便于文档的阅读。

g.必要的地方使用非文档性注释,提高代码易读性。

h.描述性内容尽量简明扼要,尽可能使用短语而非句子。

i.全局变量,静态变量和常量必须用相应标记说明

再示例

 <?php
/**
* Sample File 2, phpDocumentor Quickstart
*
* This file demonstrates the rich information that can be included in
* in-code documentation through DocBlocks and tags.
* @author Greg Beaver <cellog@php.net>
* @version 1.0
* @package sample
*/ //PHP code /**
* A sample function docblock
* @global string document the fact that this function uses $_myvar
* @staticvar integer $staticvar this is actually what is returned
* @param string $param1 name to declare
* @param string $param2 value of the name
* @return integer
*/
function firstFunc($param1, $param2 = 'optional') {
static $staticvar = 7;
global $_myvar;
return $staticvar;
}

以上列出的PHPDoc参数(如@param)比较多,并不是每个函数都要写这么多。根据环境和函数的功能不同选取合适的注释标记做注释。下面选取的laravel框架的数据库文件的log函数(方法)注释及log函数。供大家参考。

     /**
* Log the query and fire the core query event.
*
* @param string $sql
* @param array $bindings
* @param int $start
* @return void
*/
protected function log($sql, $bindings, $start)
{
$time = number_format((microtime(true) - $start) * 1000, 2); Event::fire('laravel.query', array($sql, $bindings, $time)); static::$queries[] = compact('sql', 'bindings', 'time');
}

说千道万,希望小伙伴们养成注释代码的习惯,贵在坚持。规范代码,规范注释风格。让自己更有逻辑性,更专业。共勉。

最后, 以上如有错误之处,请大家指正。另有部分内容摘自网络,如有版权问题,请联系我。:-D

关于php注释那些事的更多相关文章

  1. Go 语言实践(一)

    本文由Austin发表 指导原则 我们要谈论在一个编程语言中的最佳实践,那么我们首先应该明确什么是"最佳".如果您们听了我昨天那场讲演的话,您一定看到了来自 Go 团队的 Russ ...

  2. java web开发中的奇葩事web.xml中context-param中的注释

    同事提交了代码.结果除同事之外,其他人全部编译报错.报错说web.xml中配置的一个bean 没有定义.按照报错提示,各种找,无果. 由于代码全部都是提交到svn主干,之前也没有做过备份,只能一步一步 ...

  3. OpenNLP:驾驭文本,分词那些事

    OpenNLP:驾驭文本,分词那些事 作者 白宁超 2016年3月27日19:55:03 摘要:字符串.字符数组以及其他文本表示的处理库构成大部分文本处理程序的基础.大部分语言都包括基本的处理库,这也 ...

  4. Ctrl-A全选这点事(C#,WinForm)

    所有的文本框,不管单行多行都Ctrl-A全选就好了吧?是啊,很方便.Windows的软件基本都是这样.可为什么我们自己制作的WinForm就默认不是这样呢?谁知道呢,可能是WinForm饱受诟病,要改 ...

  5. XML通过XSL格式化的那点事(XML到自定义节点折叠显示)

    引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又 ...

  6. Java编程中“为了性能”需做的26件事

    1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: (1)控制资源的使用,通过线程同步来控制 ...

  7. 关于几种编程过程中的注释(TODO、FIXME、XXX等)

    最近看别人写的代码,注意到很多规范的代码的注释写的都特别好.只是不太明白TODO.FIXME这些事什么意思.查阅资料,看到一篇博客,遂转载而来,以供今后查阅. (转载地址http://www.cnbl ...

  8. JAVA编程“性能说”(java编程需要做的26件事)

    转载于 http://www.csdn.net/article/2012-06-01/2806249 最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过 ...

  9. Java你可能不知道的事(3)HashMap

    概述 HashMap对于做Java的小伙伴来说太熟悉了.估计你们每天都在使用它.它为什么叫做HashMap?它的内部是怎么实现的呢?为什么我们使用的时候很多情况都是用String作为它的key呢?带着 ...

随机推荐

  1. 品Spring:对@Autowired和@Value注解的处理方法

    在Spring中能够完成依赖注入的注解有JavaSE提供的@Resource注解,就是上一篇文章介绍的. 还有JavaEE提供的@javax.inject.Inject注解,这个用的很少,因为一般都不 ...

  2. js模拟下拉菜单-键盘、鼠标(代码详解)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 【SpingBoot】spring静态工具类注入问题

    package cn.zwqh.action; import javax.annotation.PostConstruct; import javax.annotation.Resource; imp ...

  4. 一步步剖析spring bean生命周期

    关于spring bean的生命周期,是深入学习spring的基础,也是难点,本篇文章将采用代码+图文结论的方式来阐述spring bean的生命周期,方便大家学习交流.  一  项目结构及源码 1. ...

  5. vue路由跳转的方式

    vue路由跳转有四种方式 1. router-link 2. this.$router.push() (函数里面调用) 3. this.$router.replace() (用法同push) 4. t ...

  6. Oracle数据库实验一建立数据库

    实验日期:   2019 年  09 月  24  日 实验报告日期:   2019  年  09 月  28 日 一.      实验目的 熟悉oracle环境: 熟练掌握和使用PL-SQL建立数据 ...

  7. centos7编译安装LNMP(nginx-1.16.0,mysql8.0.16,php-7.3.6)常见问题报错及解决方法

    LNMP的安装与配置 nginx-1.16.0安装及配置: 第一步:前往官网下载nignx源码包 下载完毕后上传至服务器(先安装lrzsz) yum -y install lrzsz 安装完毕后执行: ...

  8. vue中百度地图API的调用

    1.使用百度地图api需要使用jsonp,来获取百度api的返回,因为vue不自带jsonp所以需要下载 安装jsonp npm i vue-jsonp -S 引入jsop import Vue fr ...

  9. Android 列表(ListView、RecyclerView)不断刷新最佳实践

    本文微信公众号「AndroidTraveler」首发. 背景 在 Android 列表开发过程中,有时候我们的 Item 会有一些组件,比如倒计时.这类组件要求不断刷新,这个时候由于列表复用的机制,因 ...

  10. .NET Core开发的iNeuOS物联网平台部署树霉派,从网关到云端整体解决方案。助力2019中国.NET峰会。

    2019 中国.NET 开发者峰会正式启动 目       录 1.      概述... 2 2.      树莓派硬件配置... 2 3.      软件信息... 3 4.      Raspb ...