Setter y Getter funciones. En Android. Rendimiento de gastos generales?

Cuando estaba aprendiendo la edición estándar de Java, las funciones getter y setter se usaban a menudo para ocultar variables y para reducir el acceso directo a ellas. Me han dicho por varias fuentes que en Android no debe utilizar estas funciones y sólo modificar las variables directamente. La razón es que hay una pérdida de rendimiento debido a gastos generales cuando se utiliza getters y setters se utiliza en Android. Resultando en más uso de memoria y ralentizando el sistema.

¿Hay algo de cierto en esto? Y si hay, por qué la pérdida de rendimiento por usar getter y setter?

A partir de la documentación que se encuentra aquí con un getter y setter es una mala idea en android. Como dice,

Esto es una mala idea en Android. Las llamadas a métodos virtuales son costosas, mucho más que las búsquedas de instancia. Es razonable seguir prácticas comunes de programación orientada a objetos y tener getters y setters en la interfaz pública, pero dentro de una clase siempre debe tener acceso a los campos directamente.

Obtenga más información sobre el rendimiento aquí .

De acuerdo con los consejos de rendimiento proporcionados por Google android equipo:

Sin un JIT, el acceso directo al campo es aproximadamente 3 veces más rápido que invocar un getter trivial. Con el JIT (donde el acceso directo al campo es tan barato como el acceso a un local), el acceso directo al campo es aproximadamente 7 veces más rápido que invocar un getter trivial.

Sin embargo estoy de acuerdo en que una buena práctica de codificación es más importante y el equipo también mencionó que:

Tenga en cuenta que si está utilizando ProGuard, puede tener lo mejor de ambos mundos, ya que ProGuard puede acceder a los accesores para usted.

Por lo tanto, creo que está bien usar el getter y setter;)

Referencia

La pérdida de rendimiento para setters y getters es insignificante. Los campos públicos son una mala práctica y violan los principios orientados a objetos de la encapsulación de datos y la ocultación de la información.

El uso de un setter o getter requiere una llamada de propiedad más que acceder al campo directamente. Eso no es nada, así que no te preocupes por eso, enfócate en escribir un buen código.

editar:

Para aclarar, esto es del mismo documento android que los otros carteles están citando:

Es razonable seguir prácticas comunes de programación orientada a objetos y tener getters y setters en la interfaz pública, pero dentro de una clase siempre debe tener acceso a los campos directamente.

En otras palabras, usted todavía necesita getters y setters. Usted sólo debe tratar de evitar llamar desde dentro de la clase que contiene esos métodos ya que tiene acceso directo al campo.

  • Prueba de la unidad de Android Studio SQLiteDataBase es nula
  • Cómo convertir MatOfPoint a MatOfPoint2f en opencv java api
  • Detectar orientación con javascript en dispositivos Android
  • ¿Cómo puedo encontrar sábados y domingos en un mes determinado?
  • La aplicación se bloquea y suspende todos los subprocesos al utilizar AsyncTask
  • Formato doble para al menos un dígito significativo en Java / Android
  • ¿No consigues el archivo a través de FileInputStream?
  • Libgdx para Android muestra negro antes de la pantalla principal
  • Reproducción de un archivo de imagen GIF animado en la vista de imagen
  • IllegalArgumentException: columna no válida
  • ApiDemos 3.0 / 3.1 no creará debido a tipos no resueltos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.