Создать тему  Создать ответ 
Дѣлимось своимъ стѵлемъ ôдступôвъ
13-06-2013, 13:32    
Сообщение: #1
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

Дѣлимось своимъ стѵлемъ ôдступôвъ
Уайтсмітс із парою доповнень.
Код:
import some.useful.package.*;

public class MyClass
{
public static void main(String[]args)
    {
    int x=0;
    for(i=0;i<9;i++)
        x++;
    for(;;)
        {
        x--;
        break;
        }
    int y=x;
    if (2*2==4)
        x++;
    else if (3*3==9)
        {
        x--;
        x/=2;
        }
    else{
        x*=2;
        x++;
        }
    do  {
        x=100 % x;
        System.out.println(x);
        } while(x>y);
    System.out.println(f());
    }
static int f()
    {
    try {
        Do.smth();
        }
    catch(Exception e)
        {
        System.err.println("!!!");
        }
    finally
        {
        return 333;
        }
    }
}
Особливості:
1) глобальні заголовки, а також глобальний блок {…} (в якому лежать усі функції, описані в даному файлі) ідуть без відступу.
2) Якщо заголовок блоку ≤ 4 символи, «{» пишеться в тому ж рядку, на рівні з відступом блоку.
3) Там, де {} можна не писати, вони не пишуться.
4) Цикл do{}while пишеться як показано вище (while іде в тому ж рядку, що й «}», оскільки після нього не може бути {}, що йому належать). В інших випадках продовження конструкції (else, catch) пишеться з нового рядка на одному рівні з заголовком конструкції (if, try).

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
13-06-2013, 21:27    
Сообщение: #2
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

RE: Дѣлимось своимъ стѵлемъ ôдступôвъ
У мене щось на кшталт K&R, але взагалі-то я постійно форматую код як вийде та по-різному. Якщо що, є автоматичні форматувальники.

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
23-06-2013, 02:41    
Сообщение: #3
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: Дѣлимось своимъ стѵлемъ ôдступôвъ
Що робити з мітками та 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;
                       }
        ...

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
23-06-2013, 18:39    
Сообщение: #4
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

RE: Дѣлимось своимъ стѵлемъ ôдступôвъ
Я відступав би десь так:
Код:
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");
}

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)