style standard programming guides guide google coding android coding-style

android - standard - google style



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

Sé acerca de las reglas de los casos de camellos, pero estoy confundido con esta regla m. Que significa? Soy un desarrollador de PHP. "Nosotros" usamos las primeras letras de las variables como indicación de tipo, como ''b'' para boolean, ''i'' para enteros y así sucesivamente.

¿Es ''m'' una cosa de Java? ¿Es sinónimo de móvil? ¿mezclado?


Como cuestión de legibilidad, no debe 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.


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 generación de código más comunes. Si quieres generar el método "get" para tu variable obtendrás.

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 eliminará "m" o "s" de su constructor, obtener, establecer el nombre de los métodos. Después de esto, "get" y "set" para el campo se generarán sin "m". Andoroid Fle-> Configuración-> Estilo de código-> Java-> Código Genenretion. Y hacer como en una foto. Tal vez ayude. Lo siento por mi eng. Configurar android


Creo que es muy individual qué 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 parametro

Pero supongo que cada programador tiene su propio estilo.


De acuerdo con el libro Clean Code, no es un código limpio.

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


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


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

Siga las convenciones de nomenclatura de campo

  • Los nombres de campo no públicos y no estáticos comienzan con m.
  • Los nombres de 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 que el código se contribuya al proyecto de código abierto de Android.

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


Para probar que definitivamente no debería tratar esta convención para nombrar variables en su código, paso una captura de pantalla de un Android Studio principal a continuación.

Encuentre que las variables dentro de un objeto están especialmente ordenadas para poner m variables más bajas que sus variables nativas . Entonces, al nombrarlos en su código con el prefijo "m", los ocultará en un montón de usted mismo .


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

Ahora esta regla está siendo forzada a tragar a 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 soporte a esta petición para eliminar la regla code.google.com/p/android/issues/detail?id=226814


Seguir las convenciones de nomenclatura de los campos.

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; }


Si se trata de variables miembro en las clases, la "m" significa "miembro". Muchos programadores de Java hacen eso, aunque con los IDE modernos no es necesario, ya que tiene resaltado, deslice el cursor sobre las herramientas, etc.


Si tienes problemas como

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

No olvide hacer lo siguiente ( Configuración / Editor / Estilo de código / Java / Generación de código ):


También se puede decir que significa "mío", ya que en la Clase / Instancia se dice "Esta variable es mía y nadie más puede acceder a ella". Diferente a la estática que, si bien puede 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 desea un contador para realizar un seguimiento de todos los círculos, dentro de la clase de círculo que podría tener

private static int sCircleCount;

y luego solo tenga miembros estáticos para aumentar y disminuir el conteo de los círculos que tiene actualmente.


Una gran cantidad de líneas de guía de codificación utilizan m para ''miembros'' de una clase. Entonces, cuando está programando, puede ver la diferencia entre las variables locales y miembros.


¿Qué es el prefijo m ?

m significa variable miembro o miembro de datos. Utilice el prefijo m para los 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 el caos la legibilidad. Si aún está utilizando el Bloc de notas para la codificación, no tengo palabras, pero los IDE modernos son capaces de resaltar y colorear las variables locales y de los miembros o cualquier otra cosa.

Conclusión

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