Автор Тема: [Oberon-07] Руководство по стилю кодирования  (Прочитано 37193 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #60 : Ноябрь 13, 2013, 12:15:48 pm »
И еще вопрос - делать отступ для процедур и прочих потрохов модуля, или нет?

MODULE A;

PROCEDURE Foo;
BEGIN
END Foo;

END A.

MODULE A;

   PROCEDURE Foo;
   BEGIN
   END Foo;

END A.

Нужно учесть, что начало модуля и конец модуля на один экран практически никогда не попадают одновременно.
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #61 : Ноябрь 13, 2013, 01:16:24 pm »
Если имеет смысл для отделения того, что это код до BEGIN модуля и после. Я пока делаю для всего отступы, привык в 1С, мне так удобнее воспринимать (наверное привычка).

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #62 : Ноябрь 13, 2013, 01:22:31 pm »
Если имеет смысл для отделения того, что это код до BEGIN модуля и после. Я пока делаю для всего отступы, привык в 1С, мне так удобнее воспринимать (наверное привычка).

Штука в том, что на экране мы обычно видим что-то вроде набора процедур модуля. Которые зачем-то сдвинуты на один отступ от края. При этом BEGIN..END секция модуля вообще часто не используется, а если и используется, то она мала.

Также следует учитывать, что чем больше отступов тем хуже они читаются. Первый отступ - читается лучше всего, и глупо его тратить на то что и так очевидно (очевидно что ВСЕ процедуры находятся в каком-то модуле, не бывает процедур вне модуля).
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #63 : Ноябрь 13, 2013, 01:28:08 pm »
Ну так я и высказал мысль, что это разумно :) , но после бегин все же буду отсупы делать

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #64 : Ноябрь 13, 2013, 01:44:56 pm »
Прочел руководство:

1) я за 4 пробела;
2) выравнивание кончено, удобно смотреть, но если редактор не поддерживает, специально делать точно буду (имею в виду выравнивание знаков равно и т.п.). Хотя выравнивания например при переносе параметров процедур на другую строку и т.п. однозначно нужны
3) Согласен про пустые строки, однозначно надо разделять
4) уже привык, что один оператор, одна строка, мне и читать код так обычно легче;
5) абревиатуры да, лучше не использовать
6) по поводу начинать ли с большой или малой буквы идентификаторы, пока не знаю (обычно пишу с большой), но уж с экспортом, мне кажется, это точно не должно быть связано

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #65 : Ноябрь 13, 2013, 02:26:40 pm »
Нужно учесть, что начало модуля и конец модуля на один экран практически никогда не попадают одновременно.

Да, отступ для этого случая не имеет смысла.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #66 : Ноябрь 13, 2013, 02:39:38 pm »
Нужно учесть, что начало модуля и конец модуля на один экран практически никогда не попадают одновременно.
Да, отступ для этого случая не имеет смысла.
Мне тоже кажется отступ лишним.
Но как тогда быть с вложенными процедурами?

Можно в принципе делать так:
1. В модуле первый уровень без отступа (для IMPORT, CONST, VAR, TYPE, PROCEDURE, BEGIN)
2. В процедуре делать отступ (для CONST, VAR, TYPE, PROCEDURE)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #67 : Ноябрь 13, 2013, 02:55:42 pm »
Ну так я и высказал мысль, что это разумно :) , но после бегин все же буду отсупы делать

Дык после BEGIN да, отступы нужны и важны. Как-то так:

MOFULE A;
CONST
    pi = 3.1415;
TYPE
    Foo = RECORD END;
VAR
    some : INTEGER;

PROCEDURE Boo();
CONST
    e = 2.7;
TYPE
    Arr = ARRAY 10 OF CHAR;
VAR
    i : INTEGER;

    PROCEDURE Inner();
    BEGIN
        i := 0;
    END Inner;

BEGIN
    i := 0;
END Boo;

PROCEDURE Boo1();
CONST
    e = 2.7;
TYPE
    Arr = ARRAY 10 OF CHAR;
VAR
    i : INTEGER;

    PROCEDURE Inner();
    BEGIN
        i := 0;
    END Inner;
BEGIN
    i := 0;
END Boo1;

PROCEDURE Boo2();
CONST
    e = 2.7;
TYPE
    Arr = ARRAY 10 OF CHAR;
VAR
    i : INTEGER;

    PROCEDURE Inner();
    BEGIN
        i := 0;
    END Inner;
BEGIN
    i := 0;
END Boo2;

BEGIN
    some := 42;
    Boo;
    Boo1;
    Boo2;
END A.

Ну и как это все смотрится на gist'ах например:
вариант с 4 пробелами: https://gist.github.com/valexey/7450244
вариант с 3 пробелами: https://gist.github.com/valexey/7450264

По моему, 3 пробела смотрятся лучше (на даром же Ада-поклонники именно 3 используют).
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #68 : Ноябрь 13, 2013, 02:58:18 pm »
По моему, 3 пробела смотрятся лучше (на даром же Ада-поклонники именно 3 используют).

Только 4! :)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #69 : Ноябрь 13, 2013, 02:59:36 pm »
По моему, 3 пробела смотрятся лучше (на даром же Ада-поклонники именно 3 используют).

Только 4! :)

rationale? :-) Ну, то есть я могу обосновать почему в данном случае 3 лучше чем 4 и лучше чем 2.
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #70 : Ноябрь 13, 2013, 03:03:27 pm »
rationale? :-) Ну, то есть я могу обосновать почему в данном случае 3 лучше чем 4 и лучше чем 2.

Не только на обероне приходится писать некоторым ;) А в других местах принято 4. Зачем добавлять искусственную специфику? Пусть даже она и лучше в абсолюте.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #71 : Ноябрь 13, 2013, 03:08:10 pm »
rationale? :-) Ну, то есть я могу обосновать почему в данном случае 3 лучше чем 4 и лучше чем 2.

Не только на обероне приходится писать некоторым ;) А в других местах принято 4. Зачем добавлять искусственную специфику? Пусть даже она и лучше в абсолюте.

Ну да, некоторые вот еще на Аде пишут, а там 3 пробела таки :-)

Обосную:
VAR
   something

смотрится лучше чем:
VAR
    something

То есть отступ в 3 пробела диктуется тем, что самое короткое частовстречающееся слово после которого делается этот отступ (VAR) длиной ровно в 3 символа.
Y = λf.(λx.f (x x)) (λx.f (x x))

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #72 : Ноябрь 13, 2013, 03:12:36 pm »
Ну, то есть я могу обосновать почему в данном случае 3 лучше чем 4 и лучше чем 2.
Ну обоснуй, чем 2 пробела - плохо.
(Сам я всегда использую 2 пробела :) ).

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #73 : Ноябрь 13, 2013, 03:17:33 pm »
Можно в принципе делать так:
1. В модуле первый уровень без отступа (для IMPORT, CONST, VAR, TYPE, PROCEDURE, BEGIN)
А я уже давно так делаю.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #74 : Ноябрь 13, 2013, 03:23:37 pm »
Ну, то есть я могу обосновать почему в данном случае 3 лучше чем 4 и лучше чем 2.
Ну обоснуй, чем 2 пробела - плохо.
(Сам я всегда использую 2 пробела :) ).
Обосновываю - во-первых 2 пробела провоцируют на глубокую вложенность конструкций. Ибо отлично все помещается по ширине на экране. Во-вторых два пробела маловато - если уровень вложенности не первый а третий скажем, и начала и конца блока не видно одновременно (а так бывает), то этот третий сложно отличить от четвертого.
Y = λf.(λx.f (x x)) (λx.f (x x))