"Public static" o "static public"?

Un punto secondario sulle parole chiave di dichiarazione di function in PHP: se hai un metodo di class statico, la parola chiave static dovrebbe venire prima o dopo la parola chiave di visibilità ( public , protected , private )? Supponendo che tutti i methods, statici o less, dispongano di una parola chiave di visibilità, è necessario che la parola chiave visibilità rimanga nella stessa posizione rispetto alla parola chiave della function :

 public function foo() {} public function bar() {} protected function baz() {} private function quux() {} 

Ora fai finta che una coppia sia statica:

 public function foo() {} static public function bar() {} protected function baz() {} static private function quux() {} 

Inoltre, se un metodo è statico, vuoi che sia la prima cosa vista, perché questo ha un impatto maggiore sul tipo di metodo che fa anche la parola chiave visibilità.

Questo è strettamente un problema di leggibilità, poiché ovviamente non ha conseguenze funzionali o di progettazione. (Che mi viene in mente.)

Lingue come Java e C # richiedono che il modificatore di accesso venga prima di tutto Modifica: la precedente battuta è completamente falsa. Nessuna lingua ha questo requisito.


 public static 

sembra corretto a me. Gli argomenti possono essere fatti per entrambi gli approcci e il mio è questo: poiché "statico" qualifica la function piuttosto che il modificatore di accesso ha più senso dire

 <access_modifier> static 

Se la usi al contrario, il significato di "statico" è less chiaro.

Da PSR-2:

La visibilità DEVE essere dichiarata su tutte le properties; e methods; l'abstract e la finale DEVONO essere dichiarati prima della visibilità; statico DEVE essere dichiarato dopo la visibilità. [riferimento]

… se si è interessati allo standard e alle convenzioni di PHP Framework Interop Group.

Quindi public static non static public secondo loro.

Non penso che questa sia una domanda rigorosamente in PHP, e per quel poco che vale, ho sempre preferito la coerenza di inserire prima il modificatore di visibilità. Trovo più facile scansionare.

Oltre alla risposta di Alexei Tenitski .

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

Tutti i methods dovrebbero avere la loro visibilità specificata. Quindi, sappiamo che each metodo avrà qualcosa di menzionato nella definizione, l'unica domanda è "Quale impostazione è?".

Solo alcuni sono statici, quindi per ognuno di essi dobbiamo chiedere "C'è una menzione della parola chiave statica da qualche parte nella definizione?". Quindi, metti prima la statica per rendere più ovvia la risposta a questa domanda.

O, come regola più ampia, ……… tendo a mettere "prima l'aspetto più straordinario" in modo che non salti inconsciamente durante la lettura. ; O)

Prova questo test.

Molto rapidamente … Quanti methods statici ci sono in Classe A?

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

e quanti methods statici ci sono in class B?

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

Penso che la class B sia molto più facile da capire rapidamente.

Metto prima la visibilità in each lingua che uso che ha i modificatori di tipo.

Preferisco il static public poiché in questo modo è più facile individuare methods [solitamente rari] statici nelle classi.

Hai ragione nel senso che non ha alcun effetto sul codice. Quindi dipende dalle tue esigenze di stile, o da quelle del tuo team, per ciò che fai. Consulta con loro e concorda su uno stile.

Se stai programmando solo per te stesso, allora dovresti scegliere tu stesso. La scelta non è importnte, ma la coerenza è.

Un'altra domanda che potresti porre è: dovresti usare "pubblico" o no? Per compatibilità con le versioni precedenti (PHP4 non ha nascosto informazioni) qualsiasi cosa senza un modificatore di visibilità è di default pubblico. Dovresti preoccuparti di scrivere pubblico se è pubblico? Ancora una volta scelta personale: fare un argomento forte in each caso e mi convincerai che la tua scelta è la migliore.

Personalmente, quando passo e pulisco il mio codice, mi piace mettere prima il modificatore di visibilità e specificarlo anche se è pubblico.