Frage

Ich mache eine neue Klasse in PHP. Ich erwarte nicht, dass diese Klasse jemals verlängert wird. Sollte ich mich darum kümmern, Klassenmitglieder privat zu machen und Getter- und Setter -Funktionen implementieren?

Ein Teil von mir glaubt, dass dies nur eine große Zeitverschwendung ist und nur dazu dient, meinen Code zu verdoppeln.

Die Klasse ist für einen Lebenslauf. Ich schreibe es in Code, um meinen Codierungsstil zu demonstrieren. Die Frage ist, ob ein Arbeitgeber Getter und Setter sehen möchte, oder wird das nur die Dinge überladen?

War es hilfreich?

Lösung

Ich würde mich nicht darum kümmern, wenn ich du wäre. Sie haben Recht, diese Dekoration würde Ihre Klasse nur überladen.

Andere Tipps

Ich möchte nicht wieder das Argument wiederholen, dass Sie es in Zukunft möglicherweise noch benötigen, dass Sie es möglicherweise noch nicht erwarten, aber sie sind noch mehr Gründe, Getter und Setzer zu verwenden:

  • Mit Getters und Settern können Sie die Validierung Ihrer Eigenschaften problemlos implementieren
  • Ihr Code folgt gute Codierungsrichtlinien und als solches wird es einfacher von anderen gelesen werden. Wenn ich auf eine Codedatei stoße, die Getter und Setter nicht verwendet hat, wäre ich sehr skeptisch und müsste sie viele Male sorgfältig lesen.
  • Dies ist auch nicht nur eine Entscheidung pro Klasse, sondern auch eine Entscheidung für Ihr gesamtes Projekt. Möchten Sie Getter und Setter für einige Klassen haben, die Sie sie brauchen, und nicht für einige andere? Ich glaube, dass Konsistenz wichtig ist.
  • Es gibt Tools, mit denen Sie die Getter und Setter für Sie autogenerieren können. Denken Sie daran, dass Sie den Code nur einmal schreiben, ihn aber oft lesen.

Schauen Sie sich die __Get- und __set Magic -Methoden an, es hält Ihren Code sauber und Sie müssen sich nicht faul fühlen, um keinen variablen Scopel festzulegen.

public function __get($name)
{
  return $this->$name;
}

public function __set($name, $value)
{
  $this->$name = $value;
}

Offensichtlich hätten Sie mehr Details, aber das wird Ihre Zubehör behandeln.

Sie werden vielleicht nie wissen, dass Sie die Klasse in Zukunft nicht erweitern müssen. Was wird die Klasse tun? Wie komplex ist es?

Einkapselung ist Teil des guten OO -Designs. Aber gutes OO -Design ist nicht das Ziel der Programmierung. Ziel ist es, Dinge zu haben und in der Lage zu sein, sie bei Bedarf leicht zu ändern.

Sie können einfach __get & __set so weit überschreiben.http://php.net/manual/en/language.oop5.overloading.php

Ich mag es, die Eigenschaften in meiner Klasse geschützt oder privat zu machen und dann Getter und Setter zu verwenden. Ich verwende dann Code in den Setzen, um sicherzustellen, dass die Eigenschaftswerte in akzeptierten Bereichen liegen. Ich mag diesen Ansatz, da ich finde, dass es das Debuggen erleichtert, da ich immer sicher sein kann, dass ein akzeptierter Wert festgelegt oder eine Ausnahme ausgelöst wird. Es gibt mir auch mehr Zuversicht, dass, wenn ich Objekte um die in den Eigenschaften gehaltenen Werte bestehe, nichts anderes dazu bringen, in die Luft zu jagen.

Wenn es sich um einen Lebenslauf handelt, ist es wahrscheinlich, dass sie sich für Ihre Logik genauso interessieren wie die kleinen Details wie Getter/Setter.

Wenn ich es wäre, würde ich sie ohne Getters/Setter öffentlich machen, aber einen Kommentar über ihnen angeben, der etwas in der Art von "Überlegen Sie diese privat und verwenden Sie Getter/Setter, je nach Anwendung und bevorzugter Codestil von dem Team"

Dieser Weg:

  1. Ihr Lebenslaufcode ist nicht überfüllt

  2. Sie verstehen, dass Sie nicht nur faul sind und ohne Grund alles öffentlich machen

  3. Es zeigt, dass Sie den jeweiligen Antrag bei der Entscheidung in Betracht ziehen, anstatt blind einem bestimmten Stil zu folgen.

Möchten Sie etwas Besonderes am Set machen oder bekommen (oder nur eines von ihnen privat)?

Wenn nicht, verschwenden Sie nicht Ihre Zeit damit.

Sie erhalten nichts damit, dies zu tun, wenn Sie sie nicht auf eine "besondere Weise" verwenden, und vielleicht verlangsamt es sogar alles ab

Wenn Sie nicht planen, ein spezifisches Verhalten beim Festlegen oder Zugriff auf diese Eigenschaft zu haben, ist dies nicht viel.

Wenn Sie beim Zugriff auf diese Eigenschaft ein spezifisches Verhalten haben müssen, können Sie die __set- und __GE -Methode jederzeit überladen.

Sehen : http://php.net/manual/en/language.oop5.overloading.php

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top