Kodunuz geliştiriciler tarafından nasıl kullanılıyor? Başka bir deyişle, hangi argümanların ve nasıl kullanılması gerektiğini belirlemek için tam olarak ne yaparlar?
Kodunuzdan otomatik olarak oluşturulan belgelere güveniyorlarsa ve jeneratörün ne yapacağına dair hiçbir fikri yoksa **kwargs
, bu gerçekten sorunludur. Argüman listesini ve bunların dokümantasyondaki anlamlarını bulmak yerine, “ bazı argümanlar alır” belirsizleri dışında kesinlikle hiçbir bilgileri yoktur .
Bu sorun muhtemelen, yöntemi el ile belgeleyerek ve otomatik olarak oluşturulan belgeleri değiştirerek çözülebilir. Bu, yöntemin uygulayıcısı tarafından fazladan çalışma gerektirir, ancak kodun (ve belgelerinin) yazıldığından çok daha sık okunduğunu unutmayın.
Kod kendi dokümanlarıysa, yöntemi kullanan geliştiricilerin **kwargs
iki ek adıma ihtiyacı vardır: aslında aradığı diğer yöntemi bulmak için sadece yöntemin imzasına değil, aynı zamanda gerçek uygulamasına da bakmaları gerekir. Sonra nihayet aradıklarını bulmak için bu diğer yönteme gitmeleri gerekiyor.
Bu çok fazla çaba gerektirmez, ancak yine de çaba tekrar tekrar tekrarlanmalıdır. En kötü yanı, dokümantasyon ekleyerek onlara yardımcı olamamanızdır: yönteminizi yorumluyorsanız, gerçek argümanları listelerseniz, yöntem çağrılarınızın sonraki sürümünün farklı argümanlara sahip olma riski yüksektir ve dokümantasyonunuz modası geçmiş olmalı, çünkü kimse güncel tutulması gerektiğini hatırlamayacak.
Benim tavsiyem **kwargs
sadece kapsamı kısıtlı yöntemlere güvenmektir . _
Sınıfta birkaç yerde kullanılan özel yöntemler (ve Python bağlamında özel olarak ifade etmek gerekirse), örneğin iyi adaylardır. Öte yandan, kod tabanı üzerindeki düzinelerce sınıf tarafından kullanılan yöntemler çok kötü adaylardır.
Sonuçta, yazdığınız yöntem içinde çağırdığınız bir yöntemin argümanlarını yeniden yazmak çok fazla çaba sarf etmemelidir. Umarım, çoğu yöntem altı ila sekizden fazla argüman almaz ve eğer yaparlarsa, kodu yeniden düzenlememeniz gerekip gerekmediğini kendinize sorun. Her durumda:
Metodunuzda argümanları açık yapmak çok çaba gerektirmez,
Daha sonra, argümanları yine de doğrulamak isteyebilirsiniz (argümanları açık hale getirmek için sadece bu noktaya güvenirseniz, YAGNI'yi ihlal edersiniz).