una propiedades objetos herencia ejemplos crear como clases clase class-design

class design - propiedades - ¿Por qué poner los campos y métodos privados en la parte superior de la clase?



netbeans clases y objetos (11)

He visto este estándar de facto en muchos lugares en muchos idiomas, pero nunca lo he entendido. ¿Por qué poner sus campos y métodos privados en la parte superior de una declaración de clase? Metafóricamente, parece que las cosas privadas deberían estar ubicadas en la parte inferior (ocultas) y todo lo público debería estar en la parte superior, de modo que cuando lea la clase de arriba a abajo, primero vea la interfaz pública y luego el funcionamiento interno.

¿Cuál es el razonamiento detrás de esto?

EDITAR: Solo para aclarar, no me refiero a la práctica de declarar a todos los miembros en la parte superior de la clase, sino de poner a los miembros / métodos privados en la parte superior de una declaración de la clase, antes de cualquier cosa pública.


¡Pensé que el estándar de facto es primero los métodos públicos! Al menos así escribo mis clases. Me ayuda a elegir las estructuras de datos para mis métodos.


Con respecto a los campos , es bastante común que todos los campos sean privados (encapsulación y todo eso). Y son pequeños. Ya que son pequeños, es agradable y posible juntarlos a todos, y lo mejor de una clase es un lugar agradable y estable para colocarlos. No sé si esta es la justificación histórica para eso, creo que las raíces del lenguaje C probablemente lo expliquen mejor, pero podría ser una razón por la que las mantengamos allí.

Por mi parte, tiendo a poner métodos privados en la parte inferior, por las razones que sugieres.


Dos razones.

Si están todos juntos en la parte superior, son fáciles de encontrar y de inspeccionar cuando se crea una cosa nueva para ver qué convenciones de nomenclatura están en funcionamiento y qué nombres están y no están disponibles.

En el lenguaje C, y en javascript, todas las referencias en el código deben declararse y / o definirse anteriormente donde se hace referencia, porque todo lo que se menciona debe ser ya conocido. (Sí, lo sé, javascript sólo sorta.)


En OOP- hay dos cosas - datos y comportamiento

Los miembros privados representan los datos y los métodos públicos representan el comportamiento.

Puede pensar en el comportamiento solo a la luz de los datos que representa. Por eso me gustaría mantener mis elementos de datos en la parte superior.


Estoy de acuerdo en que probablemente proviene de C, pero también cumple una función práctica.

En todo lo que desee aprender en el orden en que se requiere tal conocimiento, como aprender a agregar antes de aprender a multiplicar.

En el caso del código, sus funciones públicas generalmente harán referencia a funciones internas privadas, y es menos probable que sus funciones privadas hagan referencia a las públicas (aunque ciertamente existe una superposición). será útil cuando se trata de entender qué están haciendo los métodos públicos con esas variables.

De esta manera, también es útil comprender qué hacen los métodos privados antes de leer sobre los métodos públicos que los llaman.

En general, creo que es un estilo que viene de C y de lenguajes anteriores, pero como es funcionalmente más útil donde está, no veo ningún beneficio en el cambio de estilos.

Y, como siempre, romper la consistencia nunca es una buena idea a menos que haya una razón increíblemente convincente para hacerlo.


No es un secreto que están ahí. ¿Tienes miedo de que alguien aprenda sobre el funcionamiento interno? Si tienen la fuente, pueden aprender todo lo que necesitan saber sobre su clase.

Ponerlos en contacto con los demás hace que sea más fácil desarrollar esa clase. Todas sus variables de clase están en un solo lugar, al igual que sus métodos.


Personalmente, cuando trato de leer el código de otra persona y lo entiendo, me gusta tener el contexto que proporcionan los campos privados. Me da una idea rápida del tipo de cosas que están haciendo y de lo que puedo esperar ver. Si se hace correctamente, puede dar una buena vista previa, casi como una tabla de contenido al resto del código.


Probablemente proviene de los días de C, cuando todas las variables debían definirse en la parte superior, como parte de la inicialización.


Se deriva de los días en que tuvo que declarar todo, que incluye funciones y variables, antes de poder usarlas.

Las variables y funciones internas (privadas) fueron en la parte superior del archivo y las funciones externas (públicas) fueron en la parte inferior del archivo. Esto significaba que las funciones públicas podían hacer referencia a las funciones internas. Si tuviera una recursión, tendría que reenviar la función declarando su perfil.

Cuando los idiomas permitieron que el código abarcara varios archivos, tenía que colocar declaraciones de funciones y variables públicas en archivos de encabezado para que pudieran incluirse en los otros archivos del proyecto, o incluso en otros proyectos.


Supongo que es hábito. Debe declarar funciones y variables antes de poder usarlas para que esto sea consistente.

Por otro lado, es lo que realmente no quieres que otras personas lean, por lo que pertenece al final.


debido a lenguajes como el que tiene, como dice @ChrisF >> como los lenguajes interpretativos, Python es uno prominente