Sahip olduğunuz bakış açısı kişisel deneyimlerle çarpıtılabilir. Bu, bireysel olarak doğru olan gerçeklerin kaygan bir eğimidir, ancak ortaya çıkan çıkarım, ilk bakışta doğru gibi görünse bile değildir.
- Altyapıların kapsamı küçük projelerden daha büyüktür.
- Kötü uygulamaların daha büyük kod tabanlarında başa çıkması oldukça zordur.
- Bir çerçeve oluşturmak (ortalama olarak) küçük bir projeyi oluşturmaktan daha yetenekli bir geliştirici gerektirir.
- Daha iyi geliştiriciler daha iyi uygulamaları (SOLID) takip eder.
- Sonuç olarak, çerçeveler, iyi uygulama için daha yüksek bir ihtiyaç ve daha yakından iyi uygulama ile deneyimli geliştiriciler tarafından oluşturulan olma eğilimindedir.
Bu, çerçevelerle ve daha küçük kütüphanelerle etkileşime girdiğinizde, etkileşime gireceğiniz iyi uygulama kodunun daha büyük çerçevelerde bulunacağı anlamına gelir.
Bu yanlışlık çok yaygındır, örneğin tedavi ettiğim her doktor kibirliydi. Bu nedenle tüm doktorların kibirli olduğu sonucuna varıyorum. Bu yanlışlıklar her zaman kişisel deneyimlere dayanarak battaniye çıkarımı yapmaktan muzdariptir .
Sizin durumunuzda, daha küçük kütüphanelerde değil, daha büyük çerçevelerde ağırlıklı olarak iyi uygulamalar deneyimlemiş olmanız mümkündür. Kişisel gözlemin yanlış değil, ancak fıkra niteliğinde bir kanıt ve evrensel olarak geçerli değil.
2 programlama modu - gereksinimler ve KISS (tipik programlama) aracılığıyla tam olarak ne isteniyorsa o kadar fazla veya daha az yaratma veya diğer geliştiricilerin ihtiyaç duyabileceği esnekliği sağlayan çok genel ve tekrar kullanılabilir bir mantık, hizmetler vb. Oluşturma (çerçeve programlama)
Bunu burada bir şekilde onaylıyorsun. Bir çerçevenin ne olduğunu düşünün. Bu bir uygulama değil. Başkalarının her türlü başvuruyu yapmak için kullanabileceği genelleştirilmiş bir "şablon" dur. Mantıksal olarak, bu, herkes tarafından kullanılabilir olması için bir çerçevenin çok daha soyutlanmış bir mantıkta inşa edildiği anlamına gelir.
Çerçeve üreticileri kısayol alamazlar çünkü sonraki uygulamaların gerekliliklerinin ne olduğunu bile bilmiyorlar. Bir çerçeve oluşturmak, kodlarını başkaları için kullanılabilir hale getirmek için doğal olarak teşvik eder.
Bununla birlikte, uygulama geliştiricileri, bir ürünü teslim etmeye odaklandıkları için mantıksal verimden ödün verme yeteneğine sahiptir. Temel amacı, kodun çalışması değil, kullanıcının deneyimidir.
Bir çerçeve için, son kullanıcı kodunuzla etkileşime girecek olan başka bir geliştiricidir. Kodunuzun kalitesi son kullanıcınız için önemlidir.
Bir uygulama için, son kullanıcı kodunuzla etkileşime girmeyen geliştirici değildir. Kodunuzun kalitesi onlar için önemli değildir.
İşte bu nedenle bir geliştirme ekibinin mimarlarının çoğu zaman iyi uygulamanın uygulayıcıları olarak hareket etmesinin nedeni budur. Ürünün tesliminden bir adım kaldılar; bu, uygulamanın kendisinin teslimine odaklanmak yerine koda objektif olarak bakma eğiliminde oldukları anlamına gelir.
Bu soyutlama giriş noktalarını eklerseniz, kullanıcıların gereksinimlerini gerçekten karşılıyor musunuz ya da gelecekteki eklemeleri kolaylaştırmak için mevcut çerçevenizin ve teknoloji yığınının üstüne bir çerçeve oluşturuyor musunuz? Hangi durumda müşterinin veya geliştiricinin çıkarlarına hizmet ediyorsunuz?
Bu ilginç bir nokta ve (benim tecrübeme göre) insanların hala iyi uygulamalardan kaçınmaya haklı göstermeye çalışmasının temel nedeni.
Aşağıdaki hususları özetlemek için: İyi uygulamaların atlanması ancak, gereksinimleriniz (şu anda bilindiği gibi) değiştirilemezse haklı gösterilebilir ve kod tabanında hiçbir değişiklik / ekleme yapılmayacaktır. Spoiler uyarısı: Nadiren böyle olmaz.
Örneğin, belirli bir dosyayı işlemek için 5 dakikalık bir konsol uygulaması yazdığımda iyi bir uygulama kullanmıyorum. Çünkü sadece bugün uygulamayı kullanacağım ve gelecekte güncellenmesi gerekmeyecek (tekrar ihtiyacım olursa farklı bir uygulama yazmak daha kolay olur).
Diyelim ki 4 hafta içinde bir uygulama oluşturabilir ve 6 hafta içinde uygun bir şekilde oluşturabilirsiniz. İlk bakışta, ayakkabılı bina daha iyi görünüyor. Müşteri uygulamalarını daha hızlı alır ve şirketin geliştirici ücretlerine daha az zaman harcaması gerekir. Kazan / kazan, tamam mı?
Ancak, bu önceden düşünmeden verilen bir karardır. Kod temeli kalitesi nedeniyle, ayakkabılı yapıya yapılan değişikliklerde büyük bir değişiklik yapılması 2 hafta sürecek ve aynı yapıya uygun yapılanma yapı değişikliği 1 hafta sürecektir. Gelecekte ortaya çıkan bu değişikliklerin çoğu olabilir.
Ayrıca, beklenmedik bir şekilde yapılan değişikliklerde, başlangıçta kurban kodlu kod tabanlarında düşündüğünüzden daha fazla iş gerektirme eğilimi vardır , bu nedenle gelişim zamanınızı iki yerine üç haftaya kadar zorlayabilirsiniz.
Ve daha sonra böcek aramak için zaman harcamak gibi bir eğilim var. Bu genellikle, zaman kısıtlamaları ya da uygulama isteksizliği nedeniyle kayıtsız kalmanın dikkate alınmadığı projelerde söz konusudur.
Hatta büyük bir güncelleme olması gerekmez. Mevcut işverenimde, hızlı ve kirli inşa edilmiş ve gereksinimlerdeki bir yanlış anlaşılmadan dolayı en ufak bir hata / değişiklik yapılması gerektiğinde, modülden sonra refaktör modülüne ihtiyaç duyulması zincir reaksiyonuna yol açan birkaç proje gördüm. . Bu projelerden bazıları ilk versiyonlarını piyasaya sürmeden önce çöktü (ve sürdürülemez bir karmaşayı geride bıraktı).
Kısayol kararları (hızlı ve kirli programlama) yalnızca gereksinimlerin tam olarak doğru olduğunu ve hiçbir zaman değişmesi gerekmeyeceğinin kesin olarak garanti edilmesi durumunda yararlıdır . Tecrübelerime göre, bunun doğru olduğu bir projeyle hiç karşılaşmadım.
Ekstra zamanı iyi uygulamalara yatırmak geleceğe yatırım yapmaktır. Gelecekteki hatalar ve değişiklikler, mevcut kod temeli iyi uygulamalara dayandığında çok daha kolay olacaktır. Sadece iki veya üç değişiklik yapıldıktan sonra zaten temettü ödeyecek.