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?
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%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 make
entweder
Die numerischen Werte entsprechen den Zeilennummern; Dies garantiert, dass Sie nie einen doppelten Fehlercode haben.
Tags und Links php dependency-injection enums tightly-coupled-code