我认为提出这个问题最简单的方法就是我所面对的实际情况。
在我们的系统中,我们有一个Site模型(这里是经典的MVC框架),它代表我们 site 表中的一行。存储在站点模型中的站点表的一个字段是站点的时区。我们使用它来调整从数据库到显示的站点时区的UTC日期时间。有一些帮助方法有助于此:utcDatetimeToSiteTimestamp(),utcTimeStampToSiteDatetime()等。
由于这些辅助方法使用站点模型中保存的站点的时区,是否可以在模型中包含这些方法?或者它们应该放在一个单独的帮助类中还是什么?
我知道模型应该做的不仅仅是从数据库中保存一行数据,但是作用于此数据的辅助方法与使用此数据作用于外部输入的辅助方法之间的界限在哪里?
感谢您的任何见解!
答案 0 :(得分:6)
这是一个判断的问题。如果辅助方法是通用的并且可能在其他类中有用,那么创建一个辅助类,因为这使得代码可以重用。如果帮助方法非常具体,那么请将它们留在那里。
答案 1 :(得分:3)
答案在责任范围内。模型类负责知道如何向其中添加内容,修改其中的内容,从中删除内容以及何时添加内容。如何改变它的内部状态 没有关于那里的转换。转换器属于外部类。格式化对象或任何负责模型如何表示给客户端的内容也是如此。
答案 2 :(得分:1)
我会创建一个辅助类,因为这些方法并不真正属于一个模型。它们是静态方法,在我看来,它是一个独立帮助类的专业人士。
答案 3 :(得分:1)
我同意Vincent Ramdhanie的观点,这是一个判断问题。就个人而言,我不喜欢在我的模型类中定义辅助函数 - 我认为它太乱了,而且它们根本就不属于那里(而且我经常发现几乎没有任何辅助函数只被使用过一次)。但是,这并不是说我不会在我的模型中使用辅助函数。例如,如果我有一个BlogPost模型类,我的getOneCompiled()方法将在返回表示表行的数组之前使用辅助函数来组合一些链接。
查看选项非常重要,看看哪些代码能够轻松读取代码并进行维护。在其自己的文件中编写辅助函数可能需要更多的前期工作,但如果它使代码更容易管理,那肯定是值得的。