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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Неправильно
    x->x + 1
    Правильно
    x -> x + 1
  • Если метод не возвращает значение, то нужно писать ничто в качестве возвращаемого значения.

    Это позволяет передавать ссылки на методы несмотря на тип возврата.

Примеры

См. также