Çıkarma Yöntemi Yeniden Düzenleme (C#)
Çıkarma Yöntemi Varolan bir üye içerisindeki bir kod bölümünden yeni bir yöntem oluşturmak için kolay bir yol sağlayan bir yeniden düzenleme işlemidir.
Ayıklama Yöntemi kullanarak varolan bir üyenin kod bloğu içinden belirli kodları ayıklayarak yeni bir yöntem oluşturabilirsiniz. Yeni, ayıklanan yöntem seçili kodu içerir ve mevcut üyedeki seçili kod yeni yönteme bir çağrı ile değiştirilir. Bir kod parçasını kendi yöntemine döndürmek, kodu daha iyi tekrar kullanım ve okunabilirlik için hızlıca ve doğru bir biçimde yeniden düzenlemenizi sağlar.
Çıkarma Yöntemi aşağıdaki avantajlara sahiptir:
Ayrık, yeniden kullanılabilir yöntemleri vurgulayarak en iyi kodlama uygulamalarını teşvik eder.
İyi düzenleme aracılığıyla kendinden belgeli kodu teşvik eder.
Açıklayıcı adlar kullanıldığında yüksek seviyeli yöntemler daha çok bir seri açıklama gibi okunabilir.
Geçersiz kılmayı basitleştirmek için daha hassas yöntemlerin oluşturulmasını teşvik eder.
Kod yinelemelerini azaltır.
Ayıklama Yöntemi'ni kullanmak için
ExtractMethod adlı bir konsol uygulaması oluşturun, ardından bunu Program aşağıdaki örnek kod ile değiştirin.
class A { const double PI = 3.141592; double CalculatePaintNeeded(double paintPerUnit, double radius) { // Select any of the following: // 1. The entire next line of code. // 2. The right-hand side of the next line of code. // 3. Just "PI *" of the right-hand side of the next line // of code (to see the prompt for selection expansion). // 4. All code within the method body. // ...Then invoke Extract Method. double area = PI * radius * radius; return area / paintPerUnit; } }
Ayıklamak istediğiniz kod parçasını seçin:
double area = PI * radius * radius;
Yeniden Düzenle menüsünde Yöntemi Ayıkla öğesini tıklatın.
Ayıklama Yöntemi iletişim kutusu görünür.
Alternatif olarak, Ayıklama Yöntemi iletişim kutusunu görüntülemek için CTRL+R, M klavye kısayolunu kullanabilirsiniz.
Ayrıca seçili kodu sağ tıklatabilir, bağlam menüsünde Yeniden Düzenle'ye getirebilir ve ardından Yöntemi Çıkar iletişim kutusunu görüntülemek için Yöntemi Çıkar'ı tıklatabilirsiniz.
Yeni yöntem için Yeni Yöntem adı kutusunda CircleArea gibi bir ad belirtin.
Yeni yöntem imzasının önizlemesi Önizleme Yöntem İmzası altında görüntülenir.
Tamam düğmesini tıklatın.
Açıklamalar
Dışarı Aktarma Yöntemi komutunu kullandığınızda, yeni yöntem, kaynak üyesini takip edecek şekilde aynı sınıfa eklenir.
Kısmi Türler
Sınıf parçalı tür ise Extract Method kaynak üyenin hemen ardından yeni yöntemi oluşturur. Çıkarma Yöntemi yeni yöntem üzerinde kod tarafından herhangi bir örnek veriye başvurulmadığında statik bir yöntem oluşturarak, yeni yöntemin imzasın belirler.
Genel Tür Parametreleri
Serbest genel parametre türüne sahip bir yöntemi dışa aktardığınızda, ona atanmış bir değer yoksa, yaratılan kod ref değiştiriciyi parametreye eklemeyecektir. Ayıklanmış yöntem başvuru türlerini genel tür bağımsız değişkeni olarak destekliyorsa, ref değiştiriciyi yöntem imzası parametresine el ile eklemelisiniz.
Anonim Yöntemler
Anonim yöntemin dışında başvurulan veya bildirilen bir yerel değişkene başvuru içeren anonim yöntemin bir parçasını genişletmeye çalışırsanız, Visual Studio sizi olası anlamsal değişiklikler hakkında uyaracaktır.
Bir anonim yöntem bir yerel değişkenin değerini kullandığında, değer anonim yöntem yürütüldüğü anda elde edilir. Bir anonim yöntem başka bir yöntem içine çıkartıldığında, yerel değişkenin değeri çıkartılmış yönteme yapılan çağrı anında elde edilir.
Aşağıdaki kod örneği anlamsal değişikliği gösterir. Bu kod yürütülürse konsola 11 yazdırılır. Kendi yönteminin içine kod yorumları tarafından işaretlenmiş kod bölgesini ayıklamak ve sonra yeniden işlenmiş kodu yürütmek için Ayıklama Yöntemi'ni kullanıyorsanız, konsola 10 öğesi yazdırılır.
class Program
{
delegate void D();
D d;
static void Main(string[] args)
{
Program p = new Program();
int i = 10;
/*begin extraction*/
p.d = delegate { Console.WriteLine(i++); };
/*end extraction*/
i++;
p.d();
}
}
Bu durumun etrafından dolaşmak için anonim yöntemde kullanılan yerel değişkenleri sınıfın alanları yapın.