Dalam banyak hal saya benar-benar menyukai gagasan antarmuka Fluent, tetapi dengan semua fitur modern C # (inisialisasi, lambdas, parameter bernama) Saya mendapati diri saya berpikir, "apakah itu layak?", Dan "Apakah ini pola yang tepat untuk menggunakan?". Adakah yang bisa memberi saya, jika bukan praktik yang diterima, setidaknya pengalaman mereka sendiri atau matriks keputusan tentang kapan harus menggunakan pola Fasih?
Kesimpulan:
Beberapa aturan praktis yang baik dari jawaban sejauh ini:
- Antarmuka yang lancar sangat membantu ketika Anda memiliki lebih banyak tindakan daripada setter, karena panggilan mendapat manfaat lebih banyak dari pass-through konteks.
- Antarmuka yang lancar harus dianggap sebagai lapisan di atas api, bukan satu-satunya cara penggunaan.
- Fitur-fitur modern seperti lambdas, inisialisasi, dan parameter bernama, dapat bekerja bahu-membahu untuk membuat antarmuka yang lancar lebih ramah.
Berikut adalah contoh dari apa yang saya maksudkan dengan fitur-fitur modern yang membuatnya merasa kurang dibutuhkan. Ambil contoh, (mungkin contoh buruk) antarmuka Fasih yang memungkinkan saya untuk membuat Karyawan seperti:
Employees.CreateNew().WithFirstName("Peter")
.WithLastName("Gibbons")
.WithManager()
.WithFirstName("Bill")
.WithLastName("Lumbergh")
.WithTitle("Manager")
.WithDepartment("Y2K");
Dapat dengan mudah ditulis dengan inisialisasi seperti:
Employees.Add(new Employee()
{
FirstName = "Peter",
LastName = "Gibbons",
Manager = new Employee()
{
FirstName = "Bill",
LastName = "Lumbergh",
Title = "Manager",
Department = "Y2K"
}
});
Saya juga bisa menggunakan parameter bernama dalam konstruktor dalam contoh ini.