我正在用 PHP 创建一个新类。我预计这门课不会被延长。我是否应该费心将班级成员设为私有并实现 getter 和 setter 函数?
我的一部分认为这只是浪费时间,只会增加我的代码。
这门课是为了简历。我正在用代码编写它以展示我的编码风格。问题是雇主会希望看到 getter 和 setter,还是只会把事情弄得一团糟?
我正在用 PHP 创建一个新类。我预计这门课不会被延长。我是否应该费心将班级成员设为私有并实现 getter 和 setter 函数?
我的一部分认为这只是浪费时间,只会增加我的代码。
这门课是为了简历。我正在用代码编写它以展示我的编码风格。问题是雇主会希望看到 getter 和 setter,还是只会把事情弄得一团糟?
我不想再次重复这样的论点,即使您现在不期望继承,将来可能仍然需要它,但它们仍然是使用 getter 和 setter 的更多理由:
看看 __get 和 __set 魔法方法,它会让你的代码保持干净,而且你不必因为不设置变量作用域而感到懒惰。
public function __get($name)
{
return $this->$name;
}
public function __set($name, $value)
{
$this->$name = $value;
}
显然你会有更多的细节,但这将处理你的访问者。
您可能永远不会知道将来不需要扩展该类。班级会做什么?它有多复杂?
封装是良好 OO 设计的一部分。但是好的 OO 设计并不是编程的目标。目标是让事情正常工作并能够在需要时轻松修改它们。
如果我是你,我不会打扰。你是对的,那种装饰只会把你的班级弄得一团糟。
据我了解,您可以覆盖 __get 和 __set 。 http://php.net/manual/en/language.oop5.overloading.php
我喜欢将我的类中的属性设置为受保护或私有,然后使用 getter 和 setter。然后我在设置器中使用代码来确保属性值在可接受的范围内。我喜欢这种方法,因为我发现它使调试更容易,因为我始终可以确定正在设置一个可接受的值,或者正在引发异常。这也让我更有信心,当我围绕属性中保存的值传递对象时,不会导致其他任何事情发生爆炸。
如果是为了简历,他们很可能会像关心 getter/setter 这样的小细节一样(或更多)关心你的逻辑。
如果是我,我会在没有 getter/setter 的情况下将它们公开,但在它们上方添加一条评论,类似于“考虑将这些设为私有并使用 getter/setter,具体取决于应用程序的范围和首选代码样式团队中的“
那样:
您的简历代码没有杂乱无章
他们明白你不仅懒惰而且无缘无故地公开一切
你想在片场做一些特别的事情还是得到(或者只是其中一个私人)?
如果没有,那么不要在这些上浪费你的时间。
如果您不以“特殊方式”使用它们,您将不会获得任何收益,甚至可能会减慢一切
如果您在设置或访问这些属性时不打算有特定的行为,那么它并不重要。
如果您在以后访问或修改这些属性时需要具有特定行为,您始终可以重载 __set 和 __get 方法。
请参阅: http: //php.net/manual/en/language.oop5.overloading.php