tightly-coupled-code

___ qstnhdr ___ Magische Zahlen vermeiden, ohne Abhängigkeiten zu erzeugen ___ tag123dependencyinjection ___ Ein Entwurfsmuster, um die Kopplung zwischen Komponenten zu reduzieren, indem dynamisch in Abhängigkeiten einer Softwarekomponente injiziert wird, die es benötigt, um zu funktionieren. ___ tag123enums ___ Ein Datentyp, der aus einer Reihe benannter Werte besteht, die als Elemente, Elemente oder Enumeratoren des Typs bezeichnet werden. ___ answer14836063 ___

Sie können einige dieser Hürden mit "Präprozessor" -Makros und einem Makefile löschen. Die Präprozessor-Makros stammen aus m4 .

Angenommen, Sie führen eine Datei mit Fehlercodes wie dieser.

%Vor%

Dann können Sie Ihren PHP-Code mit dem englischen Fehler "constant" schreiben.

%Vor%

Und fügen Sie eine Zeile in Ihr Makefile ein, die diese beiden Dateien über m4 ausführt. Es gibt mehr als eine Möglichkeit, das zu managen. (Um es kurz zu machen, lasse ich das Makefile weg und führe einfach meine Testdatei über m4 aus.)

%Vor%

Dies bewirkt eine Abhängigkeit; Die PHP-Dateien hängen alle von der Datei der Fehlercodes ab. Aber es ist eine triviale Abhängigkeit, die einfach über das Makefile verwaltet wird. In der Praxis würde ich wahrscheinlich eine Datei mit Fehlercodes erstellen, die so aussieht. . .

%Vor%

und verwenden Sie Texthilfsprogramme und %code% entweder

  • Erstellen Sie die M4-Makrodefinitionen oder
  • Erstellen Sie die Definitionen für Ihr ErrorCodes-Modul.

Die numerischen Werte entsprechen den Zeilennummern; Dies garantiert, dass Sie nie einen doppelten Fehlercode haben.

    
___ answer14834230 ___

Dies ist die gewünschte Kopplung. Während es eine gute Idee ist, die Anwendung und ihren Fehlermanager lose gekoppelt zu haben, gibt es keinen Grund, die Anwendung und ihre Fehlercodes zu trennen, da sie zusammengehören .

Abhängigkeiten:

%Vor%     
___ tag123ighlycoupledcode ___ hilf uns dieses Wiki zu bearbeiten ___ qstntxt ___

Ich erstelle einen Fehlermanager für eine API, an der ich arbeite. Die Idee ist, dass es einen einzigen Speicher von Fehlercodes bereitstellt, die von der API zurückgegeben werden können, um sicherzustellen, dass der gleiche Fehler in verschiedenen Aufrufen auf dieselbe Weise behandelt wird (z. B. erforderlicher Wert in der Anforderung fehlt).

Meine anfängliche Annäherung war in Richtung:

%Vor%

Dies erzeugt jedoch eine Abhängigkeit von der Fehlercode-Klasse, wo immer ich einen Fehler setzen möchte.

Die Alternative ist:

%Vor%

Aber jetzt habe ich eine Nummer in der Mitte meines Codes, die nichts bedeutet.

Während ich über Lösungen für dieses spezifische Problem nachdenken kann, wird es andere Situationen geben, in denen ich eine "Enum" verwenden möchte und ich kann mir keine Lösung vorstellen, die die Klassen nicht eng koppelt.

Gibt es einen besseren Weg, dies zu tun oder einen anderen Ansatz, um magische Zahlen zu entfernen? Oder ist die enge Kopplung etwas, das ich einfach akzeptieren und von Fall zu Fall berücksichtigen muss?

    
___ tag123php ___ PHP ist eine weit verbreitete, dynamische, objektorientierte und interpretierte Skriptsprache, die primär für die serverseitige Webentwicklung entwickelt wurde. ___
2
Antworten

Magische Zahlen vermeiden, ohne Abhängigkeiten zu erzeugen

Ich erstelle einen Fehlermanager für eine API, an der ich arbeite. Die Idee ist, dass es einen einzigen Speicher von Fehlercodes bereitstellt, die von der API zurückgegeben werden können, um sicherzustellen, dass der gleiche Fehler in verschiede...
12.02.2013, 13:46