Ejercicio: Eliminación de bloques de código en instrucciones if

Completado

A los desarrolladores de software les encanta cuando pueden escribir código que guarde pulsaciones de tecla y espacio visual sin sacrificar la legibilidad. Aplique solo la frase "menos es más" en el proceso de desarrollo cuando hace que el código sea más legible y comprensible.

Si un bloque de código solo necesita una línea de código, lo más probable es que no tenga que definir un bloque de código formal mediante llaves. Aunque técnicamente no es necesario separar el código en varias líneas, combinar instrucciones en una sola línea puede hacer que el código sea difícil de leer.

Quitar las llaves como se ha descrito anteriormente es un cambio estilístico que no debería afectar a la funcionalidad del código. Sin embargo, debe tomar medidas para asegurarse de que sus cambios no afecten negativamente la legibilidad del código. Puede evaluar el impacto de quitar las llaves y el espacio en blanco y volver al código original si cree que los cambios realizados en el código lo hacen menos legible.

Creación de un ejemplo de una instrucción if que usa un bloque de código

  1. Asegúrese de que tiene un archivo Program.cs vacío abierto en Visual Studio Code.

    Si es necesario, abra Visual Studio Code y, luego, lleve a cabo los pasos siguientes para preparar un archivo Program.cs en el editor:

    1. En el menú Archivo , seleccione Abrir carpeta.

    2. Use el cuadro de diálogo "Abrir carpeta" para ir a la carpeta CsharpProjects.

    3. En el panel EXPLORADOR de Visual Studio Code, seleccione Program.cs.

    4. En el menú Selección de Visual Studio Code, seleccione Seleccionar todo y presione la tecla Eliminar.

  2. En el Editor de Visual Studio Code, escriba el código siguiente:

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. Guarde el archivo de código y use Visual Studio Code para ejecutar el código.

    Escriba dotnet run desde el símbolo del sistema de terminal para ejecutar el código.

  4. Compruebe que ve la salida siguiente:

    True
    

    El código representa un buen punto de partida, pero tiene un bloque de código que incluye una sola línea de código. En este caso, ¿es necesario definir un bloque de código?

Quitar los corchetes rizados

El código anterior ejecuta un bloque de código cuando flag es true. Dado que este bloque de código contiene una sola línea de código, tiene la opción de quitar las llaves.

  1. Actualice el código en el editor de Visual Studio Code de la siguiente manera:

    bool flag = true;
    if (flag)
        Console.WriteLine(flag);
    

    Nota:

    Quitar las llaves no cambia el hecho de que Console.WriteLine(flag); es el bloque de código de la instrucción if.

  2. Guarde el archivo de código y use Visual Studio Code para ejecutar el código.

  3. Observe que la salida es la misma que antes.

    Debería seguir viendo la siguiente salida:

    True
    

    Sin embargo, hay dos líneas de código menos. Lo más importante es que, con la línea de código debajo de if con sangría, el código sigue siendo fácil de leer.

Examinar la legibilidad de las instrucciones "if" de formulario de una sola línea

En este paso, verá un caso en el que la legibilidad del código puede verse afectada negativamente.

Dado que tanto la if instrucción como la llamada al método a Console.WriteLine() son cortas, es posible que tenga la tentación de combinarlas en una sola línea. Después de todo, la sintaxis de C# para la if instrucción permite combinar instrucciones de esta manera.

  1. Actualice el código en el editor de Visual Studio Code de la siguiente manera:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. Guarde el archivo de código y use Visual Studio Code para ejecutar el código.

  3. Observe que la salida sigue siendo la misma.

  4. Dedique un minuto a considerar la legibilidad del código.

    Imagine los dos ejemplos de código anteriores anidados dentro de una sección más grande del código. La combinación de instrucciones de código (como hizo en el paso 4) podría dificultar la lectura.

    Al implementar una if instrucción que incluya un bloque de código de instrucción única, Microsoft recomienda que tenga en cuenta estas convenciones:

    • Nunca use el formato de línea única (por ejemplo: if (bandera) Console.WriteLine(bandera);
    • El uso de llaves siempre se acepta y es necesario si algún bloque de una instrucción compuesta if/else if/.../else usa llaves o si un único cuerpo de instrucciones abarca varias líneas.
    • Las llaves solo se pueden omitir si el cuerpo de cada bloque asociado a una instrucción compuesta if/else if/.../else se coloca en una sola línea.
  5. Para examinar el impacto de legibilidad de las construcciones if-elseif-else más grandes, actualice el código de la siguiente manera:

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. Guarde el archivo de código y use Visual Studio Code para ejecutar el código.

    Al ejecutar el código, debe generar la siguiente salida:

    Found Steve
    

    El código se ejecuta, pero estas líneas de código son densos y difíciles de leer. Es posible que quiera volver a formatear el código para incluir un salto de línea después de las sentencias if, else if y else.

  7. Compare el código que acaba de ejecutar con el código siguiente:

    string name = "steve";
    
    if (name == "bob")
        Console.WriteLine("Found Bob");
    else if (name == "steve") 
        Console.WriteLine("Found Steve");
    else
        Console.WriteLine("Found Chuck");
    

    Observe lo mucho más fácil que es leer el segundo ejemplo de código.

Resumen

Estos son algunos aspectos importantes que hay que recordar sobre los bloques de código de instrucciones if y la legibilidad:

  • Si se da cuenta de que solo tiene una línea de código enumerada en los bloques de código de una instrucción if-elseif-else, puede quitar las llaves del bloque de código y el espacio en blanco. Microsoft recomienda que las llaves se usen de forma coherente para todos los bloques de código de una instrucción if-elseif-else (presentes o quitados de forma coherente).
  • Quite solo las llaves de un bloque de código cuando haga que el código sea más legible. Siempre es aceptable incluir llaves.
  • Elimine los avances de línea solo si ayuda a que el código sea más legible. Microsoft sugiere que el código será más legible cuando cada instrucción se coloque en su propia línea de código.