Продолжаем наш разговор о том, как писать простой и понятный код, который будет легко и приятно поддерживать как тебе самому, так и другим разработчикам. В первой статье мы рассмотрели вопрос именования, можешь почитать, если пропустил. Сегодня же мы поговорим о том, почему методы и граммы необходимо стремиться делать краткими.
Что значит держать свои классы и методы короткими? Очевидно, что конкретное количество строк варьируется в зависимости от используемого тобой языка программирования.
Что касается длины класса, я бы хотел последовать совету Роберта С. Мартина о том, что класс должен делать только одно. Если следовать этому правилу можно рассчитывать, что большинство твоих классов будут укладываться в 200 строк. Хорошим показателем для слишком большого класса является то, что тебе приходится писать модульные тесты, которые напрямую взывают приватные методы класса. Это означает, что внутри класса скрыт еще один класс, который хочет выйти и стать самостоятельным.
Для длины методов желательно ограничиваться 20 строками. Это может показаться нелепо коротким, но важно понимать, что методы полезны не только для повторного использования кода, но и для улучшения читабельности. В длинном методе обычно есть несколько блогов связанного кода. Например, ты можешь прочитать некоторые данные из баз данных, затем сделаешь некоторые вычисления и наконец отформатируешь их в подходящий формат для отображения в пользовательском интерфейсе. Каждый из этих блоков кода должен выть в отдельном приватном методе. Итак, в конечном итоге ты получишь три метода GetDataFromDatabase, Calculate и GetUIData. Изначально большой метод будет содержать только вызовы этих приватных методов и немного вспомогательного кода. Это значительно улучшает читабельность, поскольку позволяет понять структуру и назначение метода на более высоком уровне абстракции. Тебе не приходится разбираться, что же именно делает код внутри метода, ты можешь сразу же это понять, просто прочитав либо его название, либо имена тех методов, что он использует.
Таким образом если мы будем стремиться к тому, чтобы разделять сложные задачи на более мелкие на выходе у нас будут оставаться достаточно компактные методы и классы, которые будет очень просто покрывать тестами, а код будет похож на определенные рассказ, в котором будет просто описан процесс действий необходимых для получения конкретного результата. Читать и при необходимости модифицировать такой код будет значительно проще. Поэтому не стесняйся выделять отдельные методы, даже если они будут достаточно маленькими. Главное не переусердствуй. Метод должен решать какую-либо задача, а не быть созданным просто для количества.
Большое спасибо за прочтение! Пожалуйста, поставь лайк и подпишись на канал, чтобы не пропустить свежие статьи. Этим ты очень поможешь развитию блога!
Также рекомендую прочитать статью Что такое функциональное программирование