You are on page 1of 7

Ideas Para Nombrar Tus Cdigos Y Archivos En

Android
Hola,
Te ha pasado que algunas veces no sabes cmo nombrar tus archivos java, tus layouts, iconos, etc.?
O que no sabes cmo escribir tus clases, campos y mtodos Java?
A todos nos ha pasado alguna vez.
Es algo complicado porque cuando vuelves a releer tu cdigo para el mantenimiento de una app,
tendrs preguntas como:
- Y yo por que puse esto aqu?
- Chanfle! Qu es lo que hace este cdigo?
- Por qu fue que le puse as a esta variable?
Aunque parece algo insignificante, el nombrado dentro de nuestros proyectos Android juega un papel
importante para mantener consistencia en todo nuestro desarrollo.
Asocia nuestra forma de pensar y los conceptos que estamos asociando al problema tratado.
As que en este conjuntos de lineamientos que he preparado para todos los seguidores de Hermosa
Programacin, veremos algunas recomendaciones para mantener un orden.
Te soy sincero, ninguna es inventada por m.
Son varios recursos recopilados de otros autores (incluyendo a Google) que me han gustado y me han
ayudado a mejorar la legibilidad de mi cdigo.
No es que sea obligatorias ests notaciones, t y tu equipo pueden inventar las suyas.
Pero si por el momento no has pensado en ello, quizs este sea un buen comienzo.
Te parece :) ?
Si es as, entonces mira:
Convenciones Para Nombrar Archivos
Iniciando quiero comentarte una opinin personal:
Me parece ms sencillo el nombrado con el idioma Ingles.
Por qu?
Es ms compacto y la complicacin de las tildes no tiene cabida.
Es solo mi punto de vista, no es requisito para aplicar las guas que veremos.
Teniendo esto en mente, sigamos

Clases Java
Recuerda que el mismo nombre de las clases Java debe ser el mismo de su archivo.
Para nombrarla usa la notacin UpperCamelCase. Donde cada palabra debe llevar su primera letra en
mayscula.
Ejemplo:
LoginPresenter.java, SalesmenActivity.java, OrderItem.java.

Adems es congruente aadir a la clase, el nombre del componente asociado al final.


Ejemplo:
PetsActivity.java, TrackingContentProvider.java, SyncService.java, GetProductAsyncTask.java

Archivos de recursos (/res)


Usa minsculas y separa por guiones bajos (_) las palabras de estos archivos.
Ejemplo:
activity_main, menu_login, item_lawyer

Layouts
Mueve el nombre del componente al inicio y luego pon su objetivo.
[nombre_componente]_[objetivo]

La siguiente tabla clarifica esta notacin:

Componente Ejemplo Nombre de la clase Nombre del layout

Actividad ContactsListActivity activity_contacts_list.xml


Fragmento AddToolFragment fragment_add_tool.xml

Dialogo ChangeGroupNameDialog dialog_change_group_name.xml

Item de adaptador --- item_dog.xml

Layout parcial --- partial_user_form.xml

Mens menu_[nombre_actividad] menu_login.xml

Values
Normalmente los recursos con valores elementales deben escribirse en plural asociando su
naturaleza:

Recurso Nombre de archivo

Strings values/strings.xml

Estilos values/styles.xml

Colores values/colors.xml

Dimensiones values/dimens.xml

Enteros values/integers.xml

Booleanos values/bools.xml

Iconos
Por el lado de los iconos, dependiendo del lugar a donde pertenezcan, as mismo los clasificamos con
prefijos.

Contexto Prefijo Ejemplo

Contenido ic_ ic_phone

Iconos de aplicacin ic_launcher_ ic_launcher_supervisor

Mens y App Bar ic_menu_ ic_menu_add

Barra de estado ic_stat_ ic_stat_sync_progress

Pestaas ic_tab_ ic_tab_locations


Dilogos ic_dialog ic_dialog_pick_date

Convenciones Para Nombrar Cdigo

Cdigo Java
Sobre este tema hay varias fuentes. Basta que pongas en Google java naming conventions y vers la
cantidad de estilos.
No obstante, la siguiente tabla resume el estilo ms usado para cada elemento de cdigo:

Elemento Convencin Ejemplo

Notacin UpperCamelCase. Claramente UseCase, DataMaganer,


Nombre de clase XmlParser
debe ser un sustantivo

