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