Jika Anda memiliki kolega yang tidak memahami manfaat Separation of Concerns, atau tidak cukup memahaminya untuk diterapkan secara konsisten dalam pekerjaan sehari-hari mereka, bagaimana Anda menjelaskannya kepada mereka?
code-quality
object-oriented
Marcie
sumber
sumber
Jawaban:
Bayangkan Anda memiliki program yang telah dirilis. Seorang pelanggan datang dan menawarkan untuk membayar Anda untuk peningkatan ke salah satu fitur-fiturnya. Untuk mendapatkan uang, Anda perlu mengubah program Anda untuk menambahkan fitur baru. Beberapa hal yang akan mempengaruhi apa margin keuntungan Anda adalah:
Pemisahan masalah membantu Anda mendapatkan lebih banyak jawaban positif untuk pertanyaan-pertanyaan ini.
sumber
Lihatlah rumah sakit, dan pikirkan semua peran berbeda yang terlibat dalam memberikan perawatan kepada pasien: perawat, dokter, asisten medis, teknisi, staf administrasi, kafetaria, dll.
Apakah ada satu orang yang tahu bagaimana semua dari orang-orang mendapatkan pekerjaan mereka dilakukan? Tidak, karena itu akan sangat luar biasa. Mereka harus memisahkan tanggung jawab yang berbeda menjadi peran yang berbeda dan titik kontak antara peran tersebut sangat spesifik.
sumber
Jika dia bekerja di kantor, ambil sebagai contoh, jelaskan peran masing-masing staf di kantor itu, dan tanyakan padanya, apa yang akan terjadi, jika staf itu tidak dibagi sesuai dengan pekerjaan mereka?
sumber
Saya akan melihat bagaimana dia gagal menerapkan SoC dalam kode / desainnya dan mengubahnya menjadi contoh dunia nyata yang bisa dia hubungkan dengan dan itu jelas tidak diinginkan.
Misalnya, jika ia memiliki kelas di mana klien perlu menyediakan beberapa informasi yang tidak relevan untuk klien tersebut, maka saya akan menggunakan analogi toko roti di mana Anda harus membawa biji-bijian dan ragi sendiri jika Anda ingin membeli sebuah roti.
sumber
Salah satu contoh mungkin pengembang html mungkin ingin memisahkan html, css dan javascript menjadi file terpisah. Dengan cara ini Anda dapat mengubah tampilan dan nuansa dari sesuatu yang dikatakan hanya dengan memodifikasi css atau perilaku sesuatu dengan mengubah file javascript yang dimuat secara terpisah. Jika Anda memiliki situs yang responsif atau adaptif, paradigma ini berfungsi dengan baik karena Anda dapat memuat css atau javascript yang berbeda tergantung pada viewport pengguna atau agen pengguna. Namun jika Anda memodifikasi html atau templat, kemungkinan css atau javascript bisa pecah. Kekhawatiran terpisah ini juga bisa tergantung.
Pendekatan lain adalah menggabungkan semua javascript dan html css Anda ke dalam sekelompok komponen atau modul. Ini berarti bahwa Anda dapat membuat perubahan pada satu modul dan itu seharusnya tidak mempengaruhi komponen atau modul lain pada halaman yang berjalan di sampingnya yang tidak terkait. Di sini file css, js dan html digabung menjadi satu komponen yang dapat diuji unit. Jadi pemisahan kekhawatiran datang dalam bentuk komponen atom individu yang dapat diuji unit daripada pemisahan elemen markup, gaya dan perilaku. Pendekatan kedua ini lebih cocok untuk membuat aplikasi web yang lebih kompleks.
sunting. Karena saya telah menerima tanggapan negatif terhadap komentar ini, saya pikir saya akan mengunjungi kembali dan mencoba untuk memenuhi syarat beberapa pov saya. Sayangnya umpan balik apa pun di sini tidak terlalu konstruktif, tetapi saya memang melihat diskusi menarik di tempat lain yang membahas React, teknologi panas saat ini dalam pengembangan web, contoh dunia nyata, dan bertanya apakah itu memecah masalah atau khususnya jika itu memecah salah satu prinsip dari metodologi desain berorientasi objek SOLID Feather.
Perspektif Pengembang JavaScript teknis
Perspektif Desainer UX / UI
Perspektif Tim
https://hashnode.com/post/does-react-really-violate-separation-of-concern-by-putting-html-and-js-in-a-single-fil-cil3bn5hj0011a65347rsdut0
Juga pada halaman tersebut adalah tautan ke presentasi yang menarik dari Pete Hunt, dari Facebook, di mana ia berbicara tentang komponen bukan template, dan memisahkan kekhawatiran dalam aplikasi bahasa daripada memisahkan kekhawatiran kerangka kerja, yaitu template, css dan javascript dll.
Sehubungan dengan memisahkan kekhawatiran Anda dalam bahasa aplikasi Anda, ini dapat melibatkan berbagai pola untuk memisahkan atau memisahkan kode Anda ke dalam bentuk modular yang dapat diuji unit dll.
Jadi untuk meringkas, memisahkan kekhawatiran dapat bergantung pada peran atau sudut pandang Anda, seperti yang disebutkan di tempat lain.
sumber