Ejercicio: Uso del espacio en blanco para facilitar la legibilidad del código
Los diseñadores web y de impresión saben que poner demasiada información en un espacio reducido sobrecarga al lector. Por lo tanto, usan estratégicamente los espacios en blanco, o los espacios negativos, para dividir la información con el fin de maximizar la capacidad del lector de asimilar el mensaje principal de su trabajo.
Los desarrolladores pueden usar una estrategia similar al escribir código en un editor. Al usar los espacios en blanco para transmitir el significado, los desarrolladores pueden aumentar la claridad de la intención del código.
¿Qué son los espacios en blanco?
El término “espacio en blanco” hace referencia a los espacios individuales generados por la space bar
, a las tabulaciones que crea la tecla tab
y a las nuevas líneas que se generan con la tecla enter
.
El compilador de C# omite los espacios en blanco. Para entender cómo se omiten los espacios en blanco y cómo maximizar la claridad mediante su uso, usaremos el ejercicio siguiente.
Incorporación de código para mostrar cómo el compilador de C# omite los espacios en blanco
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:
En el menú Archivo, seleccione Abrir carpeta.
Use el cuadro de diálogo "Abrir carpeta" para ir a la carpeta CsharpProjects.
En la vista EXPLORADOR de Visual Studio Code, seleccione Program.cs.
En el menú Selección de Visual Studio Code, elija Seleccionar todo y presione la tecla Supr.
Escriba el siguiente código:
// Example 1: Console . WriteLine ( "Hello Example 1!" ) ; // Example 2: string firstWord="Hello";string lastWord="Example 2";Console.WriteLine(firstWord+" "+lastWord+"!");
En el menú Archivo Visual Studio Code, seleccione Guardar.
En la vista EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado.
En el símbolo del sistema del terminal, guarde el trabajo, escriba dotnet run y presione Entrar.
Debería ver la siguiente salida:
Hello Example 1! Hello Example 2!
Dedique un minuto a valorar lo que este resultado le indica sobre cómo debe usar espacios en blanco en el código.
Estos dos ejemplos de código ilustran dos ideas fundamentales:
- El compilador no tiene en cuenta los espacios en blanco. No obstante…
- Los espacios en blanco, cuando se usan correctamente, pueden aumentar la facilidad para leer y comprender el código.
Probablemente escriba el código una vez, pero necesita leerlo varias veces. Por lo tanto, debería prestar atención a la legibilidad del código que escriba. Con el tiempo, se acostumbrará a usar espacios en blanco como el carácter de espacio, tabulaciones y líneas nuevas.
Instrucciones previas:
- Cada comando completo (una instrucción) debe estar en una línea independiente.
- Si una línea de código es muy larga, puede dividirla. Sin embargo, debe evitar dividir arbitrariamente una sola instrucción en varias líneas hasta que tenga una buena razón para hacerlo.
- Agregue un espacio a la izquierda y a la derecha del operador de asignación.
Reemplace el código existente por el siguiente:
Random dice = new Random(); int roll1 = dice.Next(1, 7); int roll2 = dice.Next(1, 7); int roll3 = dice.Next(1, 7); int total = roll1 + roll2 + roll3; Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}"); if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) { if ((roll1 == roll2) && (roll2 == roll3)) { Console.WriteLine("You rolled triples! +6 bonus to total!"); total += 6; } else { Console.WriteLine("You rolled doubles! +2 bonus to total!"); total += 2; } }
Observe que este código no incluye demasiado espacio en blanco. Este código se usará con el fin de mostrar un enfoque para agregar espacios en blanco a las aplicaciones. Los espacios en blanco efectivos deben facilitar la comprensión de lo que hace el código.
Nota
El código usa la clase
Random
para ayudar a desarrollar un juego de dados simulado, donde el valor total de tres tiradas se usa para evaluar una puntuación "ganadora". El código otorga puntos adicionales para las tiradas dobles o triples. No es necesario comprender completamente este código para reconocer la ventaja de incluir espacios en blanco.Dedique un minuto a valorar cómo usaría espacios en blanco para mejorar la legibilidad de este código.
Este código presenta dos características que se deben tener en cuenta:
- No hay ningún espacio en blanco vertical en este ejemplo de código. En otras palabras, no hay líneas vacías que separen las líneas de código. Todas ellas se ejecutan juntas en una lista de códigos densa.
- Los bloques de código, definidos por los símbolos de llave de apertura y cierre
{ }
, están comprimidos, por lo que sus límites son difíciles de discernir visualmente.
Por lo general, para mejorar la legibilidad, se introduce una línea en blanco cada dos, tres o cuatro líneas de código que hacen cosas similares o relacionadas.
La formulación del código mediante los espacios en blanco verticales es subjetiva. Es posible que dos desarrolladores diferentes no se pongan de acuerdo sobre qué código es más legible o cuándo agregar espacios en blanco. Use su propio criterio.
Para agregar un espacio en blanco vertical que mejore la legibilidad, actualice el código de la siguiente manera:
Random dice = new Random(); int roll1 = dice.Next(1, 7); int roll2 = dice.Next(1, 7); int roll3 = dice.Next(1, 7); int total = roll1 + roll2 + roll3; Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}"); if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) { if ((roll1 == roll2) && (roll2 == roll3)) { Console.WriteLine("You rolled triples! +6 bonus to total!"); total += 6; } else { Console.WriteLine("You rolled doubles! +2 bonus to total!"); total += 2; } }
La primera línea de espacio en blanco se usa para separar la declaración de la variable
dice
de las líneas de código usadas para asignar valores a las variables de tirada. Esta separación permite observar mejor cómo se usadice
en el código.La siguiente línea de espacio en blanco separa la declaración de las variables de tirada de la declaración de
total
. La agrupación de la declaración de las tres variables de tirada resulta útil de dos maneras. En primer lugar, crea un grupo de líneas de código que incluye variables relacionadas. En segundo lugar, los nombres de variable son muy similares y la declaración sigue el mismo patrón. Así pues, su agrupación atrae la atención a las similitudes y ayuda a identificar las diferencias.Por último, la tercera línea de espacios en blanco separa otro grupo de instrucciones relacionadas de las instrucciones anidadas
if
. El grupo de instrucciones que incluye la declaración detotal
y el métodoConsole.WriteLine()
establece una relación según la finalidad y no la apariencia. El código se centra en el valor total alcanzado por los tres dados y en si la tirada incluía dobles o triples. Estas líneas están relacionadas porque es necesario calculartotal
y notificar los resultados de la tirada al usuario.Algunos desarrolladores podrían argumentar que se debería agregar una línea vacía entre la declaración de
total
y deConsole.WriteLine()
. Una vez más, la elección del espacio en blanco dependerá de la decisión del desarrollador. Debería valorar qué estilo es más fácil de leer y usarlo de forma coherente.Lo único que queda es la instrucción
if
. Ahora puede examinarla.Céntrese en las líneas de código que hay debajo de la palabra clave
if
y modifique el código del paso anterior como se indica a continuación:Random dice = new Random(); int roll1 = dice.Next(1, 7); int roll2 = dice.Next(1, 7); int roll3 = dice.Next(1, 7); int total = roll1 + roll2 + roll3; Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}"); if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) { if ((roll1 == roll2) && (roll2 == roll3)) { Console.WriteLine("You rolled triples! +6 bonus to total!"); total += 6; } else { Console.WriteLine("You rolled doubles! +2 bonus to total!"); total += 2; } }
Observe que ha desplazado las llaves de apertura y cierre a su propia línea para mejorar el espaciado.
Los símbolos
{
y}
crean bloques de código. Muchas construcciones de C# requieren bloques de código. Estos símbolos se deben colocar en una línea independiente para que sus límites sean claramente visibles y legibles.Además, es importante usar la tecla
tab
para alinear los símbolos de los bloques de código bajo la palabra clave a la que pertenecen. Por ejemplo, observe la línea de código que comienza con la palabra claveif
. Debajo de esa línea se encuentra el símbolo{
. Esto permite comprender que{
“pertenece” a la instrucciónif
. Además, el último símbolo}
también está alineado con la instrucciónif
. La combinación de alineación y sangría facilita la comprensión de dónde comienza y termina el bloque de código.Las líneas de código dentro de este bloque de código tienen sangría, lo que indica que “pertenecen” a otro bloque de código exterior.
Seguimos un patrón similar con las instrucciones
if
yelse
internas, y con el código dentro de esos bloques de código.
No todo el mundo está de acuerdo con esta directriz de estilo para incluir espacios en blanco. Sin embargo, debería considerar el uso de esta directriz como punto de partida para escribir código. En el futuro, puede tener una finalidad cuando tome la decisión de desviarse de esta directriz.
Resumen
Puntos clave de este ejercicio:
- Use los espacios en blanco prudentemente para mejorar la legibilidad del código.
- Use los avances de línea para crear líneas vacías que separen frases de código. Una frase incluye líneas de código que son similares o que funcionan de forma conjunta.
- Use los avances de línea para separar los símbolos de los bloques de código para que estén en su propia línea de código.
- Use la tecla
tab
para alinear un bloque de código con la palabra clave con la que está asociado. - Aplique sangría al código dentro de un bloque de código para mostrar a qué pertenece.