Cümlenin etrafına atıldığını duydum ve bana argümanlar tamamen çılgınca geliyor (burada samanlık çekiyorsam özür dilerim, Niyetim değil), genellikle şu satırlarda bir şeyler gider:
Genel davanın ne olduğunu bilmeden soyutlama yapmak istemezsiniz, aksi takdirde (1) soyutlamalarınıza ait olmayan şeyleri koyuyor veya (2) önemli şeyleri atlıyor olabilirsiniz.
(1) Bana göre bu programcı yeterince pragmatik değil gibi, son programda olmayan şeylerin var olacağı varsayımlarında bulundular, bu yüzden düşük düzeyde bir soyutlama ile çalışıyorlar, sorun değil erken soyutlama, bu erken betonlaşmadır.
(2) Önemli şeyleri atlamak bir şeydir, daha sonra önemli olduğu ortaya çıkan spesifikasyondan tamamen bir şey atlanabilir, bunun çözümü sizi bulduğunuzda kendi betonunuzu ve atık kaynaklarınızı ortaya çıkarmak değildir. yanlış tahmin, istemciden daha fazla bilgi almak için.
Her zaman soyutlamalardan betonlara kadar çalışmalıyız, çünkü bu bir şeyleri yapmanın en pragmatik yolu, tersi değil.
Bunu yapmazsak, müşterileri yanlış anlama ve değiştirilmesi gereken şeyler yaratma riskiyle karşı karşıya kalırız, ancak sadece müşterilerin kendi dillerinde tanımladıkları soyutlamaları yaparsak, bu riske asla ulaşmayız (en azından hiçbir şekilde karanlıkta bazı somutluklarla bir çekim), evet müşteriler ayrıntılarla ilgili fikirlerini değiştirebilirler, ancak aslında istediklerini iletmek için kullandıkları soyutlamalar hala geçerli olma eğilimindedir.
İşte bir örnek, bir müşterinin bir ürün torbalama robotu oluşturmanızı istediğini varsayalım:
public abstract class BaggingRobot() {
private Collection<Item> items;
public abstract void bag(Item item);
}
Müşterinin bilmediğimiz şeylerle daha fazla ayrıntıya girmeden kullandığı soyutlamalardan bir şeyler inşa ediyoruz. Bu son derece esnektir, gerçekte torbalamanın nasıl uygulandığını varsaymak daha erken olurken, "erken soyutlama" olarak adlandırıldığını gördüm. . Sınıfımı güncellemek için tek ihtiyacım olan imzayı değiştirmek, ancak aşağıdan yukarıya başlayan biri için büyük bir sistem revizyonu gerektirebilir.
Erken soyutlama diye bir şey yoktur, sadece erken somutlaşma vardır. Bu bildiride yanlış olan ne? Akıl yürütmemdeki kusurlar nerede? Teşekkürler.