Слишком много методов - Признак плохого кода #4


2 0

Классы должны решать одну простую задачу. Если класс решает больше одной задач, то класс необходимо разбить на два или даже более. Это правило можно встретить в книгах и статьях по паттернам или книгах о хорошем тоне в программировании. 

Но не смотря на это я иногда встречаю классы, в которых десятки методов, которые делают совершенно разные вещи. 

Если говорить о контроллерах в Web программировании, то тут вполне очевидно, что на один класс контроллера может быть много методов, которые будут реагировать на запросы клиентов. 

Но если класс направлен на реализацию какой-то логики, то тут просто необходимо выполнять только одну задачу и не может быть десятков методов. Если у вас в классе даже 10 методов, это уже серьезный вопрос - а не выполняет ли класс больше одной задачи? А действительно эти все методы должны принадлежать одному классу, или перед нами два разных класса? 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Владимир_

04 Aпреля 2018

Хороший пример, стандартная  библиотека .Net, где, такое чувство, что все классы содержат более 10 методов:). А если учитывать методы расширений, то кол-во методов может зашкаливать:).


Михаил Фленов

04 Aпреля 2018

Это признак, а не правило. Если это класс File, который работает с файловой системой, то я могу себе представить 20 и даже больше методов. Но когда методов много, стоит задуматься, а все ли они реально принадлежат этому классу или что-то должно жить отдельно?


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне