首页 后端开发 php教程 php编程命名规则_PHP

php编程命名规则_PHP

Jun 01, 2016 pm 12:38 PM
使用 变量 命名 编程 规则

命名是程序规划的核心。古人相信只要知道一个人真正的名字就会获得凌驾于那个人之上的不可思议的力
量。只要你给事物想到正确的名字,就会给你以及后来的人带来比代码更强的力量。别笑!

名字就是事物在它所处的生态环境中一个长久而深远的结果。总的来说,只有了解系统的程序员才能为系
统取出最合适的名字。如果所有的命名都与其自然相适合,则关系清晰,含义可以推导得出,一般人的推
想也能在意料之中。

如果你发觉你的命名只有少量能和其对应事物相匹配的话, 最好还是重新好好再看看你的设计吧。




类命名
在为类(class )命名前首先要知道它是什么。如果通过类名的提供的线索,你还是想不起这个类是
什么 的话,那么你的设计就还做的不够好。


超过三个词组成的混合名是容易造成系统各个实体间的混淆,再看看你的设计,尝试使用(CRC Se-
ssion card)看看该命名所对应的实体是否有着那么多的功用。


对于派生类的命名应该避免带其父类名的诱惑,一个类的名字只与它自身有关,和它的父类叫什么无
关。


有时后缀名是有用的,例如:如果你的系统使用了代理(agent ),那么就把某个部件命名为“下
载代理”(DownloadAgent)用以真正的传送信息。
方法和函数命名
通常每个方法和函数都是执行一个动作的,所以对它们的命名应该清楚的说明它们是做什么的:用
CheckForErrors()代替ErrorCheck(),用DumpDataToFile()代替DataFile()。这么做也可以使功能和
数据成为更可区分的物体。


有时后缀名是有用的:
Max - 含义为某实体所能赋予的最大值。
Cnt - 一个运行中的计数变量的当前值。
Key - 键值。
例如:RetryMax 表示最多重试次数,RetryCnt 表示当前重试次数。


有时前缀名是有用的:
Is - 含义为问一个关于某样事物的问题。无论何时,当人们看到Is就会知道这是一个问题。
Get - 含义为取得一个数值。
Set - 含义为设定一个数值
例如:IsHitRetryLimit。



缩写词不要全部使用大写字母
无论如何,当遇到以下情况,你可以用首字母大写其余字母小写来代替全部使用大写字母的方法来表
示缩写词。

使用: GetHtmlStatistic.
不使用: GetHTMLStatistic.

理由
当命名含有缩略词时,人们似乎有着非常不同的直觉。统一规定是最好,这样一来,命名的含义就完
全可以预知了。
举个NetworkABCKey的例子,注意C是应该是ABC里面的C还是key里面的C,这个是很令人费解的。有些
人不在意这些,其他人却很讨厌这样。所以你会在不同的代码里看到不同的规则,使得你不知道怎么
去叫它。

例如
class FluidOz // 不要写成 FluidOZ
class GetHtmlStatistic // 不要写成 GetHTMLStatistic



--------------------------------------------------------------------------------

类命名
使用大写字母作为词的分隔,其他的字母均使用小写
名字的首字母使用大写
不要使用下划线('_')
理由
根据很多的命名方式,大部分人认为这样是最好的方式。
例如
class NameOneTwo

class Name



--------------------------------------------------------------------------------

类库命名
目前命名空间正在越来越广泛的被采用,以避免不同厂商和团体类库间的类名冲突。


当尚未采用命名空间的时候,为了避免类名冲突,一般的做法是在类名前加上独特的前缀,两个字符就
可以了,当然多用一些会更好。
例如
John Johnson的数据结构类库可以用Jj做为前缀,如下:
class JjLinkList
{
}



--------------------------------------------------------------------------------

方法命名
采用与类命名一致的规则
理由
使用所有不同规则的大部分人发现这是最好的折衷办法。
例如
class NameOneTwo
{
function DoIt() {};
function HandleError() {};
}



--------------------------------------------------------------------------------

类属性命名
属性命名应该以字符‘m’为前缀。
前缀‘m’后采用于类命名一致的规则。
‘m’总是在名字的开头起修饰作用,就像以‘r’开头表示引用一样。
理由
前缀'm'防止类属性和方法名发生任何冲突。你的方法名和属性名经常会很类似,特别是存取元素。
例如
class NameOneTwo
{
function VarAbc() {};
function ErrorNumber() {};
var mVarAbc;
var mErrorNumber;
var mrName;
}



--------------------------------------------------------------------------------

方法中参数命名
第一个字符使用小写字母。
在首字符后的所有字都按照类命名规则首字符大写。
理由
你可以随时知道那个变量对应那个变量。
你可以使用与类名相似的名称而不至于产生重名冲突。
例如
class NameOneTwo
{
function StartYourEngines(
&$rSomeEngine,
&$rAnotherEngine);
}



--------------------------------------------------------------------------------

变量命名
所有字母都使用小写
使用'_'作为每个词的分界。
理由
通过这一途径,代码中变量的作用域是清晰的。
所有的变量在代码中都看起来不同,容易辨认。
例如
function HandleError($errorNumber)
{
$error = OsErr();
$time_of_error = OsErr->getTimeOfError;
$error_processor = OsErr->getErrorProcessor;
}



--------------------------------------------------------------------------------

引用变量和函数返回引用
引用必须带‘r’前缀
理由
使得类型不同的变量容易辨认
它可以确定哪个方法返回可更改对象,哪个方法返回不可更改对象。
例如
class Test
{
var mrStatus;
function DoSomething(&$rStatus) {};
function &rStatus() {};
}



--------------------------------------------------------------------------------

全局变量
全局变量应该带前缀‘g’。
理由
知道一个变量的作用域是非常重要的。
例如
global $gLog;
global &$grLog;



--------------------------------------------------------------------------------

