Наследовать? Или юзать как есть?
Наследовать? Или юзать как есть?
Есть самописный, т.е. исходники доступны, класс, инстансы которого будут использоваться в 4-5-(может и больше) различных либах.
Класс лежит в либе которая шарится между другими либами и проектами.
Есть не нулевая вероятность, что в разных местах будут требоваться доработки по функциональности.
Про то что все можно дописать в этот класс - вопроса нет - можно, будет работать.
Могу написать свой код в двух вариантах:
- по первому - использую инстансы как есть и добавляю функции по мере необходимости
- по второму - делаю пустого наследника в каждой из либ, пишу специфический код по месту, спускаю общий код в базовый класс.
Исходя из того, что полный объем задачи мне не известен - какой вариант предпочтительнее?
Текущий объем соурсоv класса - 40 Кб.
Это если чисто по теории "open/close принцип" SOLID
------
Для того, чтобы это О использовать надо знать какая функциональность будет иметь место.
У меня же нет информации об этом. Завтра буду курочить еще какую-то часть - выплывет что-то другое, не обязательно совместимое с имеющимся...
Просто недостаточно информации...
Нут так в этом случает "общее" в базовом классе будет еще хуже
-----
Собирать потом по кусочкам - тоже не самое приятное.
Решил делать весьма компромиссный вариант:
- базовый класс и максимум возможного в нем.
- наследоваться в пустые классы-имплементаторы для каждого случая и что-то быстрое делать там.
- добавить класс-ключ с перечнем ключей возможных наследников и элементарно свитчится при различиях (ну или как по-другому когда станет понятно что куда).
а вы используете какие-нибудь "чужие" класс? например, System.Math. вам отдуда в одном месте понадобилось только sqrt(), в другом - только atan(), ... . вас не раздражает, что в классе есть еще пару дюжин методов, о которых вы ничего не знаете (и зачем оно вас сейчас?). а если класс - ваш собственный, то нужно обязательно поделать что-нибудь через ж*опу, вместо того, чтобы расширять его по мере надобности. если сами там колдуете - фер с ним (с вам), а представьте себе, кто-то вынужден туда, и имеем два варианта:
- все в одном классе, в одной библиотеке. нет вопросов
- ваша суперконструкция с пустышками, наследованиями, вариантами.... мысли возникают сразу "кто этот ..., который такое наваял? главное - ЗАЧЕМ!?"
самая большая ваша задача - имена методам придумать правильные, чтобы понятно было, что там происходит, без комментариев. а будут появляться проблемы - будете их по мере поступления решать. возможно, даже так, как вы описали (хотя опять спрошу - ЗАЧЕМ?). а пока, как вы указали, "полный объем задачи мне не известен", зачем усложнять то, что в этом не нуждается? перечитайте ваш первый пост еще раз. там есть одна здравая мысль:
Про то что все можно дописать в этот класс - вопроса нет - можно, будет работать.
, но нет, это вас не устраивает, хотите найти, как бы через ж*опу. ну, делайте через нее, раз так хочется. будет больше поводов для открытия новых тем.