Ich arbeite im Allgemeinen mit PHP-Warnungen und deaktivierten Hinweisen, da ich an vielen Projekten arbeite, in denen es bereits in der Live-Produktion ist. Wenn ich nun die Warnungen und Hinweise auf diesen Live-Produktions-Websites einschalte, werden sie mit ihnen überladen.
Bei den Projekten, an denen ich zu Hause und vor Ort arbeite, versuche ich normalerweise, ALLE Warnungen und Hinweise zu beseitigen. Manchmal gibt es keine Lösung, wenn ich keine Benachrichtigung habe. Deshalb muss ich mich erst mit der Benachrichtigung befassen, bevor ich mich entscheide, sie vollständig auszuschalten.
Letztendlich weiß ich nicht, ob ich meine Zeit damit vergeude, alle Warnungen und Hinweise loszuwerden, oder ob ich dies tatsächlich zum Wohle des Guten tue.
Daher meine Frage, ist es eine gute Praxis, Warnungen und Hinweise insgesamt zu vermeiden, oder spielt es wirklich keine Rolle?
@
könnten .error_reporting(0);
? Ich habe immer verwendenerror_reporting(E_ALL);
und der einzige Unterschied zwischen Entwicklung und Produktion istini_set('display_errors', 'on');
vsini_set('display_errors', 'off');
. Ich bemühe mich immer, Hinweise und Warnungen zu korrigieren, solange der Code noch in meinem Kopf ist. Ich überprüfe die Protokolle in meinem Produktionssystem regelmäßig, um festzustellen, ob zusätzliche Warnungen und Hinweise vorhanden sind, die ich möglicherweise übersehen habe.@
. Nach Jahren und Jahren der PHP-Programmierung habe ich diesen Operator nicht benutzt. Nicht einmal. Noch nie. Dies verbirgt nicht nur potenzielle Probleme, sondern hat auch Auswirkungen auf die Leistung: Im Hintergrund deaktiviert PHP die Fehlerberichterstattung, bevor der Code aufgerufen wird -> ruft den Code auf -> setzt ihn auf seinen ursprünglichen Wert zurück. Diese Schritte sind teuer, wenn@
Ihr Code Dutzende oder Hunderte von Schritten enthält.Antworten:
Bei der Entwicklung, beim Testen und bei der Qualitätssicherung sollten die Warnungen immer auf der höchsten Stufe aktiviert sein, jedoch nicht in der Produktion. Wenn es sich um eine Hundefutter-Anwendung handelt, dh um eine Anwendung, die Sie selbst verwenden, sollten Sie sie auch in der Produktion aktivieren.
Grundsätzlich gilt: Lassen Sie sie in den Fällen einschalten, in denen die Person, die sie sieht, in der Lage ist, etwas dagegen zu unternehmen (der Entwickler in Entwicklung und Test kann sie selbst beheben, der Tester in der Qualitätssicherung kann einen Fehler melden, und wenn dies der Entwickler ist auch der Benutzer, dann kann er es auch in der Produktion reparieren), aber schalten Sie sie nicht ein , wenn die Person, die sieht, nichts dagegen tun kann (ein Benutzer in der Produktion, der nicht einmal programmieren kann).
Im Idealfall möchten Sie auch Warnungen als Fehler behandeln, aber das funktioniert nur, wenn keine vorhanden sind ;-) Beachten Sie dies jedoch als Ziel! Wenn es möglich ist, diese Funktion auf Dateibasis zu aktivieren / deaktivieren, aktivieren Sie sie für alle neuen Dateien und aktivieren Sie sie für alle warnfreien Dateien. Schalten Sie sie niemals wieder aus, wenn Sie sie einmal aktiviert haben.
Was tun gegen die Überlastung?
Sie erstellen eine Liste aller Warnungen und Hinweise und befolgen dann die folgenden Regeln:
Hinweis: Für beide ist eine Art Protokolldatenbank und ein Protokollfiltermechanismus erforderlich. Beachten Sie auch, dass "Protokolldatenbank" und "Protokollfiltermechanismus" nur eine Textdatei sein können und
grep
.Das ist das Wichtige. Ohne die Datenbank wissen Sie nicht, wann Sie eine neue Warnung hinzufügen, und ohne die Filterung haben Sie immer noch das Überlastungsproblem.
Hinweis Nr. 2: Dies funktioniert nicht nur für Warnungen, sondern auch für Stilprüfungen, Komplexitätsmetriken, Codeabdeckung, statische Analysetools usw. Grundsätzlich gilt:
Dies ermöglicht eine einfache Priorisierung: Code, der häufig bearbeitet wird und daher leicht zu lesen und zu warten ist, wird mit der Zeit besser. Code, der nicht oft angerührt wird, wird nicht besser, aber das ist in Ordnung, weil sich sowieso niemand darum kümmern muss. Und zumindest wird es nicht schlimmer werden.
Natürlich hindert Sie nichts daran, Zeit speziell zuzuweisen, um nichts anderes zu tun, als Warnungen aufzuspüren und zu töten. Es ist nur so oft, dass dies wirtschaftlich nicht vertretbar ist, und es ist Ihre Aufgabe als Ingenieur, dies zu berücksichtigen. "Ein Ingenieur ist einer, der mit einem Dollar bauen kann, was jeder Dummkopf mit zwei bauen kann."
quelle
Wenn Warnungen und Hinweise aus Ihrem Code stammen, beheben Sie dies auf jeden Fall. Meiner Erfahrung nach ist dies bei 95% vielleicht harmlos, bei 5% handelt es sich jedoch um ein echtes Problem, das zu unzähligen Stunden Jagen führen kann.
Wenn sie aus dem Code eines Drittanbieters stammen, den Sie aus dem einen oder anderen Grund verwenden müssen, haben Sie im Allgemeinen keine große Auswahl.
Eine andere Frage: Wenn Ihre alte Codebasis wirklich groß ist, können Sie alten Code als Drittanbieter behandeln, aber der neue Code muss warnungsfrei sein.
quelle
using
Aussagen ...Es ist wichtig. Eine Warnung könnte Ihre Tests nicht brechen oder sogar für eine Weile in der Öffentlichkeit auftauchen - aber es könnte ein Symptom für einen drohenden Fehler sein. Ich entwickle derzeit hauptsächlich in C # / C ++ und habe eine definierte Strategie, um Warnungen aus unserer Codebasis zu entfernen und zu verhindern. Zum Glück ist es keine Raketenwissenschaft =).
Wenn die Sprache, in der Sie arbeiten, in der Warnungen als Fehler behandelt werden können und die Warnstufen variabel sind, würde ich Folgendes tun:
Ich finde, dass dies nicht nur Warnungen aus meinem Code herauswirft - es hält sie auch fern .
quelle