• Publicidad

Duda con... ¿estética?

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Duda con... ¿estética?

Notapor creating021 » 2007-10-13 19:53 @870

No, no... no estoy buscando alguien que me decore la casa. Lo que pasa es que mirando Perl Hacks (Hack 7. Enforce Local Style) me ha surgido una duda sobre los estilos y preferencias.

Cuando programo suelo usar el siguiente formato (para subs)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub algo {
<espacio><espacio>my $loquesea = shift;
...
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

Perl::Tidy hace esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub algo {
<espacio_x_4>my $loquesea = shift;
...
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Algunos usan Tab y no espacio o lo hacen así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub algo
{
<espacio o tab>my $loquesea = shift;
...
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La pregunta es... ¿Cuál es más legible?
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Publicidad

Notapor explorer » 2007-10-13 20:28 @895

Según Perl Best Practices, lo mejor es el valor intermedio de una indentación corta de dos espacios usada por los jóvenes -con buena vista-; y de una larga de un tabulador usada por los más maduros (por la tradición de sacar los fuentes en impresoras cuyas tabuladores están siempre puestos a 8 caracteres). Aunque hoy en día se puede decir al editor de texto que nos represente los caracteres tabulador con un ancho distinto a 8, no es recomendable hacerlo, por la misma razón: no sabemos si el código va a ser visto en otro editor de texto que sí tiene puesto por defecto el ancho del tabulador a 8.

Así que la recomendación final es:
* En la indentación primera, al principio de la línea, usar saltos de 4 caracteres en blanco.
* En los saltos de tabulador siguientes, más allá de la indentación primera, usar saltos en múltiplos de 8 caracteres en blanco. Es decir, no usar NUNCA el carácter tabulador, sino su representación de 8 caracteres.

La idea de esta última recomendación es que es más fácil colocar los elementos en columnas conocidas para separar comentarios, elementos de arrays, hashes, etc.

Ahora el trabajo es encontrar un editor que nos permita definir estas características. Y lo deseable también es que a la hora de borrar con el backspace, sea capaz de eliminar caracteres en blanco en múltiplos de 8. Esto último no es imprescindible, pero muy deseable.

Si, de todas formas, vas a pasar el código por perltidy, el libro también trae las opciones para este programa con las recomendaciones indicadas antes, por lo que el resultado es perfecto -según Damian, claro-.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2007-10-13 21:14 @926

Ejemplo de los tipos de indentación, tomados del capítulo 2.10 del PBP.
Indentación de 8 caracteres, que garantiza la misma presencia en todas partes (otros editores, la salida estándar del shell, impresoras, etc.)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (my $line = <>) {
        chomp $line;
        if ( $line =~ s{\A (\s*) -- ([^\n]*) }{$1#$2}xms ) {
                push @comments, $2;
        }
        print $line;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El problema es que no puedes poner más que unos pocos niveles de indentación, antes de escaparte por el margen derecho.

Indentación con dos caracteres:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (my $line = <>) {
  chomp $line;
  if ( $line =~ s{\A (\s*) -- ([^\n]*) }{$1#$2}xms ) {
    push @comments, $2;
  }
  print $line;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El problema con esta indentación es que es muy complicada para aquellos que hayan superado los 30 años (es lo que dice el libro).

Indentación con 4 caracteres:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (my $line = <>) {
    chomp $line;
    if ( $line =~ s{\A (\s*) -- (.*)}{$1#$2}xms ) {
        push @comments, $2;
    }
    print $line;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La preferida por estar en medio de los dos valores.

El capítulo 2.11 se dedica al tabulador, que se recomienda usarlo como 8 caracteres en blanco, para garantizar que la presentación es la misma en todos los dispositivos de salida.

Presenta las opciones a usar dentro del vim:

Código: Seleccionar todo
set tabstop=4      "An indentation level every four columns"
set expandtab      "Convert all tabs typed into spaces"
set shiftwidth=4   "Indent/outdent by four columns"
set shiftround      "Always indent/outdent to the nearest tabstop"

y para emacs:
Código: Seleccionar todo
(defalias 'perl-mode 'cperl-mode)    ;; 4 space indents in cperl mode
    '(cperl-close-paren-offset -4)
    '(cperl-continued-statement-offset 4)
    '(cperl-indent-level 4)
    '(cperl-indent-parens-as-block t)
    '(cperl-tab-always-indent t)


Hay más reglas interesantes, sobre reglas de formato, en el PBP. Incluye también las opciones para perltidy y formatear de forma automática el código fuente (recomendación 2.22).

Y algo que no se comenta, y es muy importante, es la separación entre líneas, pero eso se resuelve usando un tipo de letra adecuado, como la Terminus.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2007-10-14 19:45 @865

:? Si miras C/C++ Curso de programación de Fco. Javier Veballos, usa dos caracacteres.

Al ver Computer Science & Perl Programming de TPJ notas que usan 4 caracteres.
Perl Coockbook usa 4 y Learning Perl usa 2... todo cambia según el libro, si en el libro usan Mosaic, si hablan de Nexus o usan Firefox :lol: .

Si estás en la terminal, 2 es más cómodo (si es 80x24).
En un IDE, 4 puede ser más cómodo.

Bien, gracias explorer, ya sé que dicen los libros... pero ¿Qué opinas?
No hay nada mejor que las opiniones de programadores expertos.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor kidd » 2007-10-14 22:47 @991

Al final de cuentas uno debe de decidir cómo comprende mejor su código. Yo en lo personal en mi código uso la versión intermedia, 4 espacios por cada nivel de código.

Como se recomienda, nunca uso los tabs, y mi editor, el DZSoft Perl Editor, me convierte los tabs en 4 espacios de manera automática, así que si más adelante abro el archivo con mi notepad, veo el código formateado de la misma manera.

La versión de 8 espacios me parece algo impráctica, pues después de dos niveles tienes que hacer scroll horizontal para poder ver el código completo, y la versión de 2 espacios me parece demasiado pegada para ser lo suficientemente legible cuando tienes muchos bloques.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2007-10-15 05:20 @264

Yo también uso los tabuladores de 4 espacios. Quiero decir, no uso el carácter tabulador, sino 4 espacios.

Lo más aburrido es cuando has pulsado varias veces la tecla del tabulador y has escrito un montón de caracteres. Si quieres borrarlos, lo ideal es que al pulsar la tecla del Retroceso se borraran esos 4 caracteres. Pero claro, el editor no sabe si queremos borrar los 4 caracteres o solo el último espacio en blanco de esos 4 caracteres. En algunos editores sí es directo (como el joe), mientras que en otros esto se consigue con una combinación de teclas especial. En el caso del Eclipse, en con mayúsculas+tabulador.

En otros hay que hacer trampas. En el Eclipse hay otra forma de trabajar: defino y uso caracteres tabulador, pero con ancho de 4 caracteres. De esa manera es muy rápido tabular, y además, de forma precisa (en su columna correspondiente). Pero a la hora de guardar el código, con la ayuda del plugin AnyEdit, se convierten todos los tabuladores a 4 espacios. Puede parecer un poco chapucero, pero es otra forma de trabajar.

Actualización: Lo he mirado mejor y resulta que esta última combinación no es tan buena: los tabuladores los convierte siempre a 4 caracteres independiente de la posición del tabulador, por lo que inserta más espacios de los que debe. Lo mejor entonces es lo más sencillo. Recuerdo: en eclipse. Usar tabuladores hechos de 4 espacios. La forma de introducirlos es con el tabulador Y la forma de borrarlos es con mayúsculas+tabulador.
Última edición por explorer el 2007-10-18 05:43 @279, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2007-10-15 19:00 @833

Ahora he de usar 4 espacios en mis programas.
¡Gracias!
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados