Pek çok açıdan Akıcı arayüzler fikrinden gerçekten hoşlanıyorum, ancak C # 'nın (başlatıcılar, lambdalar, adlandırılmış parametreler) tüm modern özellikleri ile kendimi düşündüğümü buluyorum, "buna değer mi?" Ve "Bu doğru kalıp mı? kullanılır?". Birisi bana, kabul edilen bir uygulama değilse, en azından Fluent modelini ne zaman kullanacağına ilişkin kendi deneyimlerini veya karar matrisini verebilir mi?
Sonuç:
Şu ana kadarki cevaplardan bazı iyi kurallar:
- Akıcı arayüzler, ayarlayıcılardan daha fazla eyleminiz olduğunda çok yardımcı olur, çünkü çağrılar bağlam geçişinden daha fazla yararlanır.
- Akıcı ara yüzler, tek kullanım araçları değil, api üstünde bir katman olarak düşünülmelidir.
- Lambdalar, başlatıcılar ve adlandırılmış parametreler gibi modern özellikler akıcı bir arayüzün daha kolay olması için el ele çalışabilir.
Modern özellikler derken neye ihtiyacım olduğunu hissettiren bir örnek. Örneğin, bir (belki de zayıf örnek) atın. Aşağıdaki gibi bir Çalışan oluşturmamı sağlayan Akıcı bir arayüz:
Employees.CreateNew().WithFirstName("Peter")
.WithLastName("Gibbons")
.WithManager()
.WithFirstName("Bill")
.WithLastName("Lumbergh")
.WithTitle("Manager")
.WithDepartment("Y2K");
Başlatıcılarla kolayca yazılabilir:
Employees.Add(new Employee()
{
FirstName = "Peter",
LastName = "Gibbons",
Manager = new Employee()
{
FirstName = "Bill",
LastName = "Lumbergh",
Title = "Manager",
Department = "Y2K"
}
});
Bu örnekte yapıcılarda adlandırılmış parametreler de kullanabilirdim.