J'ai généralement travaillé avec les avertissements et les avis PHP, car je travaille sur de nombreux projets où il est déjà en production en direct. Maintenant, si j'active les avertissements et les avis sur ces sites de production en direct, ils en seront surchargés.
Les projets sur lesquels je travaille à la maison, sur le local, j'essaie généralement de contourner TOUS les avertissements et notifications. Parfois, il n'y a pas de solution pour ne pas avoir d'avis, alors je devrais simplement m'occuper de consulter l'avis jusqu'à ce que je décide de les désactiver complètement.
En fin de compte, je ne sais pas si je perds mon temps à essayer de me débarrasser de tous les avertissements et avis, ou si je fais cela pour le plus grand bien.
D'où ma question, est-ce une bonne pratique d'éviter complètement les avertissements et les avis, ou est-ce vraiment sans importance?
@
.error_reporting(0);
? Je l' utilise toujourserror_reporting(E_ALL);
et la seule différence entre le développement et la productionini_set('display_errors', 'on');
vsini_set('display_errors', 'off');
. Je vise toujours à corriger les notifications et les avertissements alors que le code est encore frais dans ma tête. Je fréquente les journaux de mon système de production pour voir s'il y a des avertissements et des avis supplémentaires que j'ai peut-être manqués.@
. Après des années et des années de programmation PHP, je n'ai pas utilisé cet opérateur. Pas une fois. Jamais. Non seulement cela cache des problèmes potentiels, mais cela a également un impact sur les performances: en arrière-plan, PHP désactive le rapport d'erreurs avant d'appeler le code -> appelle le code -> le ramène à sa valeur d'origine. Ces étapes sont coûteuses si vous en avez des dizaines ou des centaines@
dans votre code.Réponses:
Les avertissements doivent toujours être activés au niveau le plus complet dans le développement, les tests et l'assurance qualité, mais pas en production. En fait, s'il s'agit d'une application de dogfooding, c'est-à-dire une application que vous utilisez vous-même, vous devez également les activer en production.
Fondamentalement: faites-les allumer dans les cas où la personne qui les voit est en mesure de faire quelque chose à leur sujet (le développeur en développement et en test peut les corriger lui-même, le testeur en QA peut déposer un bogue, et si le développeur est également l'utilisateur, il peut également le réparer en production), mais ne les allumez pas lorsque la personne qui voit ne peut rien faire à leur sujet (un utilisateur en production, qui ne sait même pas comment programmer).
Idéalement, vous voudrez également activer le traitement des avertissements comme des erreurs, mais cela ne fonctionne que s'il n'y en a pas au départ ;-) Mais gardez cela à l'esprit comme objectif! S'il est possible d'activer ou de désactiver cette fonction par fichier, activez-la pour tous les nouveaux fichiers, activez-la pour tous les fichiers sans avertissement et ne la désactivez plus une fois activée.
Alors, que faire de la surcharge?
Vous faites une liste de tous les avertissements et notifications, puis vous respectez les règles suivantes:
Remarque: les deux nécessitent la mise en place d'une sorte de base de données de journaux et d'un mécanisme de filtrage des journaux. Notez également que la "base de données des journaux" et le "mécanisme de filtrage des journaux" pourraient simplement être un fichier texte et
grep
.C'est le bit important. Sans la base de données, vous ne saurez pas quand vous ajoutez un nouvel avertissement, et sans le filtrage, vous avez toujours le problème de surcharge.
Remarque n ° 2: cela ne fonctionne pas uniquement pour les avertissements, il fonctionne également pour les vérificateurs de style, les mesures de complexité, la couverture de code, les outils d'analyse statique, etc. Fondamentalement:
Cela vous permet de prioriser facilement: le code qui est édité souvent et doit donc être facile à lire et à entretenir, s'améliorera avec le temps. Un code qui n'est pas souvent touché ne s'améliorera pas, mais ça va, car personne n'a besoin de le regarder de toute façon. Et , au moins, cela ne va pas empirer.
Bien sûr, rien ne vous empêche d'allouer du temps spécifiquement pour ne faire que traquer et tuer les avertissements. C'est juste que souvent, ce n'est pas économiquement viable, et c'est votre travail en tant qu'ingénieur de garder cela à l'esprit. "Un ingénieur est celui qui peut construire avec un dollar, ce que n'importe quel imbécile peut construire avec deux."
la source
Si des avertissements et des notifications proviennent de votre code, résolvez-le définitivement. D'après mon expérience, dans 95% des cas, cela peut être bénin, mais les 5% mettent en évidence un vrai problème qui peut conduire à d'innombrables heures passées à courir.
S'ils proviennent du code tiers que vous devez utiliser pour une raison ou une autre, vous n'avez généralement pas beaucoup de choix.
C'est une question différente si votre base de code héritée est vraiment grande, vous pouvez alors traiter le code hérité comme tiers, mais exiger que le nouveau code soit sans avertissement.
la source
using
relevés ...Cela compte. Un avertissement pourrait ne pas casser vos tests ou même apparaître dans la nature pendant un certain temps - mais cela pourrait être le symptôme d'un bug imminent. Je développe actuellement principalement en C # / C ++ et j'ai une stratégie définie pour se débarrasser et garder les avertissements hors de notre base de code. Heureusement, ce n'est pas sorcier =).
Si la langue dans laquelle vous travaillez a la capacité de traiter les avertissements comme des erreurs et a des niveaux d'avertissement variables, je ferais ce qui suit:
Je trouve que cela ne fonctionne pas seulement avec des avertissements sur mon code - il les empêche de rentrer .
la source