在课堂上拥有相当数量的公共财产是否合理?

med*_*iev 12 php refactoring class-design class

或者更具体地说,不依赖于制定者和吸气者是否"好"?

我正在处理一个检查房间可用性的课程,并设置有十几个公共房产.事情如:

  • unitNumber
  • roomTypes(数组)
  • codeCorporate
  • 代码组
  • numberKids
  • numberAdults
  • numberRooms
  • 货币
  • minRate
  • MAXRATE
  • SoapServer的
  • 单位(数组)
  • hotelId

在实例化对象之后,$this->在各种方法中设置这些属性.但是,处理对象的代码通常直接设置公共属性,而不是使用getter/setter方法:

$object->something = 3;

foreach ($object->things as $thing ) { }
Run Code Online (Sandbox Code Playgroud)

如果我有时间重构这个课程..

  • 我应该将所有这些属性都放在一个私有属性的数据数组中,以及定义__set__get方法吗?
  • 我应该为每个属性制作一个getter方法吗?

小智 4

在我看来,拥有任何公共成员并不是一个好主意。它增加了类之间的耦合,并使重构变得非常复杂(如果您需要的话)。

Setters/Getters 是正确的选择,你为此付出的非常小的性能损失通常要么被优化掉,要么被优雅所压倒。

要回答关于数组与每个变量一个 getter 的问题,这是一个品味问题。我倾向于只将类似类型的变量保留在数组中,并将其余变量分开。