Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 接近重用模型组件的最佳实践?_Language Agnostic_Oop - Fatal编程技术网

Language agnostic 接近重用模型组件的最佳实践?

Language agnostic 接近重用模型组件的最佳实践?,language-agnostic,oop,Language Agnostic,Oop,我需要在代码中使用基金模型。它将包含基金名称和基金代码。为了便于重用,我在包含其他使用的模型的包中搜索了一下,发现了一个现有的基金模型。然而,这里的问题是,除了基金名称和代码之外,它还包含一个金额。金额与我的情况没有直接关系。那么,我是否: 1) 按原样使用现有的基金模型,忽略基金金额的setter/getter 2) 将FundDescription界面放到现有的Fund模型上,以便仅访问我感兴趣的信息 3) 创建一个FundDescription基类,现有的Fund模型现在可以从中扩展 4)

我需要在代码中使用
基金
模型。它将包含基金名称和基金代码。为了便于重用,我在包含其他使用的模型的包中搜索了一下,发现了一个现有的
基金
模型。然而,这里的问题是,除了基金名称和代码之外,它还包含一个金额。金额与我的情况没有直接关系。那么,我是否:

1) 按原样使用现有的
基金
模型,忽略基金金额的setter/getter

2) 将
FundDescription
界面放到现有的
Fund
模型上,以便仅访问我感兴趣的信息

3) 创建一个
FundDescription
基类,现有的
Fund
模型现在可以从中扩展


4) 创建一个全新的独立模型,因为这两个模型在上下文上略有不同。选项1可能会使阅读代码的人感到困惑,并且可能会诱使不完全理解您的代码的人由于一些误解而使用这些setter/getter。其他选项迫使他更好地理解您的代码

选项2算是第二位的解决方案,但对我来说,从逻辑上讲,它没有完美的意义

选项3这是解决所列问题的最干净、最合乎逻辑的方法,我想说的是,在这种情况下,这与最佳实践非常接近

选项4这听起来没必要!:-)

选项5(新增!我想要的是:-)在
Fund
模型中有一个
FundDescriptor
类型的成员变量

每当面临此类设计决策时,我通常会尽量避免思考“什么是最有效的解决方案”或“什么是需要最少代码的解决方案”,而是思考对于第一次阅读代码的人来说,什么看起来最符合逻辑

将“extends”构造视为一个“is-a”关系,并大声读出它。如果它是有意义的和合乎逻辑的,就去做吧。“a
Fund
是一个
FundDescriptor
”对你来说听起来怎么样?如果它听起来像“嗯……那没有意义”,那么我会选择选项5,否则我会选择选项3

请看下面的公认答案


回答得好。谢谢我喜欢你的选择5。