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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #45 : Сентябрь 21, 2013, 11:06:25 am »
http://oberspace.dyndns.org/index.php/topic,541.msg18024.html#msg18024

Этот

В общем и в целом нормально, суть руководства по стилю ухвачена.

Но есть претензии:

1) Аргументы процедур надо отделять друг от друга пробелами:

Правильно:

PROCEDURE Line*(x0, y0, x1, y1 : REAL);

P.SetSize(640, 360);

Неправильно:

PROCEDURE Line*(x0,y0,x1,y1 : REAL);

P.SetSize(640,360);

2) Операторы в выражениях так же следует отделять от их аргументов пробелами:

Правильно:

h := 0.66 * h;

Неправильно:

h := 0.66*h;

3) Не знаю, как лучше делать в таких случаях:

так:  TYPE
    ProcessingType* = POINTER TO RECORD END; (* dummy type *)
    CallbackType*   = PROCEDURE;
  VAR
    MouseX*   : REAL;
    MouseY*   : REAL;
    Width*    : INTEGER;
    Height*   : INTEGER;
или так:  TYPE
    ProcessingType * = POINTER TO RECORD END; (* dummy type *)
    CallbackType   * = PROCEDURE;
  VAR
    MouseX  * : REAL;
    MouseY  * : REAL;
    Width   * : INTEGER;
    Height  * : INTEGER;
или даже так:  TYPE
    ProcessingType *= POINTER TO RECORD END; (* dummy type *)
    CallbackType   *= PROCEDURE;
  VAR
    MouseX   *: REAL;
    MouseY   *: REAL;
    Width    *: INTEGER;
    Height   *: INTEGER;
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #46 : Сентябрь 22, 2013, 08:06:17 am »
3) Не знаю, как лучше делать в таких случаях:
На мой взгляд, лучше первый вариант. Во втором варианте звёздочка выглядит как "умножить" и только сбивает с толку. Третий вариант тоже плох, потому что маркер семантически связан с идентификатором, а не с типом. Стремление представить инфу об экспорте в виде столбика понятно, - так нагляднее, - но здесь всё же лучше не перебарщивать.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #47 : Сентябрь 22, 2013, 11:01:00 am »
3) Не знаю, как лучше делать в таких случаях:
На мой взгляд, лучше первый вариант. Во втором варианте звёздочка выглядит как "умножить" и только сбивает с толку. Третий вариант тоже плох, потому что маркер семантически связан с идентификатором, а не с типом. Стремление представить инфу об экспорте в виде столбика понятно, - так нагляднее, - но здесь всё же лучше не перебарщивать.

В первом варианте тоже недостаток -- эта звёздочка экспорта плохо заметна. Если бы хотя бы она была перед идентификатором...
И вообще, что мешало Вирту ввести ещё одно ключевое слово public? Если он стремился к ясности программ на своём языке, то не стоило так экономить на спичках -- только хуже получилось...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #48 : Сентябрь 23, 2013, 01:36:01 am »
И вообще, что мешало Вирту ввести ещё одно ключевое слово public?
А если это слово в комментарии указать, не равнозначно будет?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #49 : Сентябрь 23, 2013, 05:49:22 am »
И вообще, что мешало Вирту ввести ещё одно ключевое слово public?

А если это слово в комментарии указать, не равнозначно будет?

Нет, ведь комментарии необязательны, а значит реально мало кто будет указывать.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #50 : Сентябрь 23, 2013, 05:54:10 am »
Народ, гляньте мой Оберонистый код, и напишите список замечаний по стилю плиз.

Кстати да, комментариев вапще недостаточно )))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #51 : Сентябрь 23, 2013, 02:08:24 pm »
И вообще, что мешало Вирту ввести ещё одно ключевое слово public?

Всё это расширизмы и непотребство. :)

И вообще, что мешало Вирту ввести ещё одно ключевое слово public?
А если это слово в комментарии указать, не равнозначно будет?

