[JAVA] Easy Null Check-Je veux vous donner une chance d'écrire du bon code. 6 [Exemple de refactoring C #]

Validité supplémentaire du contrôle Null facile

Considérez le code écrit lorsqu'une NullReferenceException se produit lors du processus d'attribution d'une valeur à une cellule de répartition. J'ai ajouté la vérification Null sans réfléchir profondément, mais il y a beaucoup de choses à penser.

Exemple de code (avant que l'exception ne se produise)

Un code qui affiche la valeur obtenue à partir de la base de données dans la propagation, et la valeur peut ou non être nulle. Étant donné que la diffusion est un produit tiers, nous l'avons remplacé par notre propre classe. Un jour, une NullReferenceException s'est produite au point où une valeur a été affectée à une cellule.

        public void Main(SpreadCell cell)
        {
            int? dbValue = null;
            //Le processus d'obtention de la valeur de la base de données est omis.

            //NullReferenceException se produit.
            cell.Value = dbValue.Value;
            
        }

        /**Étaler l'objet de cellule**/
        private class SpreadCell
        {
            public Object Value { get; set; }
        }
java
    public void main(SpreadCell cell) {
        Integer dbValue = null;
        //Le processus d'obtention de la valeur de la base de données est omis.

        //NullPointErexception se produit.
        cell.setValue(dbValue.intValue());
    }

Exemple de code (code correspondant après qu'une exception se produit)

J'ajoute une vérification Null sans réfléchir, et il n'y a rien d'autre. Notez que vous n'avez pas besoin d'une vérification nulle par-dessus tout.

        public void Main(SpreadCell cell)
        {
            int? dbValue = null;
            //Le processus d'obtention de la valeur de la base de données est omis.

            //Attribuez une valeur uniquement si elle n'est pas Null.
            if (dbValue != null)
            {
                cell.Value = dbValue.Value;
            }          
        }
java
    public void main(SpreadCell cell) {
        Integer dbValue = null;
        //Le processus d'obtention de la valeur de la base de données est omis.

        //Attribuez une valeur uniquement si elle n'est pas Null.
        if (dbValue != null) {
            cell.setValue(dbValue.intValue());
        }
    }

Code après refactoring

Il n'y a aucun problème si le type Nullable est remplacé tel quel. Si vous donnez une centaine d'étapes et effectuez une vérification nulle, veuillez entrer le code d'initialisation de la cellule.

        public void Main(SpreadCell cell)
        {
            int? dbValue = null;
            //Le processus d'obtention de la valeur de la base de données est omis.

            //Vous pouvez le remplacer tel quel.
            cell.Value = dbValue;

            //Si vous utilisez l'instruction if, veuillez l'initialiser.
            cell.Value = null;
            if (dbValue != null)
            {
                cell.Value = dbValue.Value;
            }
        }

java
    public void main(SpreadCell cell) {
        Integer dbValue = null;
        //Le processus d'obtention de la valeur de la base de données est omis.

        //Vous pouvez le remplacer tel quel.
        cell.setValue(dbValue);

        //Si vous utilisez l'instruction if, veuillez l'initialiser.
        cell.setValue(null);
        if (dbValue != null) {
            cell.setValue(dbValue.intValue());
        }
    }

Résumé

Vous ne devriez pas simplement ajouter une vérification Null sans réfléchir simplement parce que vous obtenez une NullReferenceException. Si vous avez besoin d'une vérification nulle, n'oubliez pas le code d'initialisation.

Pour ceux qui font face à ces obstacles, je crains que d'autres codes aient été corrigés correctement.

Article précédent (traitement inutile pour la collecte)

[Article suivant (Gestion des types booléens)] (http://qiita.com/csharpisthebest/items/b0c44764948e1334e94a)

Table des matières

Recommended Posts

Easy Null Check-Je veux vous donner une chance d'écrire du bon code. 6 [Exemple de refactoring C #]
Une petite collection de code inquiétante - je veux vous donner une chance d'écrire du bon code. 2 [Exemple de refactoring C #]
Branchement conditionnel compliqué - je veux vous donner une chance d'écrire du bon code. 1 [Exemple de refactoring C #]
Gestion des types booléens - Je veux vous donner une chance d'écrire du bon code. 7 [Exemple de refactoring C #]
Trop d'arguments de fonction - je veux vous donner une chance d'écrire du bon code. 8 [Exemple de refactoring C #]
Traitement inutile des collections - je veux vous donner une chance d'écrire du bon code. 5 [Exemple de refactoring C #]
Une interface fluide? -Je veux vous donner l'occasion d'écrire du bon code. 3 [Exemple de refactoring C #]
Est-il possible de séparer les appels de fonction et les branches conditionnelles? - Je veux vous donner une chance d'écrire du bon code. 9 [Exemple de refactoring C #]
Comment écrire du bon code
Écrivons un code facile à maintenir (Partie 2) Nom
Je veux écrire un joli build.gradle
Je veux écrire un test unitaire!
Je veux écrire une simple répétition d'une chaîne de caractères
Écrire du code facile à maintenir (partie 4)
Écrire du code facile à maintenir (partie 3)
7 choses que je veux que tu gardes pour que ça ne devienne pas un putain de code