stringtranslate.com

Estilo de programación

El estilo de programación , también conocido como estilo de codificación o estilo de código , es un conjunto de reglas o pautas que rigen el diseño del código fuente . El estilo de programación también puede referirse a un aspecto de calidad del código que se interpreta subjetivamente.

Algunos afirman que seguir un estilo de programación particular ayuda a los programadores a leer y comprender el código y evitar introducir errores.

Los Elementos de estilo de programación , escritos en la década de 1970, proporcionan ejemplos en Fortran y PL/I .

El estilo utilizado en una base de código particular a menudo se basa en las convenciones de codificación de una empresa u organización, o en las preferencias del programador.

Un estilo suele estar diseñado para un lenguaje de programación o una familia de lenguajes específicos. Por ejemplo, un estilo utilizado para C puede no ser apropiado para BASIC . Sin embargo, se aplican algunas reglas a muchos idiomas.

Automatización

Hay herramientas disponibles que dan formato al código fuente, lo que permite a los codificadores concentrarse en otros aspectos como la lógica y la denominación. El uso de estas herramientas puede ahorrar tiempo de desarrollo y lograr un alto nivel de coherencia.

Aspectos de estilo

Los aspectos del estilo del código incluyen, entre otros:

Sangría

El estilo de sangría puede ayudar al lector de varias maneras, entre ellas: identificar el flujo de control y los bloques de código. En algunos lenguajes de programación, la sangría se utiliza para delimitar bloques de código y, por tanto, no es una cuestión de estilo. En idiomas que ignoran los espacios en blanco, la sangría puede afectar la legibilidad.

Por ejemplo, formateado en un estilo de uso común:

if ( horas < 24 && minutos < 60 && segundos < 60 ) { return true ; } más { return false ; }                  

Posiblemente mal formateado:

if ( horas < 24 && minutos < 60 && segundos < 60 ) { retornar verdadero ;} else { retornar falso ;}               

Estilos de sangría notables

MóduloLiq

El estilo de sangría cero de ModuLiq agrupa por línea vacía en lugar de sangría.

Ejemplo:

si ( horas < 24 && minutos < 60 && segundos < 60 ) devuelve verdadero ;            de lo contrario devuelve falso ; 
lua

Lua no utiliza las tradicionales llaves o paréntesis ; más bien, la expresión en una declaración condicional debe ir seguida de theny el bloque debe cerrarse con end.

si  horas  <  24  y  minutos  <  60  y  segundos  <  60  entonces  devuelve  verdadero ; de lo contrario,  devuelve  falso final

La sangría es opcional en Lua. and, ory notfuncionan como operadores lógicos.

Pitón

Python se basa en la sangría para indicar la estructura de control , eliminando así la necesidad de poner corchetes (es decir, {y }). Por otro lado, copiar y pegar código Python puede generar problemas, porque el nivel de sangría del código pegado puede no ser el mismo que el nivel de sangría de la línea actual. Este reformateo puede resultar tedioso si lo haces a mano, pero algunos editores de texto e IDE tienen funciones para hacerlo automáticamente. También hay problemas cuando el código Python queda inutilizable cuando se publica en un foro o página web que elimina espacios en blanco, aunque este problema se puede evitar cuando es posible encerrar el código en etiquetas que preservan los espacios en blanco, como "<pre>.. </pre>" (para HTML ), "[código]" ... "[/código]" (para bbcode ), etc.

si  horas  <  24  y  minutos  <  60  y  segundos  <  60 :  devuelve  Verdadero ; de lo contrario :  devuelve  Falso

Observe que Python comienza un bloque con dos puntos ( :).

Los programadores de Python tienden a seguir una guía de estilo comúnmente acordada conocida como PEP8. [1] Existen herramientas diseñadas para automatizar el cumplimiento de PEP8.

Haskell

Al igual que Python, Haskell tiene la regla del fuera de juego. Tiene una sintaxis de dos dimensiones donde la sangría es significativa para definir bloques (aunque una sintaxis alternativa utiliza llaves y punto y coma).

Haskell es un lenguaje declarativo, hay declaraciones, pero declaraciones dentro de un script Haskell.

Ejemplo:

sea ​​c_1 = 1 c_2 = 2 en f x y = c_1 * x + c_2 * y                 

se puede escribir en una línea como:

sea ​​{ c_1 = 1 ; c_2 = 2 } en f x y = c_1 * x + c_2 * y             

Haskell fomenta el uso de programación alfabetizada , donde el texto extendido explica la génesis del código. En los scripts alfabetizados de Haskell (nombrados con la lhsextensión), todo es un comentario excepto los bloques marcados como código. El programa puede estar escrito en LaTeX , en tal caso el codeentorno marca lo que es código. Además, cada párrafo de código activo se puede marcar precediéndolo y finalizándolo con una línea vacía, y comenzando cada línea de código con un signo mayor que y un espacio. Aquí un ejemplo usando el marcado LaTeX:

