IsAdmin
Bir kullanıcının yönetici olup olmadığını kontrol eden bir fonksiyonum olduğunu varsayalım . Ayrıca yönetici kontrolünün kullanıcı kimliği, adı ve şifresini bir tür kuralla eşleştirerek (önemli değil) yaptığını varsayalım.
Kafamda bunun için iki olası fonksiyon imzası vardır:
public bool IsAdmin(User user);
public bool IsAdmin(int id, string name, string password);
En sık ikinci tür imzaya gidiyorum ve şöyle düşünüyorum:
- İşlev imzası okuyucuya daha fazla bilgi verir
- Fonksiyonun içindeki mantık
User
sınıf hakkında bilgi sahibi olmak zorunda değildir. - Genellikle fonksiyon içinde biraz daha az kodla sonuçlanır.
Ancak bazen bu yaklaşımı sorgularım ve bir noktada bunun hantal olacağının farkındayım. Örneğin, bir işlev on farklı nesne alanı arasında ortaya çıkan bir boole eşleşirse, açıkça tüm nesneyi gönderirdim. Fakat bunun gibi sade bir örnek dışında gerçek nesneyi geçmek için bir neden göremiyorum.
Her iki tarz için herhangi bir tartışmanın yanı sıra önerebileceğiniz genel gözlemleri de takdir ediyorum.
Hem nesne yönelimli hem de işlevsel stiller programlıyorum, bu yüzden soru tüm deyimlerle ilgili olarak görülmelidir.