假设您正在声明一个包含所有铃声和口哨的类 - 构造函数和析构函数,公共,私有,受保护和静态方法和属性,魔术方法等。
你如何在逻辑上组织这一切?例如,您是否通过可见性对事物进行分组?你是否按字母顺序排列方法名称?你把魔术方法组合在一起吗?你把构造函数放在开头,将析构函数放在最后吗?
显然这是主观的,但我很想知道对别人有用的东西,或者在阅读别人的代码时你觉得容易导航的东西。
答案 0 :(得分:26)
如果我有时间,我会尝试按字母顺序排列; P
答案 1 :(得分:8)
class Foobar
{
var $public;
function __construct(....
function public_method_1()...
function public_method_2()...
//
var $_priv;
function _private_1()...
function _private_2()...
}
基本上,最有趣的(对于类用户)首先是
答案 2 :(得分:2)
我首先放静态变量,然后是类变量。那么我通常把构造函数作为第一个方法(或者如果它是一个带有“init”的类或者一个框架调用的其他方法,我会把它放在顶部)
之后我尝试将相关方法组合在一起以便进行最少的滚动,但一段时间后它会变得混乱。
拥有像Eclipse + PDT或vsPHP这样的IDE会向您显示类的大纲视图,您可以根据需要对方法进行排序,这样您就不必去寻找代码。
答案 3 :(得分:1)
我知道这是一篇古老且被遗忘的帖子,但今天我遇到了我的班级成员,这里是我的五美分:
abstract class Stdclass
{
public const CONSTANT;
protected const CONSTANT;
private const CONSTANT;
use TraitA, TraitB;
public static $property;
protected static $property;
private static $property;
abstract public static function method();
abstract protected static function method();
public static function method() {}
protected static function method() {}
private static function method() {}
final public static function method() {}
final protected static function method() {}
public $property;
protected $property;
private $property;
abstract public function method();
abstract protected function method();
public function __construct() {}
public function __destruct() {}
public function __otherMagicMethods() {}
public function getterMethod() {}
public function setterMethod() {}
public function method() {}
final public function method() {}
protected function method() {}
final protected function method() {}
private function method() {}
}
答案 4 :(得分:0)
就个人而言,我把类变量放在顶部(通过可见性),然后是魔术方法,然后是公共方法,然后是保护/私有方法。它是大多数经常编辑到最不经常编辑的事物的排序组合,并且使重要方法中显而易见的事情变得明显(这就是为什么魔术方法比通常更高的原因)。
答案 5 :(得分:0)
我想我在一个函数中所做的唯一一种组织就是将__construct放在前面,然后在类中增长而没有任何组织,但我通常从非公共函数开始并完成公共函数
答案 6 :(得分:0)
就个人而言,我有顶级的常数;属性接下来,尝试维护私人,受保护,然后公共。对于这些方法,我首先选择getter和setter,然后将其他内部方法松散地组合在一起,然后使用__construct和其他魔术方法,使用任何静态方法....但我很少会完全保持这种顺序。
答案 7 :(得分:0)
说实话(这听起来像是不好的做法)我没有做任何努力以任何特定的顺序安排它们。 使用Visual Studio和Resharper意味着它在很大程度上是不必要的。