【发布时间】:2014-12-14 22:24:48
【问题描述】:
我目前正在设计一个使用 C#/WPF 和 MVVM 模式跟踪和管理个人财务的软件。这是我自己做的一个个人项目,我开始有兴趣获得更多关于这些技术的知识并将其放入我的投资组合中,因此没有时间/金钱/等限制,我正在努力做到最好设计明智的决策。
在我的软件的模型部分,我目前有像Expense 和Income 这样的类,它们继承了一个公共接口ITransaction。我还有像BankAccount、CreditCard 和Loan 这样的类,它们继承了一个公共接口IAccount。费用和收入之间没有任何区别,它们具有相同的属性,例如Name、Description 等。BankAccount、CreditCard 和Loan 也是如此:它们都具有相同的属性。由于这些在 MVVM 的模型部分,据我所知,它们不应该有方法,因为它们不应该直接在其中实现任何逻辑(除了可以在属性本身中完成的属性验证)。
我早期遇到的一个问题(实际上我刚刚开始这个项目),是我是否应该改变那个设计,因为虽然它们模拟了现实生活中的一些具体的东西,但它们之间根本没有区别(@987654333 @ 只是 Income 等的复制粘贴)。我是否应该将我的设计更改为在 Transaction 类中具有 TransactionType 属性,以便区分收入和支出,而不是让类类型来实现这一区别?
从长远来看,每种方法的优缺点是什么?
【问题讨论】:
-
是的,我同意@GrantWinney,保持代码干净,如果以后需要更改,只需复制粘贴即可。
-
@GrantWinney 假设我保持原样,费用和收入类别永远不会改变(所以它们基本上保持彼此的复制粘贴,但我对它们的处理方式不同在视图模型中)。这在项目后期不会被认为是糟糕的设计吗?
-
@Choub890 我能不能给个建议:为你现在需要的东西开发,以一种你以后需要的时候可以扩展它的方式去做,你应该没问题
-
我也同意@GrantWinney。我认为无论哪种方式你都不会走得太远,但是使用单独的类更安全,给你更大的灵活性。
标签: c# wpf mvvm architecture