Foros del Web » Programando para Internet » PHP »

Como indentar/tabular un switch?

Estas en el tema de Como indentar/tabular un switch? en el foro de PHP en Foros del Web. Hola estimados, siempre he tenido esta pregunta y me gustaría saber como lo hacen ustedes, esto me ayudará a elegir un estandar para mis códigos. ...
  #1 (permalink)  
Antiguo 23/07/2014, 10:06
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Como indentar/tabular un switch?

Hola estimados, siempre he tenido esta pregunta y me gustaría saber como lo hacen ustedes, esto me ayudará a elegir un estandar para mis códigos.

Algunos ejemplos que he usado:

dentador (php.net): indenta cada instruccion como si fuesen llaves
Código PHP:
Ver original
  1. switch($b){
  2.     case "cont":
  3.         $x=1;
  4.         $y=1;
  5.         break;
  6.     case "meas":
  7.         $x=2;
  8.         $y=2;
  9.         break;
  10.     case "pass":
  11.         $x=3;
  12.         $y=3;
  13.         break;
  14. }

canónico (dreamweaver): solo las llaves indentan
Código PHP:
Ver original
  1. switch($b){
  2.     case "cont": $x=1;
  3.     $y=1;
  4.     break;
  5.     case "meas": $x=2;
  6.     $y=2;
  7.     break;
  8.     case "pass": $x=3;
  9.     $x=3;
  10.     break;
  11. }

económico (php.net, flash 4 y w3cJS): solo indenta el código
Código PHP:
Ver original
  1. switch($b){
  2. case "cont":
  3.     $x=1;
  4.     $y=1;
  5.     break;
  6. case "meas":
  7.     $x=2;
  8.     $y=2;
  9.     break;
  10. case "pass":
  11.     $x=3;
  12.     $x=3;
  13.     break;
  14. }

cortador (aporte en php.net): usa el break como un cierre de llave
Código PHP:
Ver original
  1. switch($b){
  2. case "cont":
  3.     $x=1;
  4.     $y=1;
  5. break;
  6. case "meas":
  7.     $x=2;
  8.     $y=2;
  9. break;
  10. case "pass":
  11.     $x=3;
  12.     $y=3;
  13. break;
  14. }

cerrajero (php.net): si no hay llaves, las crea
Código PHP:
Ver original
  1. switch($b){
  2.     case "cont":{
  3.         $x=1;
  4.         $y=1;
  5.         break;
  6.     }
  7.     case "meas":{
  8.         $x=2;
  9.         $y=2;
  10.         break;
  11.     }
  12.     case "pass":{
  13.         $x=3;
  14.         $y=3;
  15.         break;
  16.     }
  17. }

Ustedes como hacen el switch?
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #2 (permalink)  
Antiguo 23/07/2014, 10:30
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Como indentar/tabular un switch?

ninguna de ellas me parecen identadas!

mira como lo hago yo:

Código PHP:
Ver original
  1. <?php
  2.     switch($b){
  3.         case "cont":
  4.             $x=1;
  5.             $y=1;
  6.         break;
  7.         case "meas":
  8.             $x=2;
  9.             $y=2;
  10.         break;
  11.         case "pass":
  12.             $x=3;
  13.             $x=3;
  14.         break;
  15.     }
  16. ?>

poner llaves dentro de un switch es irrespetuoso, pner varias instrucciones en la misma linea definitivamente n es tabular, etc etc

tenes que mirar todo como si fuera una tabla html

Código HTML:
Ver original
  1.     <tr>
  2.         <td></td>
  3.         <td></td>
  4.     <tr>
  5.     <tr>
  6.         <td></td>
  7.         <td></td>
  8.     <tr>
  9.     <tr>
  10.         <td></td>
  11.         <td></td>
  12.     <tr>

ves? todo en su lugar, no hay tr y td en la misma linea ni mada que rompa la estructura
de todos los ejemplos que pusiste yo no tomaria ni uno por que estan todos mal y me produce desprecio por esos developer´s! jajaja es un chite malo

Última edición por Patriarka; 23/07/2014 a las 10:30 Razón: hightcolor
  #3 (permalink)  
Antiguo 23/07/2014, 11:03
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 14 años, 7 meses
Puntos: 12
Respuesta: Como indentar/tabular un switch?

Hola

Yo uso el primero que pusiste. @Patriarka me odia

