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.