![]() |
Nombres de atributos de clase y nombres de propiedades
Hola,
He hecho una clase que tiene un atributo con un nombre igual que su propiedad y la clase hace cosas raras, el método set se llama de manera recursiva y el programa acaba "petando". Os pongo la clase:
Lo he resuelto renombrando la propiedad a materialNameProp y la clase ya no hace cosas raras, ¿no es posible tener un atributo con el mismo nombre que una propiedad? Gracias, noob. |
Cita:
Existen una convención que ayuda a evitar estos problemas, y es que las variables privadas dentro de la clase se preceden de la letra "f" (de field) mientras que las funciones y procedimientos que implementan las acciones de asignación y toma de valores de las propiedades se preceden de las palabras get y set, aunque yo suelo usar toma y pon. De la misma forma, si el parámetro de una función o procedimiento pudiera entrar en conflicto con alguna variable global o una propiedad o cualquier otra cosa, se suele prefijar con la letra "a". Así quedaría tu clase con esta convención:
De todas formas, si no hay que hacer ninguna operación especial con la asignación de propiedades, es mejor usar la forma directa:
Esta forma necesita menos memoria y es de ejecución más rápida (en la mayoría de los casos). |
Muchas gracias Ñuño, perfecta explicación, por cierto, ¿dónde puedo encontrar esas convenciones?
|
Yo leí estas convenciones en la documentación adjunta de Delphi 6. No el manual de desarrollo, sino en una sección de documentación adicional mantenida por Borland. No sé si Embarcadero la mantiene o no.
|
He visto la Object Pascal Style Guide, está bastante interesante.
En lo referente a mi pregunta pone: Begin each type declaration with a capital F, and declare all data types in the private section, using properties or getters and setters to provide public access. For example, use the name GetSomething to name a function returning an internal field value and use SetSomething to name a procedure setting that value. |
Creo que ese es el documento al que me refiero, noob. :) Aunque no hay que tomárselo al pie de la letra. Me refiero a que son buenas ideas a aplicar si estás cómodo, pero no tomarlo como normas inamovibles.
|
Cita:
Cita:
|
La franja horaria es GMT +2. Ahora son las 12:53:35. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi