Рекомендации при написании кода

Используйте лямбду выражения, если тело лямбды однострочное

Правильно:

знч Результат = (ПарСтрока: Строка) -> ПарСтрока.Длина()

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

знч Результат = метод(ПарСтрока: Строка) ->
                   возврат ПарСтрока.Длина()
                ;
Не используйте лямбду инструкции, а создавайте методы, если тело лямбды не умещается в 5 строк

Правильно:

знч Результат = &ОписаниеДня

метод ОписаниеДня(ТекущийДеньНедели: ДеньНедели): Строка
    пер СообщениеДня: Строка
    выбор ТекущийДеньНедели
    когда Суббота, Воскресенье
        СообщениеДня = "Сегодня выходной"
    когда Пятница
        СообщениеДня = "Сегодня предвыходной день"
    иначе
        СообщениеДня = "Сегодня будний день"
    ;
    возврат СообщениеДня    
;
Неправильно:
знч Результат = метод(ТекущийДеньНедели: ДеньНедели) ->
                   пер СообщениеДня: Строка
                   выбор ТекущийДеньНедели
                   когда Суббота, Воскресенье
                      СообщениеДня = "Сегодня выходной"
                   когда Пятница
                      СообщениеДня = "Сегодня предвыходной день"
                   иначе
                      СообщениеДня = "Сегодня будний день"
                   ;
                   возврат СообщениеДня
                ;
Не задавайте типы параметров лямбда-выражения, если они могут быть выведены компилятором из контекста
Из типа параметров системных методов

Правильно:

МассивСтудентов.СортироватьПо(ПарСтудент -> ПарСтудент.Оценка)

Неправильно (тип параметра ПарСтудент известен из описания системного метода):

МассивСтудентов.СортироватьПо((ПарСтудент: Студент) -> ПарСтудент.Оценка)
Из типа параметров собственных методов

Правильно:

пер Результат = СравнитьСтроки(
                   ПерваяСтрока, 
                   ВтораяСтрока, 
                   (Строка1, Строка2) -> Строка1.Длина() < Строка2.Длина()
                )

метод СравнитьСтроки(
   Первая: Строка, 
   Вторая: Строка, 
   Сравнить: (Строка, Строка)->Булево
): Булево

   возврат Сравнить(Первая, Вторая)
;

Неправильно (типы параметров Строка1 и Строка2 известны из объявления метода СравнитьСтроки()):

пер Результат = СравнитьСтроки(
                   ПерваяСтрока, 
                   ВтораяСтрока, 
                   (Строка1: Строка, Строка2: Строка) -> Строка1.Длина() < Строка2.Длина()
                )

метод СравнитьСтроки(
   Первая: Строка, 
   Вторая: Строка, 
   Сравнить: (Строка, Строка)->Булево
): Булево

   возврат Сравнить(Первая, Вторая)
;
Из типа переменной

Правильно:

пер МетодДлина: ((Строка)->Число)?
   ...
МетодДлина = СтрокаТекста -> СтрокаТекста.Длина()

Неправильно (тип параметра СтрокаТекста известен из типа переменной МетодДлина):

пер МетодДлина: ((Строка)->Число)?
   ...
МетодДлина = (СтрокаТекста: Строка) -> СтрокаТекста.Длина()
В имени функционального типа
  • Не обрамляйте пробелами лямбда-операцию ->:
    (Число)->Число   — Правильно
    (Число) -> Число — Неправильно
  • Ставьте пробелы после запятых в списке типов параметров:
    (Число, Число)->Число — Правильно
    (Число,Число)->Число  — Неправильно
В лямбда-выражении обрамляйте пробелами лямбда-операцию ->
x -> x + 1 — Правильно
x->x + 1   — Неправильно
Если метод не возвращает значение, то нужно писать ничто в качестве возвращаемого значения. Это позволяет передавать ссылки на методы несмотря на тип возврата