我们有两种域类型:用户和位置。

我们在LocationRepository上有一个方法:GetUserLocations()。

现有的实现:

var user = UserRepository.GetUser(userId);
var locations = LocationRepository.GetUserLocations(userId);

对我来说,从用户类型中检索与用户关联的位置更有意义,即:
var user = UserRepository.GetUser(userId);
var locations = user.GetLocations();

我认为后一种实现阅读起来更干净,作为API客户端,我必须处理更少的类型(即不需要LocationRepository)。另一方面,将有更多代码需要维护,因为我必须将“facade”写入LocationRepository。

我应该本能地采取行动,在LocationRepository的User类型上创建外观,还是应该对现状感到满意,并使用对我来说“感觉”错误的序列图(即,检索位置信息感觉像这样)是从错误的“观点”中检索到的)?

最佳答案

我将从可维护性的角度来解决这个问题。我同意使用LocationRepository上的外观进行操作会“感觉正确”,并且可能会使代码更具可读性。

正如您所说,要进行权衡,需要维护更多代码。但是我们在谈论多少代码?数量很多,您是否需要经常更新?还是您可以编写一次而忘记它,并使其易于进行单元测试?如果是前者,则只需将其吞下,并使用当前的实现,并提醒自己它并不会真正影响功能。如果是后者,则可能值得在其他地方获得良好的感觉和可读性更高的代码。

09-04 08:56