Saludos
  #4 (permalink)  
Antiguo 23/07/2014, 11:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Como indentar/tabular un switch?

Cita:
Ustedes como hacen el switch?
Siguiendo la guía de estilo definida aquí: http://phptherightway.com/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 23/07/2014, 16:45
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Como indentar/tabular un switch?

El estilo de Patriarka es parecido al "Cortador" pero indentado, supongo que llamaré a este estilo "Patriarka".

Entonces jc_moj prefiere la indentación de php.net

No me quedo claro como lo hace pateketrueke :(

He estado buscando más información por ahí y he encontrado que originalmente los case: eran etiquetas y por lo tanto nunca deberían tabularse, o sea como el "económico".

Cita:
When a label in a switch follows a "break" statement, the two are separated by a blank line. If the preceding statement is not a break, there is no blank line.

Blank lines separate each of the main sections in a file, including prologue comment (with copyright or version information, etc.), package declaration, imports and interface or class. Within a class, at least all constructors, methods and inner classes should be separated from each other and from any other fields by blank lines (always before the prologue comment, of course).

A blank line may optionally be inserted anywhere to improve readability but the use of two or more contiguous blank lines is unnecessary and should be avoided.
Sin embargo otras fuentes dicen que todo lo que está entre {llaves} debería indentarse.

Sin embargo en otro foro un usuario publicó este código:

Código PHP:
Ver original
  1. switch (1) {
  2.     case 1:
  3.         break;
  4.     case 2:
  5.         break;
  6.     case 3:
  7.         break;
  8.     default:
  9.         break;
  10. }

y un corrector de scripts lanzó esta salida:

Cita:
line 3, col 5, Expected 'case' to have an indentation at 1 instead at 5.
line 4, col 9, Expected 'break' to have an indentation at 5 instead at 9.
line 5, col 5, Expected 'case' to have an indentation at 1 instead at 5.
line 6, col 9, Expected 'break' to have an indentation at 5 instead at 9.
line 7, col 5, Expected 'case' to have an indentation at 1 instead at 5.
line 8, col 9, Expected 'break' to have an indentation at 5 instead at 9.
line 9, col 5, Expected 'default' to have an indentation at 1 instead at 5.
line 10, col 9, Expected 'break' to have an indentation at 5 instead at 9.
Por lo tanto también apoya a estilo "económico".

Al parecer, no hay una forma "correcta" o "incorrecta", pero esta encuesta me sirve para elegir un estandar :)

Y ustedes como hacen el switch?
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #6 (permalink)  
Antiguo 23/07/2014, 17:17
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Como indentar/tabular un switch?

Yo lo escribo igual que Patriarka, con el Break a la misma altura que el Case.
  #7 (permalink)  
Antiguo 23/07/2014, 17:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Como indentar/tabular un switch?

Yo lo hago como el primer ejemplo que pusiste (php.net)

Zend sugiere esto: http://framework.zend.com/manual/1.1...tements.switch

CodeIgniter no lo menciona: http://ellislab.com/codeigniter/user...tyleguide.html

Laravel solo dice que la llave de apertura no debe estar en la misma línea: https://github.com/laravel/framework...ONTRIBUTING.md

Sugiero que no te compliques tanto la vida, elige el "formato" que mejor te acomode y aplícalo siempre que requieras esa estructura. No podrás satisfacer a todos y, además, eres tú quien debe sentirse cómodo.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 23/07/2014, 19:24
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Como indentar/tabular un switch?

coincido con TRiby,
busca tu estilo
  #9 (permalink)  
Antiguo 24/07/2014, 07:09
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Como indentar/tabular un switch?

Gracias por la opinión ocp001a, la verdad creo que en un comienzo (hace unos 10 años) yo también usaba el break como cierre, no recuerdo por que dejé de hacerlo, quizás fue por que el break muchas veces no tuve que ponerlo y quedaba sin ese "cierre".

Muchas gracias por esos aportes triby, a mi también me gusta el primer estilo, pero elegir cual es el que más me acomode no ha sido tan fácil, esto es por que ninguno me convence al 100%, hay muchas reglas que me parecen rotas en la estructura de un switch, patriarka mencionó algunas y siempre me da la sensación de que hay algo mal en mis switches XD... y bueno, por eso quise hacer esta encuesta y conocer las opiniones del foro.

Gracias por su ayuda!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:35.