定义命名 / 全局常量
全局常量用'_'分隔每个单词。
理由
这是命名全局常量的传统。你要注意不要与其它的定义相冲突。
例如
define("A_GLOBAL_CONSTANT", "Hello world!";


--------------------------------------------------------------------------------

静态变量
静态变量应该带前缀‘s’。
理由
知道一个变量的作用域是非常重要的。
例如
function test(){ static $msStatus = 0;
}



--------------------------------------------------------------------------------

函数命名
函数名字采用C GNU的惯例,所有的字母使用小写字母,使用'_'分割单词。
理由
这样可以更易于区分相关联的类名。
例如
function some_bloody_function()
{
}



--------------------------------------------------------------------------------

错误返回检测规则
检查所有的系统调用的错误信息,除非你要忽略错误。
为每条系统错误消息定义好系统错误文本以便include。


--------------------------------------------------------------------------------

大括号 {} 规则
在三种主要的大括号放置规则中,有两种是可以接受的,如下的第一种是最好的:
将大括号放置在关键词下方的同列处:
if ($condition) while ($condition)
{ {
... ...
} }

传统的UNIX的括号规则是,首括号与关键词同行,尾括号与关键字同列:
if ($condition) { while ($condition) {
... ...
} }

理由
引起剧烈争论的非原则的问题可通过折衷的办法解决,两种方法任意一种都是可以接受的,然而对于大
多数人来说更喜欢第一种。原因就是心理研究学习范畴的东西了。
对于更喜欢第一种还有着更多的原因。如果您使用的字符编辑器支持括号匹配功能的话(例如vi),最
重要的就是有一个好的样式。为什么?我们说当你有一大块的程序而且想知道这一大块程序是在哪儿结
束的话。你先移到开始的括号,按下按钮编辑器就会找到与之对应的结束括号,例如:

if ($very_long_condition && $second_very_long_condition)
{
...
}
else if (...)
{
...
}

从一个程序块移动到另一个程序块只需要用光标和你的括号匹配键就可以了,不需要来回的移动到行末去
找匹配的括号。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

BTCC教学:如何在BTCC交易所绑定使用MetaMask钱包? BTCC教学:如何在BTCC交易所绑定使用MetaMask钱包? Apr 26, 2024 am 09:40 AM

MetaMask(中文也叫小狐狸钱包)是一款免费的、广受好评的加密钱包软件。目前,BTCC已支持绑定MetaMask钱包,绑定后可使用MetaMask钱包进行快速登入,储值、买币等,且首次绑定还可获得20USDT体验金。在BTCCMetaMask钱包教学中,我们将详细介绍如何注册和使用MetaMask,以及如何在BTCC绑定并使用小狐狸钱包。MetaMask钱包是什么?MetaMask小狐狸钱包拥有超过3,000万用户,是当今最受欢迎的加密货币钱包之一。它可免费​​使用,可作为扩充功能安装在网络

C++ 函数命名中参数顺序的考虑 C++ 函数命名中参数顺序的考虑 Apr 24, 2024 pm 04:21 PM

在C++函数命名中,考虑参数顺序至关重要,可提高可读性、减少错误并促进重构。常见的参数顺序约定包括:动作-对象、对象-动作、语义意义和遵循标准库。最佳顺序取决于函数目的、参数类型、潜在混淆和语言惯例。

使用正则表达式去除 PHP 数组中的重复值 使用正则表达式去除 PHP 数组中的重复值 Apr 26, 2024 pm 04:33 PM

使用正则表达式从PHP数组中去除重复值的方法:使用正则表达式/(.*)(.+)/i匹配并替换重复项。遍历数组元素,使用preg_match检查匹配情况。如果匹配,跳过值;否则,将其添加到无重复值的新数组中。

指针比较的规则和例外? 指针比较的规则和例外? Jun 04, 2024 pm 06:01 PM

在C/C++中,指针比较规则如下:指向同一对象的指针相等。指向不同对象的指针不相等。例外:指向空地址的指针相等。

什么是Bitget Launchpool?如何使用Bitget Launchpool? 什么是Bitget Launchpool?如何使用Bitget Launchpool? Jun 07, 2024 pm 12:06 PM

BitgetLaunchpool是一个为所有加密货币爱好者而设计的动态平台。BitgetLaunchpool以其独特的产品脱颖而出。在这里,您可以质押您的代币来解锁更多奖励,包括空投、高额回报,以及专属早期参与者的丰厚奖池。什么是BitgetLaunchpool?BitgetLaunchpool是一个加密货币平台,可以透过用户友善的条款和条件来质押和赚取代币。透过在Launchpool中投入BGB或其他代币,用户有机会获得免费空投、收益和参与丰厚的奖金池。质押资产的收益在T+1小时内计算,奖励按

编程是干啥的,学了有什么用 编程是干啥的,学了有什么用 Apr 28, 2024 pm 01:34 PM

1、编程可以用于开发各种软件和应用程序,包括网站、手机应用、游戏和数据分析工具等。它的应用领域非常广泛,覆盖了几乎所有行业,包括科学研究、医疗保健、金融、教育、娱乐等。2、学习编程可以帮助我们提高问题解决能力和逻辑思维能力。编程过程中,我们需要分析和理解问题,找出解决方案,并将其转化为代码。这种思维方式能够培养我们的分析和抽象能力,提高我们解决实际问题的能力。

使用 Python 解决问题:作为初学者,解锁强大的解决方案 使用 Python 解决问题:作为初学者,解锁强大的解决方案 Oct 11, 2024 pm 08:58 PM

Python 使初学者能够解决问题。其用户友好的语法、广泛的库以及变量、条件语句和循环等功能可实现高效的代码开发。从管理数据到控制程序流程和执行重复任务,Python 提供了

C++ 编程谜题集锦:激发思维,提升编程水平 C++ 编程谜题集锦:激发思维,提升编程水平 Jun 01, 2024 pm 10:26 PM

C++编程谜题涵盖斐波那契数列、阶乘、汉明距离、数组最大值和最小值等算法和数据结构概念,通过解决这些谜题,可以巩固C++知识,提升算法理解和编程技巧。

See all articles