Actualmente tengo 4 meses en una pasantía, y cuando revisé mi código, a mi jefe no le gustó que hubiera mantenido un objeto específico local para varios métodos en algunas clases separadas dentro de un ensamblaje. No le gustó que creara un nuevo objeto cada vez, y en su lugar me dijo que creara un solo objeto al que se pueda acceder desde cualquier lugar. Por lo tanto, tuve que crearlo como un objeto estático dentro de una clase estática, y simplemente hacer referencia a él desde aquí. ¡Quiero usarlo!
¿Cómo lidiarías con esto, ya que solo he estado programando profesionalmente durante 4 meses!
teamwork
coding-standards
singleton
Darren Young
fuente
fuente
Respuestas:
Si un objeto es suficiente, crear un objeto cada vez es un desperdicio, y aquí su jefe puede tener razón.
El problema es el acceso adecuado a ese objeto. Un método similar a una fábrica con una visibilidad adecuada que siempre devuelve ese objeto estático es la primera solución que viene a la mente. Otros ciertamente existen.
fuente
No puedo comentar su caso específico, pero el uso de variables globales a veces es una buena solución. La clase de sistema de Java está llena de variables globales estáticas.
Pero en general, si cree que tiene razón y su jefe está equivocado, ¿por qué no le pide a su jefe que le explique por qué cree que una variable global es una mejor solución? Un simple "No me gusta" es tan vago como "las variables globales son malas". ¡Debes exigir más de tu jefe!
Si él no puede dar razones para su postura, y usted puede dar razones para su postura, o viceversa, entonces es una buena oportunidad de aprendizaje. Si ambos pueden justificar sus posturas, entonces probablemente sea una cuestión de gustos o de experiencia: creo que su jefe debe haber programado profesionalmente durante más de 4 meses.
fuente
java.lang.System
contiene exactamente tres variables globales, y para cada una de ellas hay un método para configurarlo correctamente. PeroSystem
está lleno de métodos estáticos que devuelven objetos globales, y no hay exactamente nada de malo en esto, no puedo discutir.System
simplifica, digamos, el 99.9% de los casos de uso a costa de causar problemas en el 0.1% restante. No hay una respuesta "correcta" a si ese 0.1% vale o no la complejidad adicional.Como alguien en su posición, lo máximo que puede hacer es aprender. Si el objeto es esencialmente una constante (es decir, no puede cambiar y no mantiene el estado), entonces su jefe puede tener razón. No hay daño en tener un objeto constante estático. Después de todo, ¿cuántas definiciones de PI hay?
Algunas personas defienden la mentalidad de "no objetos globales" hasta el punto de ferver religioso. Esto se debe a una de dos razones: han sido mordidos por errores difíciles de rastrear o por la fragilidad del sistema debido al uso excesivo de variables / objetos globales, o han escuchado que es malo y no pueden pensar por sí mismos. Personalmente pertenezco al grupo de personas que han sido golpeadas por la fragilidad y los errores difíciles de rastrear, pero también he aprendido algo de equilibrio aquí.
Si estuviera en tus zapatos, seguiría adelante y haría lo que el jefe diga: después de todo, es su trasero en la línea. Luego miraba y veía los efectos de esa elección con el tiempo. Esta es una herramienta de aprendizaje efectiva.
fuente
Dependiendo de la situación específica, una variable global podría ser la mejor solución. En la programación integrada, los globales no están ocupando espacio en la pila y, por esa razón, es una buena opción.
Globales o no, me ha parecido una buena práctica poner un prefijo en los globales. Esto hará que otros programadores busquen en Google su código del impacto si se meten con él.
fuente
Tal vez lo que tu jefe quería era que usaras el Patrón Singleton. Es una muy buena práctica cuando necesita acceder a un determinado objeto desde varias instancias.
Aquí hay un enlace a la explicación de wikipedias
fuente
good practice
sería usar en.wikipedia.org/wiki/Dependency_injection