大括号 {} 规则在三种主要的大括号放置规则中,有两种是可以接受的,如下的第一种是最好的:
将大括号放置在关键词下方的同列处: if ($condition) while ($condition)
{
{
...
...
}
}
传统的UNIX的括号规则是,首括号与关键词同行,尾括号与关键字同列: if ($condition) { while ($condition) {
...
...
}
}
理由
引起剧烈争论的非原则的问题可通过折衷的办法解决,两种方法任意一种都是可以接受的,然而对于大
多数人来说更喜欢第一种。原因就是心理研究学习范畴的东西了。
对于更喜欢第一种还有着更多的原因。如果您使用的字符编辑器支持括号匹配功能的话(例如vi),最
重要的就是有一个好的样式。为什么?我们说当你有一大块的程序而且想知道这一大块程序是在哪儿结
束的话。你先移到开始的括号,按下按钮编辑器就会找到与之对应的结束括号,例如: if ($very_long_condition && $second_very_long_condition)
{
...
}
else if (...)
{
...
}
从一个程序块移动到另一个程序块只需要用光标和你的括号匹配键就可以了,不需要来回的移动到行末去
找匹配的括号。
缩进/制表符/空格 规则
使用制表符缩进。
使用三到四个空格为每层次缩进。
不再使用只要一有需要就缩排的方法。对与最大缩进层数,并没有一个固定的规矩,假如缩进层数大于四或
者五层的时候,你可以考虑着将代码因数分解(factoring out code)。
理由
许多编程者支持制表符。
Tabs was invented for a rason
当人们使用差异太大的制表符标准的话,会使阅读代码变得很费力。
如此多的人愿意限定最大的缩进层数,它通常从未被看作是一件工作。我们相信程序员们会明智的选择嵌套
的深度。
例如 function func()
{
if (something bad)
{
if (another thing bad)
{
while (more input)
{
}
}
}
}
小括号、关键词和函数 规则 不要把小括号和关键词紧贴在一起,要用空格隔开它们。 不要把小括号和函数名紧贴在一起。 除非必要,不要在Return返回语句中使用小括号。 理由 关键字不是函数。如果小括号紧贴着函数名和关键字,二者很容易被看成是一体的。 例如 if (condition) { } while (condition) { } strcmp($s, $s1); return 1;
RCS关键词、更改记录和历史记录规则直接使用RCS关键词的规则必须改变,其中包括使用CVS等类似的支持RCS风格关键词的源代码控制系统: 别在文件以内使用 RCS 关键词。 别在文件中保存历史修改记录。 别在文件中保存作者信息记录。 理由 The reasoning is your source control system already keeps all this information. There is no reason to clutter up source files with duplicate information that: makes the files larger makes doing diffs difficult as non source code lines change makes the entry into the file dozens of lines lower in the file which makes a search or jump necessary for each file is easily available from the source code control system and does not need embedding in the file When files must be sent to other organizations the comments may contain internal details that should not be exposed to outsiders.
别在对象架构期做实际的工作别在对象架构期做真实的工作,在架构期初始化变量和/或做任何不会有失误的事情。
当完成对象架构时,为该对象建立一个Open()方法,Open()方法应该以对象实体命名。 理由 构造不能返回错误 。 例如 class Device { function Device() { /* initialize and other stuff */ } function Open() { return FAIL; } }; $dev = new Device; if (FAIL == $dev->Open()) exit(1);
If Then Else 格式 布局
这由程序员决定。不同的花括号样式会产生些微不同的样观。一个通用方式是:
if (条件1) // 注释 { } else if (条件2) // 注释 { } else // 注释 { } 如果你有用到else if 语句的话,通常最好有一个else块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else处,即使在else没有任何的动作。
条件格式总是将恒量放在等号/不等号的左边,例如:
if ( 6 == $errorNum ) ...
一个原因是假如你在等式中漏了一个等号,语法检查器会为你报错。第二个原因是你能立刻找到数值
而不是在你的表达式的末端找到它。需要一点时间来习惯这个格式,但是它确实很有用。
switch 格式 Falling through a case statement into the next case statement shall be permitted as long as a comment is included. default case总应该存在,它应该不被到达,然而如果到达了就会触发一个错误。 如果你要创立一个变量,那就把所有的代码放在块中。 例如 switch (...) { case 1: ... // FALL THROUGH case 2: { $v = get_week_number(); ... } break; default: }
continue,break 和 ? 的使用: Continue 和 Break Continue 和 break 其实是变相的隐蔽的 goto方法。