Chain Constructors Refactoring C#

10 Eyl

Bir sınıfın birden fazla kurucu metodu (constructor) varsa, kod tekrarları da oluşacak demektir. Çünkü kurucu metodların fazla olması, parametrelerin fazla olmasını gerektirir. Dolayısıyla sınıfın üyelerinin tekrarlı bir şeklide atama işlemine tabi tutulması demektir. Bu kod tekrarlarının nasıl oluştuğunu şu örnekle inceleyebiliriz.


public class PersonManager
{
      private string firstName;
      private string lastName;
      private string socialSecurityNumber;
      private string age;

      public PersonManager(string firstName, string lastName)
      {
          this.firstName = firstName;
          this.lastName = lastName;
      }

      public PersonManager(string firstName, string lastName, string socialSecurityNumber)
      {
          this.firstName = firstName;
          this.lastName = lastName;
          this.socialSecurityNumber = socialSecurityNumber;
      }

      public PersonManager(string firstName, string lastName,string age, string socialSecurityNumber)
      {
          this.firstName = firstName;
          this.lastName = lastName;
          this.age = age;
          this.socialSecurityNumber = socialSecurityNumber;
      }

}

Private erişimli field’lar her kurucu metodda tekrarlı bir şekilde işleme sokulmuş. Bunun önüne şu şeklide geçmek mümkündür.


public PersonManager(string firstName, string lastName)
      :this(firstName,lastName,"Unknown", "Unknown")
{
}

public PersonManager(string firstName, string lastName, string socialSecurityNumber)
       : this(firstName, lastName, socialSecurityNumber, "Unknown")
{
}

public PersonManager(string firstName, string lastName, string socialSecurityNumber, string age)
{
       this.firstName = firstName;
       this.lastName = lastName;
       this.age = age;
       this.socialSecurityNumber = socialSecurityNumber;
}

Bu şekilde kodumuzu tekrarlı yapıdan arındırdık.

Tekrar görüşmek üzere.

One thought on “Chain Constructors Refactoring C#

  1. çok teşekkürler böyle pratik çözümler ,kod örnekleri paylaştığınız için

    iyi çalışmalar

Comments are closed.