Apakah dekomposisi fungsional benar-benar antipattern?

9

Sementara saya membaca Anti-pola terburuk yang pernah Anda temui , saya mengklik tautan di pos ini untuk mendarat di situs web tentang anti-pola.

Dan halaman http://sourcemaking.com/antipatterns/functional-decomposition membuat saya bertanya-tanya.

Seberapa buruk anti-pola ini, dan apakah itu anti-pola sama sekali? Karena, meskipun saya melakukan sebagian besar pemrograman OOP saat ini, saya masih merasakan keengganan terhadap OOP murni - semua bahasa seperti Java, dan juga praktik desain yang mereka bawa. Dan saya kira, saya masih memiliki beberapa ciri pemrograman fungsional sementara saya menulis kode.

Dan ini memunculkan pertanyaan, apakah saya melakukan kesalahan dengan tetap berpegang pada gaya fungsional OOP +, atau apakah itu biasa dalam industri dan sebenarnya tidak seburuk itu.

Apa yang saya tahu dari pengalaman, adalah bahwa gaya fungsional OOP + tidak sepenuhnya kompatibel dengan pengembang OOP murni. Tetapi pada saat yang sama, sementara pengembang OOP memiliki masalah dengan pengembangan fungsional OOP +, tandingannya adalah bahwa solusi OOP cukup sering direkayasa berlebihan dan terlalu sulit untuk digunakan, dan dari pengalaman saya, bahkan tidak sedikit pun lebih mudah, dan sebenarnya memperkenalkan beberapa blind spot untuk menyembunyikan bug yang sangat serius.

Jadi, meskipun saya berdiskusi dengan kolega saya tentang topik-topik ini, saya sampai pada kesimpulan bahwa tidak ada cara yang benar-benar sempurna. Dan saya masih memiliki pertanyaan yang belum terjawab.

Masalah OOP juga diperkuat oleh tautan dari pos lain di utas yang sama. Tautan tersebut melihat gaya Java OOP http://chaosinmotion.com/blog/?p=622

Jadi apa sikap umum terhadap pencampuran pemrograman fungsional dengan OOP? Dan apa keseimbangan yang harus dicapai oleh pengembang?

Coder
sumber
1
Judul dan badan pertanyaan Anda mengajukan beberapa pertanyaan yang terkait, tetapi sama sekali berbeda, beberapa di antaranya terdengar retoris. Saya mengalami kesulitan mencari tahu apa yang sebenarnya Anda tanyakan di sini.
blueberryfields
Maaf, saya bukan penutur asli, dan saya kesulitan memikirkan judul yang lebih baik. Perbaikan dipersilahkan.
Coder
1
Pertanyaannya jelas. Jangan dengarkan blueberryfields.
jojo
5
Jelas, bagi para fanatik OOP, apa pun yang berada di luar jangkauan OOP adalah "antipattern". Faktanya, antipattern yang paling buruk adalah penggunaan OOP yang terlalu banyak.
SK-logic

Jawaban:

8

Pertama-tama, pemrograman fungsional saat ini adalah semua yang dilakukan anak-anak keren. Anti-Pattern benar-benar berbicara tentang pemrograman prosedural (akan lebih jelas jika tekniknya disebut "dekomposisi prosedural" tetapi tidak), dan saya pikir Anda juga demikian.

Anti-pola berbicara tentang cara-cara buruk menulis kode prosedural dalam bahasa berorientasi objek, halaman lain berbicara tentang buruk adalah menulis Java - sebenarnya tidak ada bahasa yang begitu fantastis sehingga Anda dapat melakukan semua yang ingin Anda lakukan tetapi tidak bisa tulis kode yang salah.

Dalam prakteknya, saya telah melihat sedikit lebih banyak rekayasa dalam kode berorientasi objek daripada prosedural - sedikit kurang di bawah teknik dan sedikit lebih dari rekayasa.

Dalam kasus Anda, itu akan tergantung pada spesifik, dan saya tidak yakin apa yang sebenarnya Anda lakukan dalam gaya prosedural. Apakah benar, jelas, dapat diuji, mudah dimodifikasi, dll? Kriteria untuk menilai kode harus didasarkan pada keprihatinan praktis seperti itu, dan bukan pada kemurnian satu gaya tertentu. Kedengarannya seperti dalam kasus Anda orang yang masuk akal dan berpengetahuan bisa tidak setuju (dan lakukan!) Tentang masalah tersebut, dan jika demikian mungkin tidak ada cara obyektif untuk menentukan kebenaran masalah tersebut.

psr
sumber
2
Jawaban Anda dimulai dengan baik, tetapi kemudian Anda menjadi tidak jelas dan tidak berkomitmen. Saya membaca artikel yang terkait dengan dekomposisi fungsional OP, dan itu adalah antipattern yang mengerikan, dipraktekkan oleh pengembang prosedural mencoba untuk menyemir gaya pemrograman mereka menjadi paradigma berorientasi objek. Jadi tidak, itu tidak tergantung pada spesifik.
Robert Harvey
tapi saya tidak berpikir Coder percaya bahwa anti-pola adalah apa yang telah dia lakukan secara pribadi (saya juga tidak punya alasan khusus untuk meragukannya). Pertanyaannya (salah satunya, benar-benar) adalah apakah pemrograman gaya prosedural bisa OK dalam bahasa objek (mungkin lebih seperti dalam fungsi Java statis yang ditunjukkan dalam blog Java rant). Dan itu tergantung pada spesifik dari apa yang dikodekannya. (Saya melakukan pengantar dengan "Dalam kasus Anda"). Saya pikir Anda membaca pertanyaan pada dasarnya "Haruskah saya memprogram seperti dalam anti-pola?", Yang jelas akan menjadi buruk - tetapi Coder tahu itu, saya pikir.
psr
4
Bahkan dengan cara ini - dekomposisi prosedural adalah teknik yang valid, dan menganggapnya tidak sesuai dengan OOP adalah fanatisme murni. Biarkan semua bunga mekar. Semua teknik itu valid jika digunakan dengan bijak. Berpegang teguh pada satu metodologi tertentu sama sekali tidak bijaksana.
SK-logic