В прошлой статье мы начали рассматривать правила, которые помогут разработчикам поменьше спорить на код-ревью и писать код более грамотно. Продолжаем:
4. Используем явное определение возвращаемых типов.
Потому что код
fun execute(
user: CurrentUser
) : FiltersResponse {...}
выглядит понятнее, чем код
fun execute(
user: CurrentUser
) {...}
5. Вместо return в функциях стараемся писать '=' там, где это возможно без необоснованного усложнения кода.
Потому что:
- это приятная особенность Котлина
- return-ов в одной функции можно поставить много (что не очень хорошо), а '=' только один раз. Хочется верить, что проникшись красотой этого правила, разработчик невольно начнёт думать о том, как все return-ы в функции заменить одним '=', как большую сложную функцию разбить на неколько поменьше и т.д. Т.е. начнёт думать, что очень хорошо )
6. Отказываемся от знака 'утверждение' ('!!') там, где это возможно без необоснованного усложнения кода.
На моей памяти, не было ни одного случая, когда использование утверждения без проверки в предыдущей строке, что переменная не равна null, не привело бы к NPE в ходе работы приложения.
7. В определении функции пишем каждый параметр на новой строке.
Причина здесь та же, что и в запятой после последнего параметра - чище история коммитов.
Некрасиво:
fun execute( user: CurrentUser, request: Request ) : FiltersResponse {...}
Красиво:
fun execute(
user: CurrentUser ,
request: Request,
) : FiltersResponse {...}
8. Большие массивы преобразуем в sequence или flow.
Причина - производительность. Каждая операция преобразования списка, массива или множества ведёт к созданию новой коллекции. С sequence или flow такого не будет (за исключением случая, когда мы захотим отсортировать последовательность).
9. Для блокирующих задач (работа с базами данных, файлами, сетью) используем корутины с диспетчером потоков Dispatchers.IO, вместо дефолтного.
Это правило применяется, в основном, при разработке на Котлине без фреймворка, выделяющего отдельный поток (или корутину) на каждый пользовательский запрос.
На сегодня всё. Продолжение следует...