php - programacion - ¿Cómo organizar métodos y propiedades dentro de una clase?
programacion orientada a objetos (8)
Digamos que estás declarando una clase con todas las campanas y silbidos: constructor y destructor, métodos y propiedades públicas, privadas, protegidas y estáticas, métodos mágicos, etc.
¿Cómo organizas todo esto lógicamente? Por ejemplo, ¿agrupas las cosas por visibilidad? ¿Alfabetizas los nombres de los métodos? ¿Agrupan métodos mágicos juntos? ¿Pones el constructor al principio y el destructor al final?
Obviamente, esto es subjetivo, pero tengo curiosidad por escuchar lo que ha funcionado para otros, o lo que te resulta fácil navegar al leer el código de otros.
- Constantes
- Campos de visibilidad (públicos, protegidos, privados).
- Constructor y destructor y otros métodos mágicos.
- Métodos de visibilidad (públicos, protegidos, privados).
Si tengo tiempo, trato de ponerlos en orden alfabético; P
Me gusta 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, lo más interesante (para usuarios de clase) primero
Para ser honesto (y esto suena como una mala práctica) no hago ningún esfuerzo para organizarlos en ningún orden en particular. Trabajar con Visual Studio y Resharper significa que es en gran medida innecesario.
Personalmente, coloco las variables de clase en la parte superior (por visibilidad), luego los métodos mágicos, luego los métodos públicos, luego los métodos protegidos / privados. Es una combinación de ordenar las cosas en 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 (por lo que los métodos mágicos son más altos de lo que normalmente serían).
Personalmente, tengo constantes de clase en la parte superior; Propiedades siguientes, tratando de mantener en orden privado, protegido, luego público. En cuanto a los métodos, busco primero los captadores y los definidores, luego otros métodos internos agrupados libremente, seguidos de __construir y otros métodos mágicos, y los métodos estáticos duran ... pero rara vez termino manteniéndome completamente en ese orden.
Pongo primero las variables estáticas, la siguiente variable de clase. luego 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 marco, lo pondré en la parte superior)
Después de eso, trato de mantener los métodos relacionados agrupados para tener la menor cantidad de desplazamiento, pero después de un tiempo puede causar problemas.
Tener un IDE como Eclipse + PDT o vsPHP le mostrará la vista de esquema de su clase y podrá ordenar los métodos a su gusto para que no tenga que buscar el código.
Sé que es una publicación antigua y olvidada, pero me he dado cuenta de que hoy ordené a los miembros de mi clase y aquí están mis cinco centavos:
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() {}
}
Supongo que el único tipo de organización que hago dentro de una función es poner __construir al frente desde 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