50 Satır Kodu Okumak mı Yöntem Çıkartma Yeniden Düzenlemesi mi? - Derek Comartin'den İçgörüler
Yazılım geliştirme dünyasında, yeniden yapılandırma hayati önem taşır. En yaygın ve teşvik edilen tekniklerden biri, büyük bir kod parçasını okunabilirliği ve yeniden kullanılabilirliği artırmak için daha küçük, yeniden kullanılabilir yöntemlere ayırmak olan Metod Çıkarmadır. Bu teoride ideal gibi görünse de, Derek Comartin, "Metod Çıkarma Yeniden Yapılandırma'dan ziyade 50 satırı okumayı tercih ederim" videosunda taze ve eleştirel bir bakış açısı sunar.
Bu makale sizi Derek'in metot çıkarma yeniden yapılandırmasının ayrıntılarına götürecek, gerçek dünya bağlamı ve pratik tavsiyeler sunacaktır. Derek'in tam mantığını ve kod yapısını takip ederek bu yeniden yapılandırmanın ne zaman ve nasıl uygulanacağını, uygulama ayrıntılarını ve olası dezavantajlarını ele alacağız.
Örnek: Sohbet Sisteminde Kullanıcı Kaydı
Videonun başında, Derek bir örnek sunar: bir sohbet sistemi için kayıt özelliği. Yaklaşık 50 satırlık bir kod bloğudur ve birkaç görev yerine getirir:
Kullanıcı adının boş olmadığını kontrol eder
Kullanıcı adının zaten alınmış olup olmadığını doğrular
Yaş sınırlaması olan kanalları işler
Yeni kullanıcı nesnesini kaydeder
- Aktivasyon bağlantısı içeren bir e-posta gönderir
Bu kod, tek bir işlevde bulunur ve ilk bakışta, metod çıkarma yeniden yapılandırması için iyi bir aday gibi görünebilir. Ancak Derek'in uyardığı gibi, etkisini anlamadan körü körüne yeniden yapılandırmak, aslında netliği bozabilir.
Yeniden Yapılandırmaya Başlamak: Metod Çıkarmayı Seçin
Derek, birçok geliştiricinin yaptığı gibi kod parçasını daha küçük parçalara ayırarak başlar. Çoğu IDE veya kod düzenleyicisinde, içeriik menüsü veya klavye kısa yolu üzerinden Metod Çıkarmayı nasıl seçeceğini gösterir.
O, şu parçaları çıkarır:
validateUsername ile kullanıcı adının boş olmadığının doğrulanması
existingSignUpNotActivated ile etkinleştirilmemiş hesapların kontrol edilmesi
validateExistingUser ile tüm mevcut kullanıcı kontrollerinin yapılması
filterAgeRestrictedChannels ile 18 yaş altı kullanıcılar için kanalların işlenmesi
- sendEmail ile karşılama e-postasının gönderilmesi
Her yeni fonksiyona anlamlı bir isim verir, bu da temiz kod uygulamalarında sıklıkla teşvik edilen temel ipuçlarından biridir. Ancak bu değiştirilmiş sürümleri incelerken, Derek işlevsellikte değil, okunabilirlik ve kontrol akışındaki çatlakları işaret etmeye başlar.
Sorun 1: Gizli Uygulama Detayları
Derek'in vurguladığı ilk kırmızı bayraklardan biri, uygulama detaylarının artık çıkarılan metodların arkasına gizlenmiş olmasıdır.
Örneğin, validateUsername ve validateExistingUser metodları aslında istisnalar yükseltir. Ancak yeniden yapılandırılmış kodu okuyan bir geliştirici olarak, iç kısımlarını erişmedikçe bunu bilmiyorsunuz.
Bu tür bir yeniden yapılandırma, kontrol mantığını gizleyebilir ve bu da hatalara veya kaçırılan doğrulamalara yol açar. Kapsam ve akış artık belirgin değil. Kodu daha net hale getirmek yerine, bir istisnalar veya değişkenlerin değiştiği yan etkiler gibi şeylerin artık mantığın aslen yazıldığı yerde görünür olmadığı soyutlamalar labirenti oluşturuyorsunuz.
Sorun 2: Yönlendirme ve Zincir Çıkarmalar
Derek, ardından yönlendirme sorununu — yani bir çıkarılan metodun diğerini çağırması ve bunun zincirlenerek devam etmesi durumunu — işaret eder. validateExistingUser metodunun aslında existingSignUpNotActivated üzerine inşa edildiğini gösterir.
Artık düz bir yukarıdan aşağıya kod bloğunu okumuyorsunuz. Neler olduğunu izlemek için metodlar, dosyalar ve sınıflar arasında zıplıyorsunuz. Ve editör bu akışta gezinmeye yardımcı olabilirken, okumada bilişsel yük olarak bir yük haline gelir.
Bu, yeniden yapılandırmanın birden fazla dosya veya bileşene yayıldığı daha büyük sistemlerde daha da acı verici hale gelir. Bir anda, "temiz kod" artık orijinal "dağınık" 50 satırdan daha zor takip edilir hale gelir.
Sorun 3: Yerel Değişkenler ve Durumun Değişmesi
Bu videodan en önemli derslerden biri, yerel değişkenler ve durum değişikliğinin işlenmesinden gelir.
Derek, filterAgeRestrictedChannels metoduna dikkati çeker. Bir sonuç döndürmez—kendisine iletilen kanallar listesini doğrudan değiştirir. Bu, farklı bir metodun içinden yerel durumu değiştiriyorsunuz ve bu metodun içine dikkatle bakmadıkça bu değişiklik gizlidir.
Bu, bir fonksiyonun ya saf bir operasyon olduğunu ya da bir şeyleri değiştirdiğini net bir şekilde belirttiği beklentisini bozar. Bir metodun yeni bir metodla değiştirildiğinde değer döndürmek yerine içsel olarak değiştiğinde, risk ve kafa karışıklığı oluşturursunuz.
Derek'in Yeniden Yapılandırılmış Alternatif
Peki Derek eski kodunu nasıl yeniden yapılandırır?
O, çok daha basit bir yaklaşım önerir:
Açıklayıcı mantığı satır içi bırakın. Boş kullanıcı adı için ilk kontrol, kod tabanını karmaşık hale getirmediği için ana metodda kalır.
Sonuç döndürün, durumu değiştirmeyin. Kanallar listesini değiştirmek yerine, filterAgeAppropriateChannels fonksiyonu artık filtrelenmiş bir liste döndürür. Bu, veri akışını net hale getirir ve beklenmedik yan etkileri önler.
Basit, tahmin edilebilir çıkarma metodlarını kullanın. Diğer çıkartılan tek metod, isExistingUserAlreadyActivated olup, istisna atmaksızın net bir şekilde boolean döndürür. Mantığı detayları gizlemeden kapsar.
- E-posta gönderme gibi satır içi yan etkilerden kaçının. Derek, gösterim amacıyla e-posta mantığını yerinde bırakır, ancak gerçek bir sistemde bunun kullanıcı formu gönderimiyle doğrudan bağlı olmadığı ayrı bir işlem veya iş parçacığında bir olayla ele alınması gerektiğini önerir.
Toplamda, Derek iki çıkarma metodunu yalnızca kullanır ve geri kalan mantığı satır içi bırakır—çünkü okunması, mantığı açıklaması ve kontrol etmesi daha kolaydır.
Metod Çıkarma Yeniden Yapılandırma Üzerine Son İpuçları
Derek'in videosu, metod çıkarma yeniden yapılandırmayı etkili bir şekilde kullanmak için bazı pratik yönergeler bırakır:
Metodun tam olarak ne yaptığını açıklayan anlamlı isimler kullanın.
Devlet değişikliği veya istisna atmaktan kaçının, aksi takdirde bunlar barizdir.
Girdi parametrelerini değiştirmek yerine, değer döndürün.
Mantığı birden fazla soyutlama katmanının arkasına gizlemeyin.
- Bir metod orijinal haliyle okunabilir görünüyorsa, sadece yeniden yapılandırma uğruna birden fazla fonksiyona zorlamayın.
Bazen, en iyi soyutlama hiç soyutlamamaktır—özellikle bu açık ve kapsam farkındalığı pahasına geliyorsa.
Sonuç
Derek Comartin'in yaklaşımı, yeniden yapılandırmanın her zaman kodu iyileştirdiği varsayımını sorgular. Metot çıkarma yeniden yapılandırması söz konusu olduğunda, az çoğu zaman daha iyidir. Mantığınızı parçalara bölmek için Metot Çıkarmayı aşırı kullanmak yerine neyin değer kattığını, neyin kodu anlamayı kolaylaştırdığını ve neyin önemli ayrıntıları gizlediğini değerlendirin.
Gerçek dünya kodunda doğrudan içgörüler ve açık örneklerle, Derek videosunda bazen tek bir metodda 50 satırın, bir hikaye gibi yukarıdan aşağıya okunmasının, kod tabanınıza yayılmış on daha küçük metoddan daha iyi olduğunu gösterir.
Eğer hiç yeni bir metod oluşturmak için klavye kısa yoluna ulaştıysanız, Derek'in tavsiyesini hatırlayın: duraklayın, değerlendir, ve yeniden yapılandırma okuyucuya hizmet ettiğinden emin olun—sadece IDE'ye değil.

