Использовать подклассы только для полумантических целей? - PullRequest
0 голосов
/ 23 февраля 2020

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

Например:

С семантическими подклассами

Список классов:

- abstract class V3 (это вектор с атрибутами x, y и z и некоторые методы манипуляции)

- class Lengths extends V3 (он просто расширяет V3 и не добавляет новые методы или атрибуты)

- class Point extends V3 (просто расширяет V3)

Таким образом, некоторые методы, такие как void setCuboidLengths(Lenghts l), будут принимать только классы Lengths в качестве аргумента, а другие, например, Point getCuboidCenter(), будут возвращать объект Point.

Без семантических подпунктов.

Только один класс:

- class V3

Вместо использования более специфических c классов мы используем обобщенные c V3: void setCuboidLenghts(V3 v), V3 getCuboidCenter().

1 Ответ

0 голосов
/ 23 февраля 2020
Классы

Семанти c усложняют неправильное понимание интерфейса функции и, соответственно, усложняют ошибки. Как сказал Энди Тернер, я бы сделал V3 членом классов Point и Lenght, а не наследовал его, если только у вас нет причин этого не делать. Недостатком ширины семанти c классов является количество классов, и явных преобразований, которые вам нужно сделать, может быть много, но несколько хорошо сделанных семанти c классов могут сэкономить часы головной боли.

Редактировать: В сообщении Jörg W Mittag есть несколько хороших документов для прочтения этого паттерна. Пожалуйста, проверьте их.

...