La función \ verbo + isValidDate + prueba si la fecha es válida \ comenzar { código } isValidDate :: Fecha -> Bool isValidDate fecha = hh >= 0 && mm >= 0 && ss >= 0 && hh < 24 && mm < 60 && ss < 60 donde ( hh , mm , ss ) = fromDate fecha \ end { code } observe que en este caso la función sobrecargada es \ verb + fromDate :: Fecha -> ( Int , Int , Int ) +.                                          

Y un ejemplo usando texto plano:

La función isValidDate prueba si la fecha es válida.       > isValidDate :: Fecha -> Bool > isValidDate fecha = hh >= 0 && mm >= 0 && ss >= 0 > && hh < 24 && mm < 60 && ss < 60 > donde ( hh , mm , ss ) = fromDate fecha                        observe que en este caso la función sobrecargada es fromDate :: Date -> ( Int , Int , Int ) .             

Alineamiento vertical

Algunos programadores consideran valioso alinear elementos similares verticalmente (como tabulares, en columnas), citando que puede hacer que los errores tipográficos generados sean más obvios.

Por ejemplo, no alineado:

$búsqueda  =  matriz ( 'a' ,  'b' ,  'c' ,  'd' ,  'e' ); $reemplazo  =  matriz ( 'foo' ,  'bar' ,  'baz' ,  'quux' );$valor  =  0 ; $otro valor  =  1 ; $otro valor más  =  2 ;

alineado:

$búsqueda  =  matriz ( 'a' ,  'b' ,  'c' ,  'd' ,  'e' ); $reemplazo  =  matriz ( 'foo' ,  'bar' ,  'baz' ,  'quux' );$valor  =  0 ; $otro valor  =  1 ; $otro valor más  =  2 ;

A diferencia del código no alineado, el código alineado implica que los valores de búsqueda y reemplazo están relacionados ya que tienen elementos correspondientes. Como hay un valor más para la búsqueda que para el reemplazo, si se trata de un error, es más probable que se detecte mediante inspección visual.

Las desventajas citadas de la alineación vertical incluyen:

El mantenimiento de la alineación se puede aliviar con una herramienta que proporcione soporte (es decir, tabuladores elásticos ), aunque eso crea una dependencia de dichas herramientas.

Como ejemplo, operaciones de refactorización simples para cambiar el nombre de "$replacement" a "$r" y "$anothervalue" a "$a" dan como resultado:

$búsqueda  =  matriz ( 'a' ,  'b' ,  'c' ,  'd' ,  'e' ); $r  =  matriz ( 'foo' ,  'barra' ,  'baz' ,  'quux' );$valor  =  0 ; $a  =  1 ; $otro valor más  =  2 ;

Con un formato no alineado, estos cambios no tienen un efecto tan dramático, inconsistente o indeseable:

$búsqueda  =  matriz ( 'a' ,  'b' ,  'c' ,  'd' ,  'e' ); $r  =  matriz ( 'foo' ,  'barra' ,  'baz' ,  'quux' );$valor  =  0 ; $a  =  1 ; $otro valor más  =  2 ;

espacio en blanco

Un lenguaje de formato libre ignora los espacios en blanco: espacios, tabulaciones y nuevas líneas, por lo que el programador es libre de diseñar el código de diferentes maneras sin afectar el significado del código. Generalmente, el programador utiliza un estilo que se considera que mejora la legibilidad .

Los dos fragmentos de código siguientes son lógicamente iguales, pero difieren en los espacios en blanco.

int yo ; for ( i = 0 ; i < 10 ; ++ i ){ printf ( "%d" , i * i + i ); }  

versus

int yo ; for ( i = 0 ; i < 10 ; ++ i ) { printf ( "%d" , i * i + i ); }               

El uso de pestañas para espacios en blanco es discutible. Los problemas de alineación surgen debido a las diferentes tabulaciones en diferentes entornos y al uso mixto de tabulaciones y espacios.

Como ejemplo, un programador prefiere tabulaciones de cuatro, tiene su conjunto de herramientas configurado de esta manera y las utiliza para formatear su código.

intix ;// Índice para escanear la matriz suma larga ; // Acumulador de suma    

Otro programador prefiere tabulaciones de ocho y su conjunto de herramientas está configurado de esta manera. Cuando alguien más examina el código de la persona original, es posible que le resulte difícil leerlo.

intix ;// Índice para escanear la matriz suma larga ; // Acumulador de suma    

Una solución ampliamente utilizada para este problema puede implicar prohibir el uso de tabulaciones para la alineación o reglas sobre cómo se deben establecer las tabulaciones. Tenga en cuenta que las pestañas funcionan bien siempre que se usen de manera consistente, restringidas a sangría lógica y no utilizadas para alineación:

class MiClase { int foobar ( int qux , // primer parámetro int quux ); // segundo parámetro int foobar2 ( int qux , // primer parámetro int quux , // segundo parámetro int quuux ); // tercer parámetro };              

Ver también

Referencias

  1. ^ "PEP 0008 - Guía de estilo para código Python". python.org.

enlaces externos