Peki, kullandığım veya kullandığımı düşünmek istediğim ölçü şu:
Her bağımsız, tek, tek satırlık, kullanıma hazır ya da bırak işlev gereksinimi için, uygulamadan önce kod tabanının görüntüsünü alın. Ardından, sürece dahil edilen hataları bulmak ve düzeltmek de dahil olmak üzere uygulayın. Ardından diff
, önce ve sonra kod tabanı arasında bir sayı çalıştırın . Bu diff
, size değişikliği uygulayan tüm eklerin, silmelerin ve değişikliklerin bir listesini gösterecektir. (Ardışık 10 kod satırı eklemek gibi bir değişiklik var.) Kaç tane değişiklik vardı? Bu sayı ne kadar küçükse, kod normalde o kadar iyi korunur.
Buna kaynak kodunun fazlalığı diyorum , çünkü bu bir hata düzeltme kodunun fazlalığı gibi. Bilgi 1 öbek içinde bulunuyordu, ancak tutarlı olması için hepsi bir arada yapılması gereken N öbekleri olarak kodlandı.
DRY'nin arkasındaki fikir bence ama biraz daha genel. Bu sayının düşük olmasının nedeni, tipik bir gereksinimi uygulamak için N değişiklik yapması durumunda ve hatalı bir programcı olarak, ilk önce yalnızca N-1 veya N-2’nin doğru yapılmasını sağlamanızdır. 1 veya 2 böcek. O (N) programlama çabasının tepesinde, bu hataların keşfedilmesi, bulunması ve onarılması gerekir. Bu yüzden küçük N iyidir.
Bakım, kodun nasıl çalıştığını öğrenmemiş bir programcı için mutlaka okunabilir anlamına gelmez. N'yi optimize etmek, programcılar için bir öğrenme eğrisi yaratan bazı şeyler yapmayı gerektirebilir.
İşte bir örnek.
Yardımcı olan şey, programcının gelecekteki değişiklikleri öngörmeye çalışması ve programın yorumunda nasıl yapılır talimatları bırakmasıdır.
N yeterince azaldığında (optimum değer 1), kaynak kodunun etki alanına özgü bir dil (DSL) gibi daha fazla okuduğunu düşünüyorum. Program, sorunu “belirttiği” kadar çok “çözmez”, çünkü ideal olarak her gereksinim sadece tek bir kod parçası olarak yeniden düzenlenir.
Ne yazık ki, insanların bunu nasıl yapacağını öğrendiklerini göremiyorum. Aksine zihinsel isimlerin sınıf olması gerektiğini ve fiillerin yöntem haline geldiğini düşünüyor gibi görünüyorlar ve tek yapmaları gereken krank çevirmek. Bu benim deneyimim, 30 veya daha fazla N koduyla sonuçlanır.