Рефал-05

Рекомендации по стилю оформления

Эти рекомендации относятся только к оформлению исходных текстов Рефала-05, его рантайма и библиотеки встроенных функций, а также любых других программ, которые будут включаться в этот репозиторий (за исключением подключения других программ как подмодулей).

Рекомендации не навязываются как единственно верные при написании любых других программ на Рефале-05 или C.

Это рекомендации, т.е. применять их следует в соответствии со здравым смыслом. Например, длина строки не должна превышать 80 символов, но если написалась строчка длиной 82 символа и попытки её сократить или разбить на несколько ухудшают читабельность, то её лучше оставить такой «длинной».

Но злоупотреблять отступлениями от рекомендаций тоже нельзя.

Цели, положенные в основу

Глобальные рекомендации, касающиеся документации и исходных текстов

Общие рекомендации, касающиеся Рефала-05 и C

Хорошо:

+<FooBar
+  текст внутри идёт с отступом 2 пробела
+>

+void foo_bar(
+  int foo,
+  int bar
+) {

+x = bar_foo(
+  foo, bar
+);

Плохо:

-<FooBar текст выравнивается
-        по имени функции>

-void foo_bar(int foo,
-             int bar)
-{

-x = bar_foo(foo,
-            bar);

Рекомендации по оформлению кода на Рефале-05

Таким образом, предложение выглядит так:

ИмяФункции {
  …
  ЛеваяЧасть = ПраваяЧасть;

  ДлиннаяДлиннаяЛеваяЧасть =
    ДлиннаяДлиннаяПраваяЧасть;

  ДлиннаяДлиннаяЛеваяЧасть =
    ДлиннаяДлиннаяДлиннаяДлинная
    ДлиннаяДлиннаяДлиннаяПраваяЧасть;
}

Правильно (скобочные термы не разбиваются):

+  (e.ОднаждыВ t.Студёную s.Зимнюю) s.Пору
+  (t.ЯИзЛесу e.Вышел t.Был s.СильныйМороз)

Неправильно (один скобочный терм разбивается):

-  (e.ОднаждыВ t.Студёную s.Зимнюю) s.Пору (t.ЯИзЛесу e.Вышел
-  t.Был s.СильныйМороз)

Правильно:

+<НарезатьСалатРекурсивный
+  <ПомытьОвощи
+    e.Огурцы e.Помидоры t.Салат
+  >
+  (Специи
+    (
+      <Майонез>
+      <Сметана>
+    )
+    (
+      (Соль)
+      (Перец
+        Чёрный
+        Красный
+      )
+    )
+  )
+>

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

-<НарезатьСалатРекурсивный <ПомытьОвощи e.Огурцы
-                                       e.Помидоры t.Салат>
-                          (Специи (<Майонез>
-                                   <Сметана>)
-                          ((Соль)
-                           (Перец Чёрный
-                           Красный)))>

Рекомендации по оформлению кода на C

if (x != 0) {
  y = x;
}
if (x != 0) {
  y = x;
} else {
  z = y;
}
R05_NORETURN void r05_exit(int retcode) {
  fflush(stderr);
  fflush(stdout);
  end_profiler();

#ifdef R05_SHOW_STAT
  fprintf(stderr, "Step count %lu\n", s_step_counter);
#endif  /* R05_SHOW_STAT */

  free_memory();
  fflush(stdout);

  exit(retcode);
}