none
Surcharge de constructeur RRS feed

  • Discussion générale

  • Bonjour,

    Le code ci-après présente une classe "MyClass" avec une surcharge du constructeur :

     

    class MyClass
        {
            private int _Id;
            private string _Description;
    
            public MyClass()
            {
                this._Id = -1;
                this._Description = "My default description";
                this.Init();
            }
    
            public MyClass(string desc)
            {
                this._Id = -1;
                this._Description = desc;
                this.Init();
            }
    
            public MyClass(int id, string desc)
            {
                this._Id = id;
                this._Description = desc;
                this.Init();
            }
    
    
            private void Init()
            {
                // ...
            }
    
        }
    

    Est-ce que ce code vous parait-il correcte ?

     

    >> Ce code est correcte mais il présente un grand problème. Il y a des duplications dans les trois constructeurs ce qui rend le code difficile à maintenir. Ce code ne respecte tout simplement pas le principe DRY.

    Pour corriger le problème, il faut utiliser le mot clé this:

    class MyClass
        {
            private int _Id;
            private string _Description;
    
            public MyClass()
                : this("My default description")
            {
            }
    
            public MyClass(string desc)
                : this(-1, desc)
            {
            }
    
            public MyClass(int id, string desc)
            {
                this._Description = desc;
                this._Id = id;
                this.Init();
            }
    
    
            private void Init()
            {
                // ...
            }
        }


    Cordialement,


    aelassas.free.fr
    • Modifié Link.frEditor mardi 27 septembre 2011 15:52 Formattage du code
    mardi 27 septembre 2011 15:36
    Auteur de réponse

Toutes les réponses