我正在php上新课。我预计这堂课曾经扩展。我是否应该为将班级成员私有和实施Getter和Setter功能做出困扰吗?

我的一部分认为这只是浪费时间,只能大大增加我的代码。

课程是简历。我正在用代码编写它来演示我的编码样式。问题是,雇主会想看到Getters和Setter,还是只是混乱的事情?

有帮助吗?

解决方案

如果我是你,我不会打扰。您是对的,这种装饰只会使您的班级混乱。

其他提示

我不希望再次重复以下论点:即使您现在不期望继承,您仍然可能需要它,但是它们仍然是使用Getters和Setters的更多理由:

  • Getters和Setters将使您轻松实施对属性的验证
  • 您的代码将遵循良好的编码准则,因此,其他人更容易阅读。如果我遇到了一个不使用Getters和setter的代码文件,我将对它非常持怀疑态度,并且必须仔细阅读它。
  • 另外,这不仅是每个课程的决定,而且是整个项目的决定。您是否想为某些课程而不是其他一些课程,而不是其他一些课程?我相信一致性很重要。
  • 有一些工具可以自动化为您编写Getters和Setter的工具。请记住,您只编写一次代码,但您读了很多次,

查看__GET和__SET魔术方法,它将保持您的代码清洁,并且您不必为不设置可变scopel而感到懒惰。

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.obloading.php

我喜欢在班级或私人的班级中制作属性,然后使用getters和setter。然后,我在设定器中使用代码来确保属性值在接受的范围内。我喜欢这种方法,因为我发现它使调试变得更加容易,因为我始终确定正在设置公认的值,或者正在抛出异常。这也使我更有信心,当我通过围绕属性中的值时,不会导致其他任何东西炸毁。

如果是简历,那么他们可能会像诸如Getters/Setters这样的小细节一样关心您的逻辑(或更多)。

如果是我,我会把他们公开而没有getters/setter,但在他们上方包含评论,按照“考虑私有并使用getters/setter的方式说出一些措施,具体取决于应用程序的范围和首选代码样式团队”

那样:

  1. 您的简历代码没有混乱

  2. 他们知道,您不仅懒惰,无缘无故地公开一切

  3. 它表明,您不是盲目遵循特定的样式,而是考虑做出决定的特定应用程序。

您想在设置时做一些特别的事情(还是其中之一)?

如果没有,那就不要浪费时间。

如果您不以“特殊方式”使用它们,那么您将不会有任何事情

如果您不打算在设置或访问这些属性时具有特定的行为,则不会太多。

如果以后访问或修改这些属性时需要特定行为,则始终可以超载__Set和__get方法。

看 : http://php.net/manual/en/language.oop5.obloading.php

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top