visceral something rip new canciones album getter

getter - something - Usando captadores dentro de los métodos de clase.



getter visceral (5)

Si tiene una clase con algunas propiedades simples de obtener / establecer, ¿hay alguna razón para usar a los captadores dentro de los métodos de la clase, o debería usar las variables de miembro privado? Creo que podría haber más de un argumento sobre los establecedores (¿lógica de validación?), Pero me pregunto acerca de los captadores.

Por ejemplo (en Java): ¿hay alguna razón para usar la opción 2 ?:

public class Something { private int messageId; public int getMessageId() { return this.messageId; } public void setMessage(int messageId) { this.messageId = messageId; } public void doSomething() { // Option 1: doSomethingWithMessageId(messageId); // Option 2: doSomethingWithMessageId(getMessageId()); } }


Con los captadores no modificará accidentalmente las variables :) Además, si usa ambos captadores y la variable "sin procesar", su código puede confundirse.

Además, si usa la herencia y redefinió los métodos de obtención en las clases secundarias, los métodos de utilización de obtención funcionarán correctamente, mientras que los que usan las variables brutas no.


Los programadores de Java en general tienden a ser muy consistentes en el uso de métodos getter. Programo varios idiomas y no soy tan consistente en eso;)

Yo diría que siempre que no hagas un captador, está bien usar la variable bruta, para variables privadas . Cuando haces un captador, debes usar solo eso. Cuando hago un captador para un campo privado, mi IDE sugiere que reemplace los accesos de campo sin formato para mí automáticamente cuando introduzco un captador. Cambiar a usar un captador está a solo unas pocas pulsaciones de distancia (y sin ninguna posibilidad de introducir errores), por lo que tiendo a retrasarlo hasta que lo necesite.

Por supuesto, si quieres cosas como inyección de adivinadores, algunos tipos de estructuras de trabajo de proxy y de subclasificación como hibernación, ¡tienes que hacerlo con los usuarios!


Si el valor que le está asignando a la propiedad es un valor conocido o verificado, puede usar la variable privada de forma segura y segura. (Excepto quizás en algunas situaciones especiales, donde sería obvio por qué sería malo). Hacerlo o no es más una cuestión de gusto o estilo. Tampoco es un problema de rendimiento, ya que el compilador lo incorporará si es lo suficientemente simple.

Si el valor es desconocido para la clase, debe usar la propiedad para establecerlo, de modo que pueda proteger la propiedad de valores ilegales.

Aquí hay un ejemplo (en C #):

public class Something { private string _value; public string Value { get { return _value; } set { if (value == null) throw new ArgumentNullException(); _value = value; } } public Something() { // using a known value _value = "undefined"; } public Something(string initValue) { // using an unknown value Value = initValue; } }


Si utiliza el captador, se asegura de que obtendrá el valor después de que se haya aplicado cualquier lógica / decisión. Probablemente esta no sea la situación típica, pero cuando lo sea, te agradecerás por esto.


Si utiliza el método getter en todas partes, y en el futuro, realice una búsqueda de códigos en todas las llamadas de getMessageId () las encontrará todas, mientras que si usó las privadas, puede perder algunas.

Además, si alguna vez se introduce una lógica en el método de establecimiento, no tendrá que preocuparse por cambiar más de 1 ubicación para ello.