Saya suka konsep System.Tuple yang memungkinkan saya untuk mengembalikan beberapa parameter dalam satu panggilan fungsi tanpa membuat instance kelas baru, namun apakah ini menentang praktik pemrograman yang baik seperti Pola & Praktek Microsoft, Prinsip SOLID, dll.
Saya hanya mencoba mengukur seberapa bebas saya harus menggunakan fitur ini atau jika saya hanya menggunakannya dalam skenario tepi jika diperlukan.
.net
patterns-and-practices
Kyle Ballard
sumber
sumber
Jawaban:
Masalah dengan penggunaan
Tuple
adalah bahwa parameter tipe generik tidak menyampaikan makna.Agar mudah dibaca, Anda mungkin ingin mempertimbangkan untuk menggunakan kelas khusus atau bahkan tipe anonim dengan anggota yang disebutkan.
sumber
T1
,T2
dll. Tidak memberi tahu Anda apa artinya.GetTopTwoPercentages()
yang mengembalikan aTuple<decimal, decimal>
. Itu mungkin cukup jelas.Salah satu kualitas kode yang paling penting adalah keterbacaan. Jadi tanyakan pada diri sendiri:
Ketika saya (yaitu orang lain selain Anda) melihat metode tanda tangan, apakah saya tahu apa artinya masing-masing komponen
Tuple
miliki?Misalnya jika pasangan pelampung yang Anda kembalikan adalah seperangkat koordinat kutub, apakah ini jelas?
Ini jelas:
Ini menyesatkan (karena orang akan menganggap koordinat Cartesian):
Dan ini tanpa arti:
Jadi secara umum, Anda akan mengevaluasi kejelasan atas dasar per kasus dan refactor jika perlu. Jika Anda mewakili jenis data yang sama seperti
Tuple
di banyak tempat berbeda, maka membuat kelas pasti merupakan ide yang bagus.sumber