Como desarrollador de nivel medio, estoy totalmente confundido por las propiedades que mis superiores ponen en cosas como el estilo ¿alguien puede explicar?

No eres la única persona que va a estar mirando y / o trabajando en tu código en el futuro. Probablemente no estarás allí para siempre, e incluso si lo estás, no vas a estar en ese mismo proyecto para siempre.

Es genial que funcione. Pero incluso si funciona extremadamente bien, si nadie más puede leerlo, significa grandes dolores de cabeza en el futuro para quien tenga que lidiar con eso más adelante. Ya sabes, cuando agregan más funciones o modifican funciones, y esas modificaciones rompen lo que escribiste.

Se necesita tiempo y dinero en este momento para que cumpla con los estándares de la compañía para la legibilidad, pero si no se ajusta a los estándares de legibilidad, hay una posibilidad decente de que costará mucho más tiempo y dinero en el futuro.


Bien, eso es suficiente para defender a tu jefe por ahora.

Dicho todo esto, hay algunas reglas de estilo que creo que realmente apestan y no tienen sentido.

Una de esas cosas, por ejemplo, es el uso de “números mágicos” o números literales que no sean 1, -1 o 0. Por lo general, están prohibidos. Pero lo que hacen los ingenieros de software para evitar el uso de números mágicos en casos obvios es mucho, mucho peor. Por ejemplo:

  const int OCHO = 8;
 const int TWO = 2;
 const int THREE = 3; 

Eso es bastante retrasado.

Y la mayoría de las cosas retardadas de “evitar los números mágicos” son para casos en los que el número se usa un total de una vez y nunca se usa en ningún otro lado. O lo que es aún peor es cuando una constante se define y se usa en algunos lugares, pero la constante es el mismo número que algún otro número literal usado una vez. Cuando la constante definida tiene que cambiar por alguna razón, también cambia ese número literal y arruina el programa y se convierte en una búsqueda de errores para descubrir por qué.

O alguien decide por alguna razón que en todas partes decía OCHO, en realidad tenía que ser 7 (excepto en algunos lugares que no notó), por lo que se ahorra el trabajo y simplemente cambia OCHO = 7.

He visto algo así antes.

En general, usar números mágicos (especialmente un número que aparece en muchos lugares) es una mala idea, pero las distancias que los ingenieros menos creativos harán para evitarlos a menudo son peores cuando están prohibidos.

Hay muchas otras reglas de estilo “estúpidas” que causan más problemas de los que podrían evitar. Puedo entender tu frustración si son reglas de estilo estúpidas que no mejoran la legibilidad o la capacidad de depurar.

No entiendo por qué habrían retrasado un proyecto crítico y tardío sobre él, en lugar de usar el código y luego limpiarlo más tarde. ¿Quizás una vez que está fuera de tus manos, hacer modificaciones adicionales no es factible? Aunque en ese caso, la capacidad de mantenimiento del software implementado no es un factor … En mi entorno de trabajo, hubiéramos entregado ese código al cliente y luego hubiéramos gastado el tiempo extra para limpiarlo antes de integrarlo con la versión principal de nuestro software, que luego se envía a nuestros clientes cuando se actualizan más tarde. No podía adivinar qué detalles específicos de su situación llevaron a la decisión de retrasar un proyecto crítico por cuestiones de estilo.

El tiempo extra dedicado a hacer el estilo correcto puede obtener beneficios posteriores al hacer que el código sea más fácil de mantener. Obligar a alguien a regresar y solucionar problemas de estilo también sirve para hacerlos responsables de no adherirse al estilo. Sin tales consecuencias, algunas personas podrían decidir que tienen poco beneficio para sí mismas cumplir con los estándares de la compañía e ignorarlos.

Personalmente, no rechazo el código por violar los estándares, a menos que se publiquen claramente, es algo que le he señalado específicamente a esa persona antes, o el código es tan complicado que me da dolor de cabeza solo mirarlo. Para problemas menores, generalmente corregiré el código yo mismo y luego le mostraré al desarrollador cómo debería ser.

si escribe código feo, el resultado es que pasará semanas en el futuro para extender este fragmento de código, corregir errores dentro de este código, etc. Los estilos de código generalmente se utilizan para garantizar la calidad del código. los patrones usuales son:

