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