【问题标题】:object oriented design: using method parameters vs properties面向对象设计:使用方法参数与属性
【发布时间】:2013-02-03 13:07:21
【问题描述】:

在面向对象设计中,以下哪个更好?

用类似的方法发送参数:

obj.InsertRecord("raed","1987")

或使用类似的属性:

obj.name= "raed"
obj.year= "1987"
obj.InsertRecord() 

【问题讨论】:

  • 问题是在这种情况下哪个更合适。前者,因为后者在仅设置一个属性但两者都是非空字段时可能会失败。
  • 如果这些是属性,它们应该遵循C# Naming Conventions

标签: c# object-oriented-analysis


【解决方案1】:

如果您发送参数,则必须在每次 obj 的类签名更改时更改 InsertRecord() 签名(例如,如果您添加 description 属性),因为您需要保存这些新属性。

此外,对象本身不应该为保存自己而烦恼。那不是对象的责任。所以,像这样的东西是最有前途的:

ObjectStorage.InsertRecord(obj);

【讨论】:

    【解决方案2】:

    面向对象编程,这是首选:obj.InsertRecord("raed", "1987");

    面向组件编程,首选后者: 像这样:

    obj.name = "raed";
    obj.year = "1987";
    obj.InsertRecord();
    

    顺便说一句,这属于programmers.stackexchange

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 2011-04-29
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      相关资源
      最近更新 更多