Как раньше на паскале?

end (* имя функции*);

while

end (* while*) и т.д

Цитировать
  TYPE
    ProcessingType * = POINTER TO RECORD END; (* dummy type *)
    CallbackType     * = PROCEDURE;
  VAR
    MouseX  * : REAL;
    MouseY  * : REAL;
    Width     * : INTEGER;
    Height    * : INTEGER;

Я голосую за этот вариант.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #52 : Сентябрь 23, 2013, 03:25:35 pm »
Цитировать
  TYPE
    ProcessingType * = POINTER TO RECORD END; (* dummy type *)
    CallbackType     * = PROCEDURE;
  VAR
    MouseX  * : REAL;
    MouseY  * : REAL;
    Width     * : INTEGER;
    Height    * : INTEGER;

Я голосую за этот вариант.

А если я хочу так записать:
Цитировать
  VAR
    MouseX*, MouseY* : REAL;   (* позиция курсора мыши *)
    Width*, Height* : INTEGER;  (* размеры окна *)
, то как мне отступы делать?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #53 : Сентябрь 23, 2013, 04:40:30 pm »
А если я хочу так записать:  VAR
    MouseX*, MouseY* : REAL;   (* позиция курсора мыши *)
    Width*, Height* : INTEGER;  (* размеры окна *)
, то как мне отступы делать?

Да, вопрос, конечно, интересный.
Можно было бы, конечно, так:  VAR
    MouseX * : REAL;     (* позиция курсора мыши -- координата X *)
    MouseY * : REAL;     (* позиция курсора мыши -- координата Y *)
    Width  * : INTEGER;  (* размеры окна -- ширина *)
    Height * : INTEGER;  (* размеры окна -- высота *)

Такие вопросы, как количество переменных в одной строке списка экспорта, тоже надо рассмотреть и к какому-то соглашению прийти...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #54 : Сентябрь 23, 2013, 05:26:24 pm »
Такие вопросы, как количество переменных в одной строке списка экспорта, тоже надо рассмотреть и к какому-то соглашению прийти...

В приведённых примерах координаты (или там размеры) относятся к одной сущности (курсор мыши), поэтому их разделять не целесообразно. Большой беды, конечно, не будет, если их записать на разных строчках, но слишком уж утомительно подробно получается (даже комментарии частично дублируют друг друга).

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #55 : Сентябрь 23, 2013, 05:43:03 pm »
Такие вопросы, как количество переменных в одной строке списка экспорта, тоже надо рассмотреть и к какому-то соглашению прийти...

В приведённых примерах координаты (или там размеры) относятся к одной сущности (курсор мыши), поэтому их разделять не целесообразно. Большой беды, конечно, не будет, если их записать на разных строчках, но слишком уж утомительно подробно получается (даже комментарии частично дублируют друг друга).

Такие связанные сущности принято объединять в структуры (записи), вообще-то...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #56 : Сентябрь 23, 2013, 06:42:01 pm »
Такие связанные сущности принято объединять в структуры (записи), вообще-то...

Я бы вообще предложил запретить нотацию "через запятую". Даже для связанных сущностей. А не связанные сущности отделять пустой строкой. Стремление в обероновских исходниках все упрятать в  одну строку никогда не радовало глаз...

P.S. В С тоже можно лепить поля через запятую. В итоге во всех вменяемых исходниках это не практикуется.

valexey_u

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

vlad

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

Я за 4.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07] Руководство по стилю кодирования
« Ответ #59 : Ноябрь 11, 2013, 04:32:22 pm »
Предлагаю использовать отступ либо в 3 пробела (как в Аде) либо вообще в 4 - во-первых в этом случае отступы видны лучше, во-вторых в этом случае уровень вложенности конструкций будет получаться меньше.

Я за 4.

А может сразу 8 -- как в линуксе? И вапще не пробелы, а табуляцию? ))) Вложенность больше 3 будет трудно создавать при ограничении в 80 символов в строке )))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…