Saya telah menemukan prinsip - prinsip SOLID cukup berguna ketika berpikir tentang desain berorientasi objek.
Apakah ada seperangkat prinsip agnostik bahasa-yang serupa / setara yang dirancang untuk pemrograman fungsional?
Saya telah menemukan prinsip - prinsip SOLID cukup berguna ketika berpikir tentang desain berorientasi objek.
Apakah ada seperangkat prinsip agnostik bahasa-yang serupa / setara yang dirancang untuk pemrograman fungsional?
Jawaban:
Agak sulit untuk menemukan yang setara tetapi saya dapat mencoba:
SOLID ternyata juga merupakan ide bagus untuk ranah fungsional / imperatif juga.
SRP - 'Only do one thing' diambil dari pemrograman imperatif sejak awal. Memiliki fungsi yang kecil dan fokus adalah baik.
OCP - Memungkinkan Anda untuk mengubah perilaku tanpa mengubah kode adalah baik. Pemrograman fungsional menggunakan fungsi urutan yang lebih tinggi daripada warisan, tetapi prinsipnya tetap berlaku.
LSP - Mematuhi kontrak antarmuka sama baiknya dalam pemrograman fungsional seperti pada berorientasi objek. Jika fungsi sortir mengambil pembanding, maka Anda akan mengharapkan '0 sama dengan, kurang dari memberikan hasil negatif, lebih besar dari perilaku hasil positif'.
ISP - Sebagian besar bahasa fungsional masih memiliki struct. Menentukan set data terkecil yang diperlukan oleh suatu fungsi masih merupakan praktik yang baik. Membutuhkan antarmuka paling spesifik untuk data (mengapa menggunakan Daftar int ketika Pencacahan T juga berfungsi?) Masih merupakan praktik yang baik.
DIP - Menentukan parameter untuk suatu fungsi (atau fungsi urutan yang lebih tinggi untuk mengambilnya) daripada pengkodean keras fungsi untuk mendapatkan beberapa nilai sama baiknya dalam pemrograman fungsional seperti dalam berorientasi objek.
Dan bahkan ketika melakukan pemrograman berorientasi objek, banyak dari prinsip-prinsip ini berlaku untuk desain metode dalam objek juga.