2 класса с одинаковыми именами, предназначенные для разных целей - PullRequest
0 голосов
/ 11 сентября 2018

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

Проекту: A -> Имя класса: Call (Этот класс будет представлять вызов отот одного телефона к другому) Другие классы могут / не могут наследовать этот конкретный класс, и в этом случае имя этих подклассов, вероятно, будет как-то связано с родительским классом (CallState, CallEndPoint, CallSomething).Этот класс не будет знать о существовании базы данных, можно сказать, что этот класс будет частью общего драйвера телефонии.

Проект: B -> Имя класса: Call?(Это будет представлять фактическую таблицу в базе данных. Таблица будет иметь некоторую информацию о вызове, такую ​​как идентификатор вызова, время, когда она поступила в систему и т. Д., А также другую информацию, которая может / не может относиться к вызову).Этот класс будет по сути служить RowMapper.

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

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Теперь эти 2 проекта, скорее всего, будут объединены, и Если я назову классы одинаковыми, я получу 2 одинаковых имени занятия в одном проекте, служащие двум различным целям.

Если внутри одного и того же приложения два класса с разными обязанностями / данными должны иметь одно и то же простое имя (то есть без пакета), вам действительно следует подумать об этом, как о чем-то подумать и, скорее всего, исправить.
Конечно, вы можете определить эти классы в разных пакетах, но действительно ли это решает вашу проблему? Я не думаю Это сделает вещи менее понятными, так как клиентский код может использовать плохой код, и каждый раз, когда разработчики манипулируют / читают Call в коде, который им приходится задаваться вопросом, «с каким Call» они в настоящее время справляются.
Сегодня у вас есть два различных Call. С такими разрешающими соглашениями о присвоении имен, почему бы не принять новое в будущем?
На самом деле, не очень хорошая идея.

Источником проблемы является способ разработки вашего приложения.
Вы разделяете модель на две части: постоянную часть с независимостью в классе и постоянную часть данных в другом классе. Это выбор (которого я лично избегаю), но если вы сделаете этот выбор, вам придется идти до конца: четко отличать каждый класс под другим именем. Этот выбор должен быть видимым, а не скрытым только в имени пакета.
Например : Call (domain) and CallEntity (persistence) или наоборот CallDTO(domain) and Call(persistence)

0 голосов
/ 11 сентября 2018

Я не совсем уверен, что вопрос здесь.Вы хотите знать, возможно ли присвоить 2 классам одно и то же имя, или это просто плохая идея?

Соглашение, которое часто используется для классов, предназначенных для моделирования объектов базы данных, заключается в постфиксацииимя класса с сущностью.Таким образом, вы можете назвать первый класс Call и второй CallEntity.Это устраняет некоторую двусмысленность относительно целей классов.Большинство профессиональных разработчиков также сразу сделают предположение, что класс Entity должен представлять что-то, что сохраняется.

Однако, если вы действительно настаиваете на том, чтобы оба класса давали одно и то же имя.Это вполне возможно, если вы поместите их в отдельные пакеты.Пакет, в который вы их помещаете, также может дать больше ясности в отношении целей класса.Первым может быть domain.model.Call, в то время как вторым может быть domain.entity.Call

Надеюсь, это несколько полезно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...