[JAVA] Une petite collection de code inquiétante - je veux vous donner une chance d'écrire du bon code. 2 [Exemple de refactoring C #]

Une collection de codes un peu inquiétants

Lors de la révision du code, il y avait une source qui m'intéressait, je vais donc la lister. Ce n'est pas un gros problème, mais cela ne peut pas être aidé.

  1. Vérification nulle
            int? inputValue = null;

            //NG Je ne pouvais pas penser à une telle méthode de mise en œuvre, alors j'ai pensé que c'était un peu incroyable.
            if (string.IsNullOrWhiteSpace(inputValue.ToString()))
            {
            }

            //Utilisez la propriété OK
            if (!inputValue.HasValue)
            {
            }

            // OK !Nullable.C'est bien car c'est équivalent à HasValue.
            if (inputValue == null)
            {
            }

2. Extrayez la valeur du type à tolérance nulle.

            int? inputValue = 1;

            int value;
            if (inputValue.HasValue)
            {
                //NG Arrêtons l'idée que tout doit être une chaîne de caractères
                value = int.Parse(inputValue.ToString());
                //NG casting inutile 1
                value = Convert.ToInt32((object)inputValue);
                //Utiliser la propriété OK
                value = inputValue.Value;
                //OK On dirait un casting inutile, mais inputValue.La valeur est appelée.
                value = (int)inputValue;

            }


  1. Cast
            object objectValue = 1;
            int castValue;
            if (objectValue != null)
            {
                //Casting comme une chaîne NG est un gaspillage
                castValue = int.Parse(objectValue.ToString());
                // OK .Utilisez le processus de conversion fourni par Net Framework
                castValue = Convert.ToInt32(objectValue);
                //OK casting normal
                castValue = (int)objectValue;
            }

Résumé

Beaucoup de gens pensent qu'il devrait s'agir d'une chaîne de caractères. Même s'il n'y a pas de problème de fonctionnement, le réviseur ne peut pas l'aider.

Exemple de code (Java) 2017/3/24 ajouté

        /**Vérification nulle**/
        Integer inputValue = null;

        //Personne n'écrirait cela en NG java.
        //Au fait, C#Int?Est une structure Nullable, donc aucune vérification Null n'était nécessaire avant ToString.
        if (inputValue == null || inputValue.toString().length() == 0) {

        }

        //OK Pour Java, il est correct de comparer avec null.
        if (inputValue == null) {

        }
        /**Null tolérant**/
        Integer inputValue = 1;

        int value;
        if (inputValue != null) {
            //NG Arrêtons l'idée que tout doit être une chaîne de caractères
            value = Integer.parseInt(inputValue.toString());
            //NG casting inutile
            value = (int) inputValue;
            // OK Integer.intValue est appelée.
            value = inputValue;
            // OK
            value = inputValue.intValue();
        }

        /**Type d'objet**/
        Object objectValue = 1;
        int castValue;
        if (objectValue != null) {
            //NG Si vous connaissez le type d'origine, vous n'avez pas besoin de le convertir en chaîne.
            castValue = Integer.parseInt(objectValue.toString());
            //OK Couler dans le moule d'origine
            castValue = (int) objectValue;
        }

Article précédent (brouiller le branchement conditionnel)

[Article suivant (interface fluide)] (http://qiita.com/csharpisthebest/items/403d40374acc70ef24e3)

Table des matières

Recommended Posts

Une petite collection de code inquiétante - je veux vous donner une chance d'écrire du bon code. 2 [Exemple de refactoring C #]
Easy Null Check-Je veux vous donner une chance d'écrire du bon code. 6 [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
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
7 choses que je veux que tu gardes pour que ça ne devienne pas un putain de code