¿Por qué la mayoría de los campos (miembros de la clase) en el tutorial de Android comienzan con `m`?

Sé sobre las reglas de camel case, pero estoy confundido con esta regla m. Que significa? Soy un desarrollador de PHP. “Nosotros” usamos primeras letras de variables como indicación de tipo, como ‘b’ para booleano, ‘i’ para entero y demás.

¿Soy ‘m’ una cosa de Java? ¿Es válido para dispositivos móviles? ¿mezclado?

Esta notación proviene de las Pautas de estilo de código de AOSP (Proyecto de código abierto de Android) para colaboradores :

Seguir las convenciones de nombres de campo

  • Los nombres de los campos no públicos y no estáticos comienzan con m.
  • Los nombres de los campos estáticos comienzan con s.
  • Otros campos comienzan con una letra minúscula.
  • Los campos finales públicos estáticos (constantes) son ALL_CAPS_WITH_UNDERSCORES.

Tenga en cuenta que la guía de estilo vinculada es para el código que se contribuirá al Android Open Source Project.

No es una guía de estilo para el código de aplicaciones de Android individuales.

Muchas líneas de guía de encoding usan m para ‘miembros’ de una clase. Entonces, cuando está progtwigndo, puede ver la diferencia entre las variables locales y miembros.

¿Cuál es el prefijo m ?

m significa miembro variable o miembro de datos. Use el prefijo m para campos no públicos y no estáticos.

¿Cuándo usar?

 private String mCityName; private float mTemperature; 

Cuándo no usar?

 public static int mFirstNumber; public static final String mDATABASE_NAME; 

¿Lo que hago?

Personalmente, no lo uso. Hace el código más complicado y caos la legibilidad. Si todavía está utilizando el Bloc de notas para la encoding, no tengo palabras, pero los IDEs modernos son capaces de resaltar y colorear variables miembro y locales o cualquier otra cosa.

Conclusión

¿Utilizar? “Sí” o “No” es su elección personal.

Si se trata de variables miembro en las clases, la ‘m’ significa ‘miembro’. Muchos progtwigdores de Java lo hacen, aunque con IDEs modernos no es necesario ya que tiene resaltado, mouse sobre información sobre herramientas, etc.

Según el libro Clean Code, no es un código limpio.

No es necesario que prefija variables miembro con m . Además, las personas aprenden rápidamente a ignorar el prefijo o sufijo para ver la parte significativa del nombre.

Creo que es muy individual que convenciones de código se utilizan. Prefiero nombrar mis variables con los siguientes prefijos:

  • m – Variables del método
  • c – Variables de clase
  • p – Variables de parámetros

Pero supongo que cada progtwigdor tiene su propio estilo.

Si tienes problemas como

su IDE para generar setters / getters y termina con getmName () y setmName ()

No olvides hacer lo siguiente ( Configuraciones / Editor / Estilo de Código / Java / Generación de Código ):

enter image description here

Como se mencionó anteriormente, está diseñado para diferentes variables. Pero también es muy útil para la generación de código. Si presiona “Alt + Insertar” obtendrá ventanas para las propiedades de generaciones de código más comunes. Si quiere generar el método “get” para su variable, obtendrá.

 public class Foo{ private int bar; public int getBar(){ return this.bar; } public void setBar(int bar){ this.bar = bar; } } 

Pero si declara “m, s” obtendrá:

 public class Foo{ private int mBar; public int getBar(){ return mBar; } public void setBar(int bar){ mBar = bar; } } 

Se generará automáticamente y se borrará “m” o “s” de su constructor, get, set methods name. Después de este “obtener” y “establecer” para el campo se generará sin “m”. Andoroid Fle-> Setting-> Code Style-> Java-> Code Genenretion. Y hacer como en una imagen. Quizás ayude. Lo siento por mi eng. Configurar Android

Para demostrar que definitivamente no debe tratar esta convención para nombrar variables en su código, paso una captura de pantalla de un estudio Android padre a continuación.

Encuentra las variables dentro de un objeto especialmente ordenadas para poner m-variables más bajas que tus variables nativas . Así que al nombrarlos en tu código con el prefijo “m”, los ocultas en un montón de ti mismo .

enter image description here

Parece haber sido una preferencia personal de algunos de los primeros ingenieros de Android / Google para iniciar variables de miembros con ‘m’, por lo que lo recomendaron.

Ahora, esta regla está siendo forzada a bajar la garganta de los desarrolladores en compañías que no son contribuyentes de AOSP, simplemente porque esa página se considera reglas de estilo de código de Android. Hay poco o ningún beneficio en esa regla. Google debería considerar eliminarlo. De lo contrario, especifique que para las aplicaciones de Android, cuáles de las reglas de estilo de código son opcionales.

Agregue su comentario de respaldo a esta petición para eliminar la regla https://code.google.com/p/android/issues/detail?id=226814

Como una cuestión de legibilidad, no debería usarse más (m para variables miembro, s para campos estáticos) si está utilizando un IDE moderno (Android Studio). Android Studio puede diferenciar entre aquellos sin agregar m o s.

También se puede afirmar que representa “mío”, como en la Clase / Instancia dice “Esta variable es mía y nadie más puede acceder a ella”. Diferente a la estática que, si bien podría estar disponible solo para la clase, es compartida por todas las instancias de esa clase. Como si estuvieras dibujando círculos, necesitarías saber qué tan grande es el radio de cada círculo

  private double mRadius; 

pero al mismo tiempo quieres un contador para realizar un seguimiento de todos los círculos, dentro de la clase de círculo podrías tener

  private static int sCircleCount; 

y luego solo tienes miembros estáticos para boost y disminuir el conteo de los círculos que tienes actualmente.

El único beneficio que encontré de este estilo de código, es cuando durante un autocompletado de alguna referencia a una variable, sé que puedo escribir “m” para ver solo las variables miembro.

Seguir convenciones de nombres de campo

 Non-public, non-static field names start with m. Static field names start with s. Other fields start with a lower case letter. Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES. 

Por ejemplo:

 public class MyClass { public static final int SOME_CONSTANT = 42; public int publicField; private static MyClass sSingleton; int mPackagePrivate; private int mPrivate; protected int mProtected; }