В настоящее время я разрабатываю программное обеспечение для отслеживания и управления финансами отдельных лиц с использованием C#/WPF и шаблона MVVM. Это личный проект, который я делаю сам по себе, что я начал интересоваться приобретением большего количества знаний с этими технологиями и поставить в мое портфолио, поэтому без ограничений времени и денег/etc я стараюсь взять лучшее решения конструктивно.Должен ли я создать класс или добавить свойство
В модельной части моего программного обеспечения в настоящее время у меня есть классы, такие как Expense
и Income
, которые наследуют открытый интерфейс ITransaction
. У меня также есть классы, такие как BankAccount
, CreditCard
и Loan
, которые наследуют открытый интерфейс IAccount
. Расходы и доходы не имеют никакой разницы между ними, они имеют те же свойства, что и Name
, Description
и т. Д. То же самое касается BankAccount
, CreditCard
и Loan
: все они имеют одинаковые свойства. Насколько мне известно, они не должны иметь методов, поскольку они не должны иметь никакой логики, реализованной непосредственно в них (кроме проверки свойств, которая может быть выполнена в самих свойствах).
Вопрос, который у меня есть на раннем этапе (я на самом деле только начинаю этот проект), должен ли я изменить этот дизайн, поскольку, пока они моделируют что-то конкретное из реальной жизни, у них нет никакой разницы между ними (Expense
это всего лишь копия пасты Income
и т. д.). Должен ли я менять свой дизайн, чтобы иметь, например, свойство TransactionType
в классе Transaction
, чтобы отличать доход от расхода, вместо того, чтобы тип класса имел это различие?
Каковы преимущества и недостатки каждого метода в долгосрочной перспективе?
Оба способа работы (отдельные классы, реализующие интерфейс, против одного класса со свойством типа транзакции). Это не то, и другое; это зависит от вашей ситуации.И поскольку вы только начинаете, вам, вероятно, следует выбрать один и запустить с ним немного. Лично, если есть вообще вероятность того, что Расход и Доход могут расходиться (хотя они теперь идентичны), я мог бы оставить их отдельно от начала и сэкономить позже. –
Да, я согласен с @GrantWinney, сохраняю ваш код чистым, поэтому, если вам нужно будет его изменить, вы просто скопируете его, и все готово. – alexo
@GrantWinney Предположим, что я сохраняю вещи так, как они есть, и класс расходов и доходов никогда не изменяется (поэтому они в основном остаются копией друг друга, но отличаются только тем, что я делаю с ними в ViewModel). Разве это не будет считаться плохим дизайном позже в проекте? – Choub890