Bunun benim kodum ya da iş arkadaşımın kodu olmadığını söyleyerek bunu daha önce belirteyim. Yıllar önce, şirketimiz daha küçükken, kapasitemize sahip olmadığımız için ihtiyaç duyduğumuz bazı projelerimiz vardı, bu yüzden dışarıdan tedarik edildiler. Şimdi, genel olarak dış kaynak kullanımına veya müteahhitlere karşı hiçbir şeyim yok, ancak ürettikleri kod temeli bir WTF kütlesidir. Olduğu söyleniyor, işe yarıyor (çoğunlukla), sanırım gördüğüm dış kaynaklı projelerin ilk% 10'unda.
Şirketimiz büyüdükçe evimizdeki gelişmeyi daha da arttırmaya çalıştık. Bu özel proje kucağıma düştü, ben de üzerinden geçtim, temizledim, testler ekledim, vb.
Çok tekrarlanan gördüğüm tek bir kalıp var ve o kadar akıl almaz derecede korkunç görünüyor ki, belki bir sebep olup olmadığını merak ettim ve göremiyorum. Model, genel metot veya üyelere sahip olmayan, sadece nesnenin tüm çalışmalarını yapan bir kamu kurucusu olan bir nesnedir.
Örneğin, (kod önemlidir, eğer önemliyse, ancak umarım bu daha genel bir soru olur):
public class Foo {
private int bar;
private String baz;
public Foo(File f) {
execute(f);
}
private void execute(File f) {
// FTP the file to some hardcoded location,
// or parse the file and commit to the database, or whatever
}
}
Merak ediyorsanız, bu kod türü genellikle aşağıdaki şekilde adlandırılır:
for(File f : someListOfFiles) {
new Foo(f);
}
Şimdi, uzun zaman önce döngüdeki somutlaştırılmış nesnelerin genellikle kötü bir fikir olduğu ve inşaatçıların minimum çalışma yapması gerektiği öğretildi. Bu koda baktığımızda, yapıcıyı bırakmanın ve execute
genel statik bir yöntem yapmanın daha iyi olacağı görülüyor .
Yükleniciye neden bu şekilde yapıldığını sordum ve aldığım yanıt "İsterseniz değiştirebiliriz" oldu. Hangi gerçekten yardımcı olmadı.
Her neyse, böyle bir şeyi, herhangi bir programlama dilinde yapmak için bir neden var mı, yoksa Daily WTF'ye başka bir sunum mu?
public static void main(string[] args)
ve objeleri duyan geliştiriciler tarafından yazılmış gibi bir araya geldi, sonra onları ezmeye çalıştı.