Masalah utamanya
Melihat dukungan yang baik sebagian besar platform pemrograman modern memiliki untuk manajemen paket (berpikir gem
, npm
, pip
, dll), tidak masuk akal untuk merancang aplikasi atau sistem terdiri dari paket yang dikembangkan secara internal, sehingga untuk mempromosikan dan menciptakan arsitektur longgar digabungkan?
Contoh
Contohnya adalah membuat paket untuk akses basis data, serta untuk otentikasi dan komponen lain dari sistem. Ini, tentu saja, menggunakan paket eksternal juga. Kemudian, sistem Anda mengimpor dan menggunakan paket-paket ini - alih-alih memasukkan kodenya ke dalam basis kodenya sendiri.
Pertimbangan
Bagi saya, tampaknya ini akan mempromosikan decoupling kode dan membantu pemeliharaan, hampir dalam jenis aplikasi berbasis Web vs desktop (pembaruan diterapkan hampir secara otomatis, basis kode tunggal untuk fungsi tunggal, dll.).
Apakah ini tampak seperti konsep desain yang rasional dan waras? Apakah ini benar-benar digunakan sebagai cara standar penataan aplikasi saat ini?
sumber
Ini adalah ide yang bagus, semuanya. Anda perlu berpikir tentang menyiapkan repositori paket internal (biasanya disebut "repositori artefak" di dunia Java, atau "server pypi" di dunia Python), sehingga Anda tetap menyimpan paket-paket yang tidak Anda inginkan atau tidak bisa ' t rilis sebagai sumber terbuka.
Seperti @pdr telah dicatat, bersiaplah untuk memiliki ketergantungan Anda sendiri , di mana perubahan ke beberapa paket terlebih dahulu memerlukan perubahan lain dalam paket lain, dan ini berarti tidak hanya mengubah satu baris kode, tetapi mengujinya, mungkin menerima perubahan itu, membuat rilis, dan mengunggah rilis ke repositori paket yang disebutkan di atas. Dan kemudian mengubah apa yang ingin Anda ubah.
Satu-satunya resep yang bisa saya berikan dari pengalaman saya untuk mencoba dan meminimalkan ini: jangan hanya mengandalkan abstrak konsep umum dari paket Anda menjadi paket "umum" atau "kerangka" . Ini bisa tampak seperti hal yang sangat obyektif untuk dilakukan, tetapi itu akan mengarah pada paket monster yang perlu sering, kemungkinan perubahan dan rilis yang kontradiktif. Jauh lebih baik, pikirkan fungsionalitas dalam sistem Anda, dan buat paket pembantu untuk masing-masingnya, seperti yang telah Anda uraikan dalam pertanyaan Anda.
Selain itu, manfaat utama yang akan Anda dapatkan adalah aplikasi Anda terisolasi dari banyak dependensi, sehingga Anda dapat menukarnya tanpa rasa sakit.
sumber
common
paket sebagai opsi, tetapi, seperti yang Anda katakan, saya bisa melihatnya menjadi keputusan yang "masuk akal" di masa depan. Maksud saya lebih pada baris komponen daripada kode - jadi idealnya Anda tidak boleh memiliki terlalu banyak potongan kode yang melakukan hal yang sama dalam paket yang berbeda karena mereka dimaksudkan untuk melakukan hal yang berbeda. Saya akan menebak bahwa jika ada kesamaan antara paket, pengulangan semacam itu tidak akan melanggar prinsip pemrograman yang baik, karena proyek-proyek secara definisi terpisah.