Bir yıldan biraz az bir süredir programlama yapıyorum ve sistemler / uygulamalar, web uygulamaları ve işletmeler / kuruluşlar için komut dosyaları yazma konusunda biraz deneyimim var. Ancak, hiç yapmadığım bir şey Django, Rails veya Zend gibi bir çerçeveyle çalışmak.
Django çerçevesine baktığımda, çerçevelerde ne kadar soyutlandığını biraz hayal kırıklığına uğrattım. DRY'nin ve minimum kodun temel hedeflerini anlıyorum, ancak farklı modüllere bu aşırı bağımlılık ve çekirdek fonksiyonların yoğun soyutlanması şöyle hissettiriyor:
Modüllerin / çerçevelerin sürekli değişen yapısı nedeniyle programların çok hızlı bir şekilde tarihlenmesini sağlar,
Kullanılabilir çerçeve ve modüllerin bolluğu ve tüm özniteliklerinin nedeni ile kodun anlaşılmasını zorlaştırır,
Tüm belgeleri okumadığınız sürece kodu daha az mantıklı hale getirir; yani, bazı liste kavramalarını ve koşullu mantığı okuyabilir ve bir programın ne yaptığını anlayabilirim; verilen bir modül; ve:
Çerçeveler arasında geçiş yapmayı zor ve sıkıcı hale getirir. Diller arasında geçiş yapmak zaten bir zorluktur, ancak temel işlevleri / felsefesi hakkında yeterince güçlü bir anlayışa sahipseniz yönetilebilir. Çerçeveler arasında geçiş yapmak daha ziyade ezberleme meselesi gibi görünmektedir, ki bu bir şekilde bu çerçevelerin ortadan kaldırılması için tasarlanan verimsizliği teşvik etmektedir.
MySQL sorgusu kadar basit bir şeyin üstüne 50 katmanlık soyutlama koymamız gerekiyor mu? Neden hazırlanan ifadelerin / giriş testlerinin kullanıldığı PHP'nin PDO arayüzü gibi bir şey kullanmıyorsunuz ama evrensel olarak anlaşılabilir SQL sorgusu hala bu fonksiyonun bir parçası.
Bu soyutlamalar gerçekten yararlı mı? Özellik kabarcığı onları işe yaramaz hale getirmiyor, uygulamaları bir çerçeve kullanmadan yazılmış benzer uygulamalara göre daha zorlaştırıyor mu?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- Öncelikle, iyi bir çerçeve bir soyutlama katmanıdır (dahili olarak 2 veya 3 olabilir) ve ikincisi “bir MySQL sorgusu kadar basit bir şey” aslında iyi bir soyutlama içerir. Tercüme ettiğiniz dilden yürüttüğünüz sorgu , veritabanı sunucusuna yaptıktan sonra bile , veritabanları üzerinden motorlar üzerinden dosya sistemleri üzerinden fiziksel depolama üzerine sorgularınız bulunmaktadır. Kısacası: evet, soyutlamalara ihtiyacımız var, çünkü kafalarımızı patlatmaktan alıkoyuyorlar.
as a relatively inexperienced programmer
- yazılım ne kadar uzun olursa, tekerleği yeniden icat etmek için o kadar az zaman harcamak ve evde sevdiğiniz şeyleri yapmak için daha fazla zaman harcamanızı takdir edersiniz.