2011-02-26 27 views
18

estoy corriendo en más y más enfrentamientos de nombre entre las actividades de Android y otras clases. Me preguntaba si podrías decirme cómo evitar esto. Tristemente, mis problemas particulares de nombres no están cubiertos en las preguntas relacionadas en SO.actividad Android nombrar

Primer ejemplo

tengo una actividad que muestra un nivel del juego. Sin embargo, los datos requeridos para ese nivel (ilustraciones de fondo, entidades, etc.) se almacenan en una clase separada. Naturalmente, llamaría a la última clase Level. Sin embargo, también llamaría a la actividad Level, porque muestra los niveles.

Segundo ejemplo

tengo una actividad que reproduce una escena de corte. Básicamente muestra varias imágenes en una fila. La información que se muestra por cuánto tiempo se almacena en una clase separada. Como en el caso anterior, naturalmente llamaría a ambas clases CutScene.

¿Cómo resolvería estos problemas de nomenclatura? Nombre las actividades LevelActivity y CutSceneActivity? Nombre las clases de representación LevelModel y CutSceneModel? ¿Algo más?

Respuesta

18

que resolver esos problemas, ya sea como prefijo o postfixing clases con su "tipo", como se sugiere al final de su pregunta:

  • LevelActivity, GameActivity, MainActivity, ...
  • CommentsListAdapter, ...
  • CheckNewCommentsService, ...
  • y así sucesivamente.

Pero por lo general no execption una de las clases del modelo, que son los objetos que contienen los datos: Me gustaría volver a nombrar a mi nivel de clase del modelo Level, y no LevelModel, para indicar que estoy manipular y trabajar con , un nivel.


Otra solución (ya que escribir ^^) podría ser el uso de nombres totalmente calificados (ver here) al hacer referencia a sus clases:

  • com.something.yourapp.activity.Level
  • com.something.yourapp.model.Level

Con esto, siempre se sabe qué clase es realmente u sed

+0

Así se agrega el sufijo "Actividad" a todas las clases de actividad? Me gusta eso, pero la guía para desarrolladores de Android da la impresión de que Google no hace esto. ¿Apostaría a que no se topan con estos problemas (es difícil de creer) o tienen otra solución? – futlib

+0

¡Solo eché un vistazo a alguna aplicación de Android al azar y también agregan "Actividad" a las actividades! https://github.com/android/platform_packages_apps_music/tree/master/src/com/android/music – futlib

+0

Glad ha contestado a sí mismo ;-) –

0

En general, la mejor manera de nombrar android application components es añadir su "tipo de componente" como sufijo. Ejemplo: -

  • LevelActivity (LevelActivity extiende Actividad)
  • InboxUpdateService (InboxUpdateService extiende Service)
  • ContactsContentProvider (ContactsContentProvide extiende ContentProvider)
  • SMSBroadcastReceiver (SMSBroadcastReceiver extiende BroadcastReceiver)

Por nombrar usando el método anterior habrá mínimas posibilidades de perder la pista cuando está trabajando en el flujo de código grande con muchos nombres similares en su aplicación.

Por lo tanto, el nombre de sus actividades con el sufijo "Actividad".

Y nombre la clase que proporciona datos a su LevelActivity como Level.

En contradicción con la segunda parte de la respuesta de Pascal MARTIN, también puede usar LevelActivity y LevelInfo juntos. Debido a que ofrecen una clara diferencia como se cita a continuación:

distinguir los nombres de tal manera que el lector sabe lo que ofrecen los diferencias - Robert. C. Martin, autor de Clean Code

Pero el sufijo a menudo son redundantes en la base cognitiva. Usando sólo la palabra Level enfatiza claramente que la clase Level ofrece información sobre el nivel. Por lo tanto, use Level para la clase que proporciona datos sobre Nivel.

NOTA: Si está utilizando sufijos, elegir una palabra para cada concepto. Por ejemplo: Si está usando el sufijo Info para identificar las clases que ofrecen información, entonces solo se debe usar Info (no Data o Model) en toda su aplicación para evitar confusiones.