clear 金沙上线 代碼規則參考
clear 金沙上线 代碼規則參考

在爲Clear金沙上线收集規則的時候一個總是回來的問題就是定義規則來源的領域。代碼約定和概念覆蓋不同的域而且很少會相互重疊。Clear金沙上线規則的目標是儘量接近語言和它的技巧,遠離語義(semantics)和架構。爲什麼呢?

代碼約定

代碼約定定义代码撰写规则。它们包括操作符周围的空格数量(http://symfony.com/doc/current/contributing/code/standards.html),代码行缩进的距离(//make.wordpress.org/core/handbook/coding-standards/php/)和变量名字的意义(http://nette.org/en/coding-standard)。它们一般被金沙上线 code sniffer能汇报代码违规的工具支持;或者用金沙上线 CS Fixer,它试图尽量地来修复任何违规代码。这样有利于避免产生“杂交骆驼和蛇”(//twitter.com/DragonBe/status/555396473341607936)一样的现象。各种各样不同的项目都应该需要有一个这样的约定来认真跟随。

概念

概念,在另一方面,是试图在更高的一个视角来战斗这个问题。这里是设计模式,依赖注入(dependency injections)和单元测试的领域。你可以发现它们被收集在[金沙上线 the right way](//twitter.com/DragonBe/status/555396473341607936)网站上。通过工具[phpmetrics](http://www.phpmetrics.org/)和[phpmd](http://phpmd.org/)自动化地反馈矩阵;它们给予全局和本地值的质量报告并且促使你尽量减少[cyclomatic complexity](http://phpmd.org/rules/codesize.html)或[Halstead metrics](http://en.wikipedia.org/wiki/Halstead_complexity_measures)。

Clear 金沙上线 code

在這之間,還有一系列的正確推薦不屬於上面任何涵蓋的地方。比如,著名的strpos()比較規則該屬於哪個地方呢?strpos必須用===來比較來避免”匹配找不到”的錯誤情況因爲實際上是在第一個索引0的位置上,錯誤的認爲沒有找到的情況。還有,foreach()循環時需要unset它們的指引的情況來避免重用(和錯用)?兩個例子都不屬於代碼約定或代碼概念。

解決方案是避免它們,積累經驗。這個基本上意味着一旦有它們的經驗,一些免疫力將會建立,一些小技巧將會像是玩“死飛”一樣的。所以,一個更好的方案是包括代碼審計(code review)來捕捉那些細違反小規則的情況並且去除它們。

因爲那些技巧很多,Clear金沙上线把自己的一個目標設定爲把它們歸結到一個參考裏。目前,已經有88(本文寫下時)條規則,每條規則包括文檔,標題和ID。那基本上幫你自己建構自己的參考的工作完成了一半:你只需要簡單地選擇一個或多個你需要的,然後把你下一次的代碼審計基於它。也許,你將會有一些對更不常見的金沙上线的情形下的經驗,而且願意分享給我們community的所有其他人。期待在那裏見到你!

ukEnglish version: http://178.62.231.40/clear-php-code-between-coding-convention-and-conception/