Notacin lowerCamelCase. Exactamente


Nombre de fetchCustomer(),
como las clases, solo que la primera es downloadProfilePhoto()
mtodo
minscula.

Campos privados Notacin lowerCamelCase. Antepn la letra mCurrentPage, mUserName,


no estticos m mContext

Campos privados Notacin lowerCamelCase. Antepn la letra sVolleySingleton,


estticos s sCorrectAnswer

Otros campos y disscountPercent,


Notacin lowerCamelCase acceptButton
variables

Nombres de LATENCY, SYNC_INTERVAL,


Todas sus letras en maysculas PREF_USER_PROFILE
constantes

Tratar siglas como palabras


Por lo general las siglas vienen todas en maysculas como: JSON, XML, HTML, PDO, etc.
Si vas a incluir una palabra de este tipo en el nombrado de tu cdigo Java, entonces trtala como una
palabra simple.
El siguiente es un ejemplo de Google muy claro:

Bien Mal

XmlHttpRequest XMLHTTPRequest
getCustomerId getCustomerID

class Html class HTML

String url String URL

long id long ID

Nombres de constantes especiales


Recuerda que en Android hay varios componentes que usan el mecanismo de pares clave-valor,
donde la clave la declaramos en Java como una constante.
Por ejemplo, al pasar un valor entre actividades usamos extras en los intents de comunicacin.
Cada uno debe tener una clave definida.
La cosa es:
Cmo nombrarlas?
Bien, la siguiente es una tabla con reglas sugeridas:

Componente Prefijo Ejemplo

Preferencias PREF_ PREF_USER_PROFILE

Bundle BUNDLE_ BUNDLE_TABLE_NAME

Argumentos de fragmentos ARGUMENT_ ARGUMENT_CUSTOMER_ID

Extras de intents EXTRA_ EXTRA_QUERY_SEARCH

Acciones de intentes ACTION_ ACTION_TAKE_PHOTO

Cdigos de estado STATUS_CODE_ STATUS_CODE_PRODUCT_SELECTION

Cdigo XML
Nombres de los IDs
En esta parte hay varios estilos.
Uno es usar el nombre del componente y luego aadir su nombre particular:

Componente Prefijo Ejemplo


Button button_ button_add_order

ImageView image_ image_friend_avatar

TextView text_ text_price_label

Spinner spinner_ spinner_age_range

Menu menu_ menu_delete_all

O usar abreviaciones de dos o tres letras para el componente como prefijo:

Componente Prefijo Ejemplo

Button bt_ bt_add_order

ImageView iv_ iv_friend_avatar

TextView tv_ tv_price_label

Spinner sp_ sp_age_range

Menu mn_ mn_delete_all

Nombres de strings
El nombre del string (atributo android:name) lleva antepuesto el nombre de caracterstica a la que
pertenezca y seguido su objetivo.
Ejemplo: login_user_email, list_post_name_filter, machine_detail_temperature.
Si el string es genrico, entonces el prefijo depende del propsito:

Prefijo Propsito

error_ Mensaje de error

msg_ Texto de informacin

Un ttulo. Ej. Ttulo de actividad,


title_
dialogo, etc.

Descripcin de acciones como


action_
Eliminar, Ajustes, etc.

Qu te pareci?
Qu tanta atencin le habas puesto a las reglas de nombrado que usas al desarrollar tus apps?
Mi idea era facilitar el nombrado de los recursos y el cdigo para mantener un orden congruente.
De esta forma sers ms productivo a la hora de escanear tu cdigo y determinar su funcionalidad.
Ojala puedas conseguirlo con esta pequea gua.
Adicionalmente, te dejo algunos links de referencia:

Code Style for Contributors - Google


Project Guidelines Ribot
Best practices in Android development Futurice
Naming Conventions - Oracle

Ahora, Cules son los pasos a seguir?


Clickea AQU.
Djame saber a m y a los dems lectores con un comentario, que te parecieron estos estilos de
nombramiento.
Vali la pena descargarlo?
Le recomendaras a quienes no tienen un orden an, aplicar estas reglas?
Adicionalmente
Escrbeme internamente a contacto@hermosaprogramacion.com por si quieres que agregue alguna
convencin que se me haya olvidado. O si hay errores de redaccin o algn inconveniente con el
contenido.
Espero esta gua haya sido de utilidad para ti :)
Saludos,
James

You might also like