Asıl soru, meta-programlamanın iyi olup olmadığı değil, takımdaki diğerlerinden daha iyi olup olmadığına ilişkin değil, bu yüzden burada nasıl gördüğüme dair birkaç tartışmalı nokta var.
Geçenlerde daha büyük bir takımda çalıştığım yeni bir işe taşındım ve bu [meta-programlama] bazı meslektaşlarımı endişelendiriyor, çünkü anlamadılar.
Onlardan daha iyi olduğun için endişeleniyorlar. Bu iyi. Yeni uzman olacaksın. Onların statüko dünyasını daha yeni yok ettin.
Her zaman dilin potansiyelinden tam olarak yararlanmaya çalışıyorum, ancak meslektaşlarımdan bazıları (hepsi değil) bunu bir risk olarak görüyor (bazıları yaklaşımı memnuniyetle karşılıyor).
Elbette, hiç kimse diğerlerinden daha az yetenekli olmaktan hoşlanmaz, bu yüzden onlar için çok karmaşık teknikleri kullanmanızı engellemeye çalışıyorlar. Ya anlayamıyorlar ya da gitmiyorlar, çünkü şimdi kendilerini güvende hissediyorlar.
Takımda başka kimsenin anlayamadığı bir kod yazmanın bir sorun olduğunu kabul ediyorum.
Yapmıyorum. Sanırım uzmanlığını gösteriyor.
Sorum şu, kim haklı, ne yapmalıyım?
Yazabildiğiniz en iyi kodu yazmak için tüm becerilerinizi kullanmalı ve anlamayanlara bakmamalısınız. Aksi takdirde seviyelerinde sıkışıp kalacaksınız ve sıradan bir kodlayıcı olacaksınız. Diğerlerinden daha iyi olmak için iyi bir şey ve onlardan daha iyi olmak için gayret etmek iyi bir şey. Yeni bir şey kullanmayacağınız ya da farklı şeyler yapmazsanız, asla yeni bir deneyim edinmeyeceksiniz.
Reddedileceğimi biliyorum, ama öyle gözüküyor. Takımdaki diğerlerinden daha iyi olmak suç değil ve yeteneklerini kullanmak suç değil. Sadece herkes itiraf etmekten korkuyor ... çünkü onlar yeteneksiz taraftalar ve yeni adamın aniden yapamadıkları bir şeyi yapabilmesinden nefret ediyorlar. Zeki olsaydı, sizden yardım ve tavsiye ister ve kodunuzu anlaşılmaz olduğu için eleştirmezlerdi.
DÜZENLE
Bu soru hakkında çok fazla kafa karışıklığı var gibi görünüyor. Yorumlar gösteriyor ki birçok kişi bunun genel kod okunabilirliği ile ilgili olduğunu düşünüyor. Hayır değil. Belli dil özelliklerinin / yapılarının yasaklanıp yasaklanmaması gerektiği, çünkü bazı ekip üyeleri bunları anlamıyor.
Cevabım hayır . Yasaklanmamalılar. Bir şeyi yasaklamak istiyorsan, bunu nasıl yaparsın? Takım üyelerinizin neler yapabileceğini ve neler yapamayacağını bulmak için bir tür anket hazırlamanız gerekir - ya da tüm dil özelliklerinin bir yerde yararlı olduğunu düşündüğümden öğrenmek istemiyorum, bu yüzden onları tanımak ve kullanabilmek her zaman iyi ve ne kadar çok şey bilirseniz o kadar iyi kod yazabilirsiniz. Hangi özelliklerin başlangıç, ara veya ileri özellikler olduğunu belirlemek için bir skalaya da ihtiyacınız olacaktır.
Bu kadar kısıtlamaların ne kadar saçma olduğunu göstermek için, gerçekten basit bir örnek alalım: bir yazılım mühendisi olarak işe alınacaksınız ancak gelecekteki patronunuz size do/while
döngü kullanmanıza izin verilmeyeceğini çünkü birkaç kişi olduğu için onları daha önce hiç kullanmayan ve gitmeyecek olan ekip, her zaman for
döngüleri kullandıkları için do/while
döngüleri kafa karıştırıcı buluyorlardı .
Şimdi bunun aptalca ve delice olduğunu düşünüyorsun, değil mi? Ancak diğer özellikleri de yasaklıyor. Bazı insanlar onları kullanabilir, bazıları onları öğrenmek istemez.
Aynı şeyi çok daha az çabayla yapmanıza izin veren bir şey olduğunu ve bununla birlikte çok daha okunaklı bir sonuç elde edebileceğinizi biliyorsanız neden daha kötü kodlar üretmelisiniz?
Ve sadece temel dil özelliklerini veya gelişmiş özelliklerini kullanmanızın bir önemi yoktur, ikisini de aynı derecede anlaşılmaz ve anlaşılmaz bir kod üretmek için kullanabilirsiniz, bu yüzden bu tamamen farklı bir konudur.