– responsabilidad única de los métodos (si un método hace más de una cosa específica, debe dividirlo)
– los métodos no deben ser más largos que x líneas de código (en nuestro equipo generalmente no ampliamos 10 líneas por método)
– las clases y las variables deben nombrarse de manera que sepa directamente lo que hace
– una línea no debe tener 80 dígitos (debido a la legibilidad)

puede haber un gran grupo de reglas adicionales que pueden establecerse. pero seguir estas reglas generalmente da como resultado un código más limpio y mejor con respecto a la mantenibilidad.

Es, en parte, probablemente relacionado con lo siguiente:

Otras personas tendrán que apoyar, mantener y modificar su código. Seguir un estilo particular (estándares de codificación) hace que su código sea más fácil de mantener.

Parte de trabajar en un equipo es construir una identidad de equipo. Seguir las normas del equipo (implícitas o explícitas) ayuda a construir la identidad del equipo. No seguir las normas del equipo envía un mensaje que usted:

  • son mejores que el equipo
  • no me importa el equipo
  • valore su propio punto de vista por encima de otras PYME hasta el punto en que sea difícil trabajar con usted

Si conocía las pautas de estilo de antemano y decidió no seguirlas, conociendo los resultados, entonces usted es responsable de la demora.

No es una pérdida de tiempo y dinero de la compañía hacer cumplir el estilo y otras pautas de codificación.

Es importante estar en la misma página y comprender lo que significa “hecho”. En este caso, “hecho” significaba cumplir con las pautas de estilo. Tendría esas conversaciones por adelantado para que entiendan lo que significa “hecho” para cada tarea.

Es por la misma razón que ponemos tanto énfasis en escribir a mano, envolver bien nuestros libros, etc. o en la higiene personal.
Siguiendo estilos correctos, las pautas de codificación son como seguir una higiene adecuada. Créeme, te darás cuenta en unos años. El código cuidadosamente escrito es fácil de mantener que el torpe. Es posible que no haya pasado suficiente tiempo reparando errores introducidos por otros, las personas mayores lo habrían hecho para que sepan lo importante que es “tales cosas”.

Algunos estudios muestran que el costo inicial de desarrollar código es solo una pequeña fracción del costo total durante su vida útil. Por lo tanto, un poco más de tiempo dedicado a hacer que sea comprensible, modular y mantenible, desde el principio, cuando el escritor original está cerca, puede dar sus frutos a largo plazo.

More Interesting

Cómo manejar una pasantía de software que odio

¿Cómo es la vida de un ingeniero de software en India?

¿Se requieren ingenieros de software en todas las empresas?

Cómo conseguir mi primer trabajo de ingeniería de software sin experiencia laboral previa

¿Cuáles son algunos buenos podcasts sobre ingeniería de software?

¿Cuáles son las ventajas y desventajas de trabajar en empresas tecnológicas frente a los fondos de cobertura como ingeniero de software?

¿Es cierto que los ingenieros de software indios se consideran contrataciones muy malas en los Estados Unidos? Planeo ir a los Estados Unidos el próximo año para una maestría en informática; ¿Ser de India afectará mis perspectivas laborales allí?

Si la ingeniería de software o cualquier otra ingeniería no es una buena idea (lo peor que se puede hacer con su vida), ¿qué se debe elegir como carrera?

¿Debería solicitarse un acuerdo por escrito cuando se le ofrece una pasantía de ingeniería de software en una startup de Silicon Valley? En caso afirmativo, ¿cómo se puede preguntar adecuadamente por correo electrónico?

¿Una pasantía no remunerada en Ingeniería de Software me ayudará a conseguir un trabajo de Ingeniería de Software en el futuro?

¿Los ingenieros de DevOps se consideran ingenieros de software o son diferentes?

Cómo pasar de gerente de proyecto a líder de producto en desarrollo de software

Teniendo en cuenta que es un ingeniero de software recién contratado en una de las grandes empresas, ¿cuál sería una estrategia exitosa para convertirse en un líder de equipo?

Al comenzar mi carrera profesional como desarrollador, ¿cómo sé si mi software es lo suficientemente bueno?

Soy un estudiante de ingeniería de la rama de metalurgia en NIT Srinagar. Disfruto escribiendo programas y puedo desarrollar aplicaciones de Android. ¿Debo dejar la programación y concentrarme en mi rama o debo hacer lo que amo?