Що робити з мітками та case (які теж, фактично, є різновидом міток)? Мені здається, було б непогано ставити їх лівіше блоку.
Наприклад, так:
Код:
//мітки на рівні заголовка блоку
int p (int x)
{
switch(x)
{
case 1:
printf("One\n");
break;
case 2:
printf("Two\n");
break;
default:
while(--x > 2)
{
printf("Enough!");
if (x%2==0) goto l1;
}
printf("I need more!\n");
break;
}
l1: printf("Bye!\n");
}
або так:
Код:
//мітки на один пробіл правіше заголовка блоку
int p (int x)
{
switch(x)
{
case 1:
printf("One\n");
break;
case 2:
printf("Two\n");
break;
default:
while(--x > 2)
{
printf("Enough!");
if (x%2==0) goto l1;
}
printf("I need more!\n");
break;
}
l1:printf("Bye!\n");
}
так:
Код:
//мітка вирівнюється по правому краю (бажані довгі відступи)
int p (int x)
{
switch(x)
{
case 1:printf("One\n");
break;
case 2:printf("Two\n");
break;
default:while(--x > 2)
{
printf("Enough!");
if(x%2==0)goto l1;
}
printf("I need more!\n");
break;
}
l1:printf("Bye!\n");
}
чи взагалі так:
Код:
//мітки на початку рядка, з фіксованим рівнем відступу (фортран-стайл)
int p (int x)
{
switch(x)
{
case 1: printf("One\n");
break;
case 2: printf("Two\n");
break;
default:while(--x > 2)
{
printf("Enough!");
if (x%2==0) goto l1;
}
printf("I need more!\n");
break;
}
l1: printf("Bye!\n");
}
Окрім міток для goto, існують джавівські мітки для вкладених циклів. Що робити з ними — виділяти як решту міток (що, з моєї точки зору, незовсім правильно: така мітка дає ефект лише на цикл, який до неї належить), писати як звичайний початок оператора, ніяк окремо не виділяючи (що логічно, але робить їх менш виразними), робити відступ для всього блоку, що йде після мітки?
Код:
...
a:for( ; ; )
{
...
break a;
}
...
b:for( ; ; )
{
...
break b;
}
...
c: for( ; ; )
{
...
break c;
}
...