Dalam dunia pembangunan moden yang pantas, seni bina sering menentukan sama ada projek itu berkembang maju atau runtuh di bawah kerumitannya sendiri. Walaupun ramai pembangun secara intuitif memahami bahawa seni bina penting, "mengapa" dan "bagaimana" kurang kerap dibincangkan. Apakah yang menjadikan seni bina begitu kritikal dan bagaimana anda boleh memastikan bahawa pilihan anda membawa kepada kejelasan dan bukannya huru-hara?
Artikel ini berguna untuk pembangun React, Vue, Svelte dan Vanilla JS. Ia mungkin kurang membantu pembangun Angular, kerana Angular menguatkuasakan corak seni bina yang ketat secara lalai, walaupun ia masih boleh memberikan nilai.
Pada pendapat saya, terdapat kekurangan maklumat terperinci tentang seni bina di seluruh internet; Saya berjaya mencari hanya beberapa sumber yang berguna. Itulah sebabnya saya telah memutuskan untuk membuat satu siri artikel tentang seni bina.
Buat masa ini, mari kita terokai apa itu seni bina, sebab kita memerlukan seni bina, perkenalkan beberapa istilah penting dan bincangkan pelbagai jenis seni bina
Bayangkan memulakan projek baharu tanpa merancang seni binanya—hanya menyelami kod tersebut. Anda membangunkan modul pertama anda, yang mengandungi pautan antara submodul dan komponen. Kemudian, anda membuat modul kedua dan memautkannya dengan yang pertama. Corak ini berterusan apabila anda menambah lebih banyak modul dan sambungan.
Masalah timbul apabila anda perlu memadam atau mengedit modul. Apabila projek anda berkembang, begitu juga dengan kerumitan, dengan banyak modul, submodul dan sambungan kabur di antara mereka. Lama-kelamaan, web yang berselirat ini menjadi pening bagi pembangun dan lebih mahal untuk diselenggara oleh syarikat.
Kesukaran === Masa === Wang
Ramai pembangun tersalah anggap bahawa seni bina adalah setara dengan struktur folder, tetapi itu tidak betul. Seni bina melangkaui organisasi fail. Ia menerangkan cara modul dan komponen berinteraksi dalam sistem projek.
Seni bina merangkumi pelbagai elemen projek, menyatakan cara modul dan komponen harus dibangunkan dan cara ia harus saling bersambung.
Di bahagian hadapan, modul biasanya merupakan komponen UI yang menggunakan logik perniagaan. Ini boleh terdiri daripada komponen besar, seperti halaman, kepada komponen kecil, seperti input, butang atau tipografi.
Kami perlu memastikan bahawa modul projek kami mempunyai:
Kepaduan merujuk kepada perkara yang boleh dilakukan oleh modul. Kesepaduan yang rendah bermakna kelas melakukan pelbagai jenis tindakan - ia adalah luas, tidak tertumpu pada perkara yang sepatutnya dilakukan. Kesepaduan tinggi bermakna kelas memberi tumpuan kepada perkara yang sepatutnya dilakukan, iaitu kaedah yang berkaitan dengan niat kelas sahaja.
Gandingan merujuk kepada bagaimana dua modul berkaitan atau bergantung antara satu sama lain. Untuk modul gandingan rendah, menukar sesuatu yang utama dalam satu kelas tidak seharusnya menjejaskan kelas yang lain. Gandingan yang tinggi akan menyukarkan untuk menukar dan mengekalkan kod anda. Memandangkan modul disatukan rapat, membuat perubahan mungkin memerlukan keseluruhan rombakan sistem.
Pada asasnya, kesepaduan tinggi bermaksud menyimpan kepingan kod yang berkaitan bersama-sama di satu tempat. Pada masa yang sama, gandingan rendah melibatkan pengasingan bahagian asas kod yang tidak berkaitan sebanyak mungkin.
Berikut ialah penjelasan untuk imej:
Modul dalam imej diwakili oleh kelompok bulatan yang berbeza, yang mudah dikesan. Setiap bulatan dalam modul mewakili kelas atau komponen yang bertanggungjawab untuk melaksanakan tugas tertentu. Bulatan dengan warna yang sama dalam modul menunjukkan elemen yang menyelesaikan tugasan yang sama. Anak panah dalam imej menggambarkan hubungan antara modul, menggambarkan cara ia berinteraksi antara satu sama lain.
Mari kita pertimbangkan objek Tuhan anti-corak. Objek Tuhan ialah modul yang mempunyai berbilang submodul dan kesalinghubungan, sambil juga cuba menyelesaikan berbilang tugas secara serentak.
Ini menghasilkan kesepaduan tinggi kerana satu modul bertanggungjawab untuk berbilang tugasan dan gandingan tinggi disebabkan oleh sambungan kabur antara pelbagai modul dan submodul.
Dalam senario ini, modul dibahagikan dengan baik, tetapi submodul di dalamnya menyelesaikan tugas yang berbeza (ditunjukkan oleh warna yang berbeza dalam imej). Walau bagaimanapun, hubungan antara modul masih tidak jelas.
Ini adalah kes yang berbeza. Di sini, modul dibahagikan dengan jelas, dan sambungan di antara mereka adalah kukuh. Walau bagaimanapun, dalam setiap modul, perpaduan adalah rendah kerana ia menyelesaikan pelbagai tugas, yang membawa kepada kerumitan yang tidak perlu.
Walau bagaimanapun, ini masih lebih baik daripada dua contoh sebelumnya kerana anda boleh mengalih keluar atau mengubah suai modul individu tanpa banyak kesukaran.
Dalam seni bina yang ideal, pautan antara modul adalah "lemah", menjadikannya mudah untuk mengalih keluar atau mengubah suai mana-mana modul. Dalam setiap modul, komponen dan kelas menyelesaikan satu tugas tertentu (seperti yang ditunjukkan oleh warna seragamnya), dan tiada percampuran tanggungjawab, tidak seperti contoh sebelumnya.
Walaupun seni bina ideal ini jarang berlaku dalam projek, kerana ia memerlukan pengetahuan dan pengalaman khusus, ia adalah sesuatu yang kita semua harus berusaha.
Seni bina ialah struktur modul, komponen dan perkaitan antaranya.
Kunci kepada seni bina yang berjaya terletak pada melaksanakan prinsip pembangunan seperti DRY, KISS dan SOLID. Mengalih keluar dan mengubah suai modul mestilah mudah, terutamanya bahagian penyingkiran—itu perkara utama.
Beri tahu saya dalam ulasan jika anda mempunyai sebarang soalan atau seni bina yang ingin anda ketahui lebih lanjut!
Atas ialah kandungan terperinci Daripada Kekacauan kepada Kejelasan: Peranan Kritikal Seni Bina. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!