“公共静态”还是“静态公众”?

时间:2009-04-16 18:24:06

标签: php oop readability public-method

关于PHP中函数声明关键字的一个小问题:如果你有一个静态的类方法,那么static关键字应该位于可见性关键字(public之前或之后,{{1} ,protected)?假设您的所有方法(静态或其他方式)都有可见性关键字,那么您希望可见性关键字与private关键字保持在同一位置:

function

现在假装一对夫妇是静止的:

public function foo() {}

public function bar() {}

protected function baz() {}

private function quux() {}

此外,如果某个方法是静态的,那么您希望它是第一个事物,因为它对可用的方法产生的影响远远大于可见性关键字的影响。< / p>

这严格来说是一个可读性问题,因为它显然没有任何功能或设计后果。 (我能想到的。)

7 个答案:

答案 0 :(得分:46)

来自PSR-2:

  

必须在所有属性和方法上声明可见性;抽象   最终必须在能见度之前宣布;必须是静态的   在能见度之后宣布。 [reference]

...如果您是关心PHP Framework Interop Group标准和惯例的人。

因此public static而不是static public

答案 1 :(得分:45)

像Java和C#这样的语言要求访问修饰符首先出现 编辑:上一个被删除的行是完全错误的。这两种语言都没有这个要求。


public static

对我来说是正确的。可以对两种方法进行争论,我的是:由于“静态”限定了函数而不是访问修饰符,因此更有意义地说

<access_modifier> static

如果你使用它,那么围绕“静态”含义的另一种方式则不太清楚。

答案 2 :(得分:10)

Alexei Tenitski's answer之后。

I prefer static public since this way 
it is easier to spot [usually rare] static methods in classes.

所有方法都应该指定其可见性。所以,我们知道每个方法都会在定义中提到某个方法,唯一的问题是&#34;它的设置是什么?&#34;。

只有一些是静态的 - 所以,对于每一个我们都要问&#34;在定义的某处是否提到了static关键字?&#34;。所以,先把静态放在第一位,使这个问题的答案更加明显。

或者,作为一个更广泛的规则,.........我倾向于将“最特别的方面”放在第一位。这样我在阅读时就不会潜意识地跳过一些东西。 ; O)

试试这个测试。

很快...... A类中有多少静态方法?

class A {
 public static methodA() {
  }
 protected static methodB() {
  }
 private staticlymethodC() {
  } 
}

B类中有多少静态方法?

class B {
 public methodA() {
  }
 static protected methodB() {
  }
 static private methodC() {
  } 
}

我认为B类更容易理解。

答案 3 :(得分:9)

我认为这不是一个严格的PHP问题,而且对于它的价值很小,我总是倾向于首先放置可见性修饰符的一致性。我觉得扫描更容易。

答案 4 :(得分:5)

我首先将可见性放​​在我使用的每种具有类型修饰符的语言中。

答案 5 :(得分:5)

我更喜欢static public,因为这样更容易在类中发现[通常很少见的]静态方法。

答案 6 :(得分:1)

你是对的,因为它对代码没有影响。因此,根据您自己的风格要求或您团队的风格要求,您需要做什么。咨询他们并就风格达成一致。

如果您只为自己编码,那么您应该自己选择。选择并不重要,但一致性是。

您可能会问的另一个问题是:您是否应该使用“公开”?为了向后兼容(PHP4没有信息隐藏),默认情况下,没有可见性修饰符的任何内容都是公共的。如果是公开的,你是否应该打扰公众写作?再次个人选择:以任何一种方式提出强有力的论据,你会说服我你的选择是最好的。

就个人而言,当我查看并清理自己的代码时,我想首先放置可见性修饰符,并指定它,即使它是公开的。