¿Qué tan importante es la organización del código en la programación?

Como escribió Zhaojun Zhang, puedes tolerar un montón de desorden en tu propio código .

Sin embargo, a medida que aumenta el tamaño de su equipo, la organización del código se vuelve mucho más importante. El código es la forma más importante en que un codificador se comunica con sus compañeros de equipo. El código mal organizado desperdicia el tiempo de cualquiera que tenga que leerlo y comprenderlo.

Por esa razón (costo y tiempo involucrados), la mayoría de las compañías que se toman en serio el software tienen estándares de codificación que están destinados a facilitar el mantenimiento de su código.

Puede que no sea obvio para personas con solo unos pocos años de experiencia, pero después de algunas décadas ni siquiera trato de recordar cómo funciona todo el código que he escrito. Esto significa que tengo que regresar y leer el código para actualizar mi memoria y es mucho más fácil si he mantenido el código bien organizado. También heredé el mantenimiento del código que se había desarrollado a lo largo de muchos años y en bases de código realmente grandes (pruebe 2 MLOC de C ++), una buena organización fue todo lo que hizo posible modificar y extender el código.

Es una competencia central, ¡la forma en que estructura su código es tan importante que las compañías probablemente lo evaluarán en esto!

¿Por qué es importante? ¿imagina escribir una aplicación masiva en un archivo sin pensar en separar o superponer su código, hacerlo significa que realizar cambios en su código llevará mucho tiempo y probar su código? ¡Buena suerte!

Considera este código:

public static void main (String [] args) {

Prefijo de cadena = “5 5 +”;
prefijo = prefijo.replace (“”, “”);
Lista prefixAsArray = Arrays.asList (prefix.split (“”));
Pila
calcStack = nueva Pila <> ();

para (Cadena ele: prefixAsArray) {
if (ele.equals (“+”)) {
int a = Integer.parseInt (calcStack.pop ());
int b = Integer.parseInt (calcStack.pop ());
System.out.println (a + b);
} más {
calcStack.push (ele);
}
}

}

¡¡Que desastre!! esto toma la notación de postfix de 5 5+ y me da la evaluación como 10, que es lo que debería ser. Es difícil decir dónde puede salir mal, aunque no es así, variables mal nombradas, no intentarlo, atrapar para asegurarse de que no arroje una excepción de pila vacía que podría hacer si alguien pone “5 +”, por ejemplo.

El problema es que porque no he separado mi código, no es del todo aparente lo que soy y lo que no estoy haciendo en este código, lo cual es peligroso.

Donde, como si tuviera un método para verificar la validez de la notación, un método para separar la notación postfix en tokens y luego otro para evaluar esos tokens y, finalmente, otro para imprimir bien para mí, podría ver fácilmente qué está haciendo mi código y lo que no es y, lo que es más importante, ¡obtengo código reutilizable, lo que significa que puedo ser vago! (¿Por qué te haces más trabajo?).

¿No convencido? Ok, digamos que esa fue mi tarea original: escribir un programa que resuelva una suma de dos números de postfix.

bueno, lo he hecho y solo 20 líneas de código que escribí en 1 minuto más o menos, ni siquiera necesité crear un método para eso, simplemente lo pegué todo en mi método de punto de entrada, fácil.

Excelente … hasta que recibo la siguiente solicitud que es: también quiero resolver la multiplicación de postfix, ahora puedes obtener una cadena de XY + o XY *

Ok, entonces agrego a este archivo y resuelvo eso, ahora me dicen que podría decir XY + Z + o incluso XY + Z * + X, ay, ahora mi código actual no funciona, voy a tener que cambiar eso, así que para tener que cambiar todo el archivo, probablemente vaya a cometer errores y cometer muchos errores.

Ok, tengo que permitir eso ahora, recuerde que no me importa la organización del código y, como resultado, estoy pirateando este archivo que ahora tiene cientos de líneas de largo sin manejo de errores. ah, y las pruebas no son prácticas porque la buena suerte prueba ese monolito.

Luego, alguien dice ahora que quiero que implementes sin X para resolver el seno de un número dado como X, oh no, esta es una reescritura importante, muchas de las suposiciones que hice ahora no serán ciertas, afortunadamente su gerente te da otra persona para que te ayude … uh oh, todo el código está en un archivo, ahora tienes una situación en la que 2 personas están trabajando en un archivo.

Al final, termino con un código que no es comprobable, es frágil y es realmente difícil de cambiar, además si me enferma (probablemente porque ese otro desarrollador asignado para ayudarlo a deslizar el veneno para ratas en su taza de café) y tomarse una semana de descanso, alguien tiene que venir y recoger esto, primero se reirán de lo terrible que soy como desarrollador, luego llorarán porque tienen que resolverlo todo, luego me molestarán con la tecnología dirija quién hablará con el primer ministro, que con toda razón me querrá fuera del proyecto.

La organización del código significa que usted escribe código que es extensible, mantenible y legible; estos son requisitos si alguna vez espera llegar muy lejos para ganarse la vida.

La organización del código es como el orden de su casa: no necesita ordenarlo todos los días, y aún puede vivir en su casa independientemente de lo desordenado que sea, siempre que pueda tolerarlo. Solo te persigue cuando necesitas desesperadamente encontrar algo que no has tocado por un tiempo o cuando quieres invitar a tus invitados a tu casa para una cena elegante.

La organización del código es la misma cosa, no necesita tener una organización clara de su código mientras funcione. Pero un día, te darás cuenta de que no puedes encontrar fácilmente el método o clase correctos, o que tus encantadores compañeros de trabajo no quieren tocar tu base de código, ya que es demasiado desordenada. Es una decisión decisiva, ya que siempre puede reescribir su código más tarde (como mudarse a una casa nueva o reconstruir una casa), pero la pregunta es cuál es más fácil: reconstruir siempre o estar bien organizado. 🙂

More Interesting

¿Qué diferencias hay entre BSc y BEng en Alemania para la ingeniería de software?

¿Cómo se ve un equipo de desarrollo de software realmente bueno? (¿Qué lo hace genial?)

¿Cuál es el concepto de abstracción en términos de ingeniería de software?

¿Cómo motivar a un ingeniero de software para que prefiera la oferta de su empresa en lugar de una oferta en Google? Y quedarse

Gestión de la tecnología de la información: ¿qué papel desempeña un analista de negocios en el desarrollo utilizando metodologías ágiles?

¿Cuál es la mejor herramienta para rastrear el cronograma y el costo del proyecto utilizando insumos de gastos semanales?

Hay tantas API disponibles sobre el reconocimiento facial. ¿Cuál es la mejor opción para usar si quiero desarrollar un software?

¿Es común en la industria del software usar la cobertura gráfica para sus pruebas de front-end funcionales?

¿Cuáles son los pros y los contras de la ingeniería eléctrica, mecánica y de software?

¿Qué sitios ofrecen pagar mis artículos sobre software?

¿Cómo es trabajar en OPOWER?

¿Cómo hizo Jeff Bezos para hacer de Amazon una empresa tan innovadora técnicamente?

Ingeniería de software: ¿Cómo demostraría explícitamente RAII (La adquisición de recursos es la inicialización) en el idioma que elija?

¿Cuáles son las diferentes posiciones en Adobe para un ingeniero de software? ¿Cómo y cuándo ocurren las promociones?

¿Qué tipo de empresa de big data / analytics podría comenzar y qué pasos debo seguir?