Каталог решений - ООП. Инкапсуляция, часть 3.

ООП. Инкапсуляция, часть 3.

ООП. Инкапсуляция, часть 3.

В наличии

Заключительная серия размышлений об инкапсуляции в 1С.

Категория:

Описание

Более сложный пример инкапсуляции.

В каталоге плохих запахов кода Мартина Фаулера есть такой запах, который называется
«Связанные данные» (Data clumps).

Начинающие рефактореры редко обращают на него внимание, и очень зря. Ибо для того,
чтобы научиться писать хороший обектно-ориентированный код нужно выработать
особенно тонкое чутье к этому запаху. Ибо он устраняется с помощью рефакторинга
«Выделение класса» (Extract class).

Что это такой за запах?

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

Нужно ИНКАПСУЛИРОВАТЬ эти данные в класс.

А методы, в которые эти данные передавались как параметры — станут первыми кандидатами
на то, чтобы стать методами данного класса.

Ведь что такое класс в самом общем смысле этого слова? Это некоторые данные, и методы
работы с ними. Данные первичны.

Пример.

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

Соответственно, у нас есть плотная связка данных: Менеджер + Месяц. И пара методов для
работы с ними: КВПП_Общий() и КВПП_Бренда(Бренд). Обратите внимание, мне нет надобности
передавать в свои методы менеджера и месяц в качестве параметров. Эти данные уже там
есть. Они инкапсулированы в классе.

Даже создание таких маленьких классов (два параметра и два метода) позволяет довольно
сильно разгрузить код от подробностей. А говорят, что иногда такие наборы данных
могут довольно сильно разрастись, и что в таком случае подобная инкапсуляция — это
верное средство от расстройства рассудка. Охотно верю.

has been added to your cart:
Оформление заказа