我需要在代码中使用Fund
模型。它将包含基金名称和基金代码。为了重用,我在包含所使用的其他模型的包中找到了一个现有的Fund
模型。然而,这里的问题是,除了基金名称和代码,它还包含一个金额。金额与我的背景并无直接关系。那么,我:
1)按原样使用现有的Fund
模型,忽略基金金额的设定者/获取者。
2)将FundDescription
接口放在现有的Fund
模型上,以便仅访问我感兴趣的信息。
3)创建一个FundDescription
基类,现有的Fund
模型现在可以从中扩展
4)创建一个全新的单独模型,因为这两个模型略有上下文
答案 0 :(得分:2)
选项1 可能会使读取代码的人感到困惑,并且可能会诱使某些不完全理解您的代码的人使用这些设置者/获取者,因为存在一些误解。其他选项迫使他更好地理解你的代码。
选项2 排序第二的解决方案,但对我而言,逻辑上并不完美。
选项3 这是解决所列问题的最简洁,最合乎逻辑的方法,我认为在这种情况下接近最佳做法是合格的。
选项4 这听起来没必要! : - )
选项5 (新!我要去的那个:-)在FundDescriptor
模型中有一个Fund
类型的成员变量。
每当面对这种设计决策时,我通常会尽量避免考虑“什么是最有效的解决方案”或“什么是需要最少代码的解决方案”,而是考虑什么看起来最合乎逻辑对于第一次阅读代码的人。
将“extends”结构视为“is-a”关系,然后大声朗读。如果它有意义且合乎逻辑,那就去吧。怎么样,“Fund
对你来说是 FundDescriptor
”的声音?如果它听起来像“嗯......没有意义”,那么我会选择5,否则我会选择3。
查看
上接受的答案