bu yüzden bazı geliştiriciler / yöneticiler işlerin yapılması için daha az kod yazarken değeri görüyorlar;
Bu, asıl hedefin görüşünü kaybetme meselesidir.
Önemli olan gelişme için harcanan saatleri azaltmak . Bu, kod satırlarıyla değil, zamanla (veya eşdeğer bir çabayla) ölçülür.
Bu, otomobil üreticilerinin otomobillerini daha az vidayla yapmaları gerektiğini söylemek gibidir, çünkü her bir vidayı yerleştirmek için sıfır olmayan bir süre gerekir. Bu, bilyeli olarak doğru olsa da, bir otomobilin piyasa değeri kaç tane vida ile tanımlanmamıştır. ya da yok. Her şeyden önce, bir otomobilin performans göstermesi, emniyetli ve bakımı kolay olması gerekir.
Cevabın geri kalanı, temiz kodun zaman kazanmasına nasıl yol açabileceğinin örnekleridir.
Kerestecilik
Günlüğü olmayan bir uygulamayı (A) alın. Şimdi aynı A uygulaması olan ancak günlük kaydı olan B uygulamasını oluşturun. B her zaman daha fazla kod satırına sahip olacaktır ve bu nedenle daha fazla kod yazmanız gerekir.
Ancak sorunları ve hataları araştırmak ve neyin yanlış gittiğini bulmak için çok fazla zaman harcayacaktır.
Uygulama A için, geliştiriciler kodu okumaya devam eder ve sorunu sürekli olarak yeniden oluşturmak zorunda kalır ve sorunun kaynağını bulmak için kod boyunca ilerlerler. Bu, geliştiricinin yürütmenin başlangıcından sonuna, her kullanılan katmanda test etmesi gerektiği ve kullanılan her mantık parçasını gözlemlemesi gerektiği anlamına gelir.
Belki hemen bulduğu için şanslı, ama belki de cevap aramayı düşündüğü yerde olacak.
Mükemmel bir kütük kaydı varsayarak B uygulaması için bir geliştirici günlükleri gözlemler, hatalı bileşeni derhal tanımlayabilir ve şimdi nereye bakılacağını bilir.
Bu birkaç dakika, saat veya gün kazanılan bir mesele olabilir; Kod tabanının boyutuna ve karmaşıklığına bağlı olarak.
Regresyonlar
NEM ALMA dostu olmayan A uygulamasını kullanın.
KURU olan, ancak ek soyutlamalar nedeniyle daha fazla satıra ihtiyaç duyan B uygulamasını alın.
Mantığın değiştirilmesini gerektiren bir değişiklik isteği gönderilir.
B uygulaması için, geliştirici (benzersiz, paylaşılan) mantığı değişiklik isteğine göre değiştirir.
Uygulama A için, geliştirici, kullanıldığını hatırladığı yerde bu mantığın tüm örneklerini değiştirmelidir.
- Tüm örnekleri hatırlamayı başarırsa, yine de aynı değişikliği birkaç kez uygulamak zorunda kalacak.
- Tüm örnekleri hatırlamayı başaramazsa, şimdi kendisiyle çelişen tutarsız bir kod temeli ile uğraşıyorsunuz demektir. Geliştirici nadiren kullanılan bir kod parçasını unuttuysa, bu hata geleceğe kadar son kullanıcılar tarafından görülmeyebilir. O zaman, son kullanıcılar sorunun kaynağının ne olduğunu belirleyecek mi? Öyle olsa bile, geliştirici değişikliğin ne gerektirdiğini hatırlamayabilir ve bu unutulmuş mantık parçasının nasıl değiştirileceğini bulmak zorunda kalacaktır. Belki geliştirici o zamana kadar şirkette çalışmaz ve şimdi başkası her şeyi sıfırdan çözmelidir.
Bu çok büyük bir zaman kaybına neden olabilir. Sadece gelişimde değil, avlanmada ve böceği bulmada. Uygulama, geliştiricilerin kolayca anlayamayacağı şekilde kararsız davranmaya başlayabilir. Bu da uzun hata ayıklama oturumlarına yol açacaktır.
Geliştirici değişebilirliği
Geliştirici A oluşturulmuş bir uygulama A. Kod temiz değil ya da okunabilir değil, ancak bir cazibe işlevi görüyor ve üretimde çalışıyor. Şaşırtıcı olmayan bir şekilde, hiçbir belge de yok.
Geliştirici A, tatiller nedeniyle bir ay boyunca yoktur. Acil değişiklik talebi yapıldı. Dev A'nın geri dönmesi için üç hafta daha bekleyemez.
B geliştiricisinin bu değişikliği yapması gerekiyor. Şimdi kod kodunun tamamını okumalı, her şeyin nasıl çalıştığını, neden çalıştığını ve neyi başarmaya çalıştığını anlamalıdır . Bu yaş alır, ancak diyelim ki bunu üç hafta içinde yapabilir.
Aynı zamanda, B uygulamasının (B yarattığı) bir acil durumu var. Dev B meşgul, ancak kodunu bilmese bile Dev C kullanılabilir. Biz ne yaptık?
- Eğer B'yi A üzerinde çalışmaya devam edersek ve C'yi B'ye çalışmaya koyarsak, o zaman ne yaptıklarını bilmeyen iki geliştiricimiz olur ve iş, alt-basamakta gerçekleştirilir.
- B'yi A'dan uzaklaştırıp B'yi yapmasını ve şimdi A'yı C'ye koyarsak, geliştiricinin B'sinin (veya bunun önemli bir kısmının) tamamı atılabilir. Bu potansiyel olarak harcanan günler / haftalardır.
Dev A tatilinden geri dönüyor ve B'nin kodu anlamadığını görüyor ve bu yüzden de bunu çok yanlış uyguladı. Bu B'nin suçu değil, mevcut tüm kaynakları kullandığı için kaynak kodu yeterince okunamıyordu. A kodun okunabilirliğini düzeltmek için şimdi zaman harcamak zorunda mı?
Bu sorunların tümü ve daha fazlası, zaman kaybettiriyor . Evet, kısa vadede, temiz kod şimdi daha fazla çaba gerektiriyor , ancak kaçınılmaz hataların / değişikliklerin ele alınması gerektiğinde gelecekte kâr payı ödeyecek .
Yönetimin kısa bir görevin şimdiden gelecekte size birkaç uzun görev kazandıracağını anlaması gerekir. Planlamada başarısız olmak, başarısız olmayı planlamaktır.
Öyleyse, daha fazla LOC yazıldığı gerçeğini haklı çıkarmak için kullanabileceğim bazı argümanlar nelerdir?
Benim açıklamam, yönetime ne tercih edeceklerini sormak: üç ayda geliştirilebilecek 100KLOC kod temeli veya altı ay içinde geliştirilebilen 50KLOC kod temeli bir uygulama.
Belli ki daha kısa geliştirme süresini seçecekler , çünkü yönetim KLOC'yi umursamıyor . KLOC'a odaklanan yöneticiler, neyi yönetmeye çalıştıkları konusunda bilgisiz kalırken mikro yönetmenlik yapıyor.