2010-07-29 21 views
21

Digamos que está declarando una clase con todos los detalles - constructor y destructor, público, privado, protegido y métodos y propiedades estáticos, métodos mágicos, etc.¿Cómo se organizan métodos y propiedades dentro de una clase?

¿Cómo se organiza todo esto lógicamente? Por ejemplo, ¿agrupa las cosas por visibilidad? ¿Alfabetizas los nombres de los métodos? ¿Agrupe los métodos mágicos juntos? ¿Pones el constructor al principio y el destructor al final?

Obviamente esto es subjetivo, pero tengo curiosidad por saber qué ha funcionado para otros, o qué es lo que le resulta fácil de navegar cuando lee el código de otros.

Respuesta

24
  1. Constantes
  2. campos de visibilidad (público, protegido, privado)
  3. constructor y el destructor y otros métodos mágicos
  4. Métodos de visibilidad (público, protegido, privado)

Si Tengo tiempo, trato de ponerlos en orden alfabético; P

+0

La mayoría de lo que haría, solo mis métodos primero se ordenan por métodos de instancia y métodos estáticos. – Wrikken

+0

Raramente tengo métodos estáticos, así que los omití. Actualizará la lista – Mchl

+0

¿Por visibilidad = de mayor a menor? Como público, protegido, privado? –

0

Personalmente, pongo las variables de clase en la parte superior (por visibil ity), luego métodos mágicos, luego métodos públicos, luego métodos protegidos/privados. Es una combinación de ordenar cosas de la mayoría de las veces editadas a las menos editadas y hacer que sea obvio lo que está sucediendo en los métodos importantes (que es por lo que los métodos mágicos son más altos de lo que normalmente serían).

0

Supongo que el único tipo de organización que hago dentro de una función es poner __construct al frente a partir de entonces la clase crece sin ningún tipo de organización de mi parte pero generalmente comienzo con funciones no públicas y termino con las funciones públicas

0

Personalmente, tengo constantes de clase en la parte superior; propiedades siguientes, tratando de mantener en orden de privado, protegido, luego público. Para los métodos, primero busco getters y setters, luego otros métodos internos agrupados libremente, seguidos de __construct y otros métodos mágicos, con métodos estáticos duran ... pero rara vez termino manteniéndome en ese orden.

7

como esto

class Foobar 
{ 
     var $public; 

     function __construct(.... 

     function public_method_1()... 
     function public_method_2()... 

     // 

     var $_priv; 

     function _private_1()... 
     function _private_2()... 
} 

básicamente, más interesante (para la clase de usuarios) cosas primero

+2

Me gusta la idea "más interesante primero" –

0

Para ser honesto (y esto va a sonar como una mala práctica) No hago ningún esfuerzo para organizarlos en cualquier orden en particular. Trabajar con Visual Studio y Resharper significa que es en gran medida innecesario.

+0

I no conozco esos programas, ¿por qué hacen que el orden sea irrelevante? Estoy usando Zend Studio, y me mostrará un esquema de métodos si quiero. El esquema es más fácil de escanear si está en algún orden. ¿Qué es diferente en tu configuración? –

+0

Visual Studio es el IDE de Microsoft para desarrollar aplicaciones .Net y Resharper es un complemento que proporciona varias mejoras. Con un archivo de clase abierto en Visual Studio, puede usar un cuadro combinado para saltar a una propiedad/método particular. Resharper tiene una función mediante la cual, al presionar un atajo de teclado, puede escribir un método que encuentre en una búsqueda de toda la solución (lo que le permite saltar a ese método dentro de su clase) – ChrisFletcher

2

Pongo los vars estáticos primero, la clase variable a continuación. entonces generalmente pongo el constructor como el primer método (o si es una clase con "init" o algún otro método llamado por un framework lo pondré en la parte superior)

Después de eso trato de mantenerme relacionado métodos agrupados para tener la menor cantidad de desplazamiento, pero puede ser complicado después de un tiempo.

Tener un IDE como Eclipse + PDT o vsPHP le mostrará la vista de esquema de su clase y puede ordenar los métodos que desee para que no tenga que buscar el código.

Cuestiones relacionadas