Saya pernah membaca bahwa suatu metode harus memiliki nilai balik (dan transparan secara referensial), atau memiliki efek samping, tetapi tidak keduanya. Saya tidak dapat menemukan referensi untuk aturan ini, tetapi ingin belajar lebih banyak tentangnya.
Apa asal usul nasihat ini? Dari orang atau komunitas apa itu muncul?
Kredit ekstra: Apa manfaat yang diklaim dari mengikuti saran ini?
language-agnostic
history
side-effect
pure-function
Wayne Conrad
sumber
sumber
Jawaban:
Menurut Greg Young, ide ini berasal dari Bertrand Meyer : pemisahan Command-Query .
Dalam Domain Driven Design, ini mirip dengan Command-Query-Read Separation / Segregation (CQRS), sebagaimana dinamai oleh Greg Young.
Greg Young mengambil ide CQS dari Bertrand untuk memberi nama CQRS sebagaimana disebutkan oleh Martin Fowler dalam artikel CQRS ini
Manfaat
Baca artikel di tautan Martin Fowler untuk informasi lebih lanjut.
sumber
Saya tidak tahu dari mana asalnya, tetapi itu adalah saran yang bagus dan cukup mudah dipahami.
Setiap program yang dirancang dengan baik akan dipecah menjadi berbagai bagian, digabungkan dan disusun dengan berbagai cara. Semakin sulit untuk berpikir tentang apa yang dilakukan bagian tertentu, semakin sulit untuk memastikan bahwa program Anda akan bereaksi dengan cara yang dapat diprediksi.
Mengisolasi bagian-bagian yang menghasilkan efek samping membuat sisanya lebih mudah untuk dipikirkan, diuji, dan di-debug. Mengurangi jumlah efek samping di setiap bagian yang menghasilkan efek samping akan membuat bagian itu lebih mudah untuk dikerjakan dengan cara yang sama.
Jika Anda menguraikannya lebih jauh, nilai kembali adalah efek. Efek samping adalah efek. Suatu fungsi seharusnya hanya menghasilkan 1 efek (jika mungkin) karena semakin banyak input dan efek yang dimiliki fungsi, semakin besar kesulitan dalam berpikir tentang apa yang sebenarnya dilakukannya.
sumber
Salah satu manfaat memisahkan nilai kembali dari efek samping adalah menghilangkan nilai masalah potensial yang mungkin disebabkan oleh evaluasi hubung singkat .
sumber