Перейти к основному содержимому

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

Общие рекомендации

  • Используйте краткую форму записи лямбда-выражения, если его тело однострочное.

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

    знч День = &ОписаниеДня

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

    • из типа параметров системных методов;

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

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

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

      возврат Сравнить(Первая, Вторая)
      ;
      пер Рез = СравнитьСтроки(
      ПерваяСтрока,
      ВтораяСтрока,
      // Типы параметров известны
      // из объявления метода СравнитьСтроки()
      (Строка1: Строка, Строка2: Строка) ->
      Строка1.Длина() < Строка2.Длина()
      )

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

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

      пер МетодДлина: ((Строка)->Число)?
      // ...
      МетодДлина = (Текст) -> Текст.Длина()
      пер МетодДлина: ((Строка)->Число)?
      // ...
      // Тип параметра известен из типа переменной МетодДлина
      МетодДлина = (Текст: Строка) -> Текст.Длина()
  • В имени функционального типа:

    • не обрамляйте пробелами лямбда-операцию ->;

      (Число)->Число
      (Число) -> Число
    • ставьте пробелы после запятых в списке типов параметров.

      (Число, Число)->Число
      (Число,Число)->Число
  • В лямбда-выражении обрамляйте пробелами лямбда-операцию ->.

    x -> x + 1
    x->x + 1

Примеры

См. также