Saya memiliki semacam "jalur pipa" proses yang pada dasarnya hanya menghubungkan sekelompok alat yang ada untuk mengotomatisasi alur kerja. Untuk salah satu langkah, ada alat baris perintah yang ada yang sudah melakukan apa yang perlu dilakukan langkah itu.
Alat CLI eksternal berbasis java, dan juga pipeline saya, jadi akan mungkin untuk mengintegrasikan alat langsung ke langkah pipeline, tetapi alat ini sangat kompleks dan saat ini terkait erat dengan memiliki input baris perintah (seperti 37 opsi konfigurasi flag).
Pertanyaannya adalah: Apakah lebih baik memanggil dan memanggil proses eksternal, atau lebih baik mengintegrasikan kode eksternal ke dalam aplikasi saya?
Apa pro / kontra dari mengintegrasikan vs memanggil proses eksternal?
java
architecture
cdeszaq
sumber
sumber
Jawaban:
Jauh lebih baik untuk mengintegrasikan hal-hal ini.
Antarmuka baris perintah hanyalah antarmuka, dan yang sangat buruk. Ini penting tetapi juga diisi dengan kebiasaan dan keterbatasan yang tidak masuk akal.
Setiap "alat yang ada untuk mengotomatisasi alur kerja" harus memiliki kelas rapi yang melakukan pekerjaan nyata setelah opsi baris perintah diuraikan.
Idealnya,
public static void main
fungsi melakukan dua hal di masing-masing "alat yang ada".Itu memanggil beberapa opsi baris perintah / argumen parser.
Ini memanggil kelas rapi yang melakukan pekerjaan nyata. Pikirkan tugas Semut atau tugas Maven yang melakukan pekerjaan nyata setelah Semut atau Maven telah menangani semua penguraian dan pengambilan keputusan.
Ketika Anda pergi untuk mengintegrasikan hal-hal ini, Anda ingin kelas rapi yang melakukan pekerjaan nyata.
Jika mereka tidak ada, maka Anda harus menulis ulang semua alat itu untuk membuat kelas rapi yang melakukan pekerjaan nyata, terpisah dari semua penguraian baris perintah.
Untuk panduan tentang cara kerja kelas yang rapi ini, baca Semut (atau Maven) untuk melihat bagaimana mereka mendefinisikan berbagai tugas pekerja. Ini adalah model mental yang baik untuk bagaimana banyak hal yang berbeda diintegrasikan tanpa kembali ke baris perintah.
sumber
main
metode, metode CLI-parse, dll. Agak jahat :(Saya akan mengatakan biarkan saja jika berhasil.
Sebagai seorang programmer Anda memberikan nilai pada organisasi Anda dengan menyelesaikan masalah dengan perangkat lunak. Memecahkan lebih banyak masalah baik dalam kualitas maupun kuantitas dalam jumlah waktu tertentu secara langsung berkaitan dengan nilai Anda di organisasi. Menghabiskan waktu ini untuk membuat kode mengurangi nilai Anda karena itu membuat Anda jauh dari menyelesaikan masalah yang lebih penting.
Namun, beberapa faktor yang dapat mengurangi pengeluaran waktu adalah skalabilitas dan jika ada kekhawatiran terhadap stabilitas program eksternal.
sumber
Itu bukan "lebih baik" atau "lebih buruk". Hanya ada biaya dan manfaat yang berbeda.
Sering kali lebih mahal untuk menulis dan memelihara perangkat lunak, semakin besar jumlah titik integrasi untuk menambah kompleksitas.
Perhatikan ini adalah biaya integrasi yang harus Anda timbang terhadap total biaya yang mencakup antara lain biaya untuk menulis dan memelihara perangkat lunak.
Mungkin Anda adalah programmer yang sangat tidak berpengalaman, tetapi pengguna daya yang lama.
Cara terbaik untuk mencari tahu:
Adalah untuk menghitung biaya untuk diri sendiri. Biaya akan berbeda untuk lingkungan, situasi dan orang yang berbeda. Sebagian besar waktu akan lebih mahal untuk memanggil baris perintah, tetapi tidak selalu dan satu-satunya cara untuk memastikannya melakukan analisis.
sumber
Idealnya Anda ingin mengintegrasikannya. Terutama jika ini adalah aplikasi yang didistribusikan - mengurangi jumlah dependensi dan konfigurasi akan membuatnya lebih mudah. Tapi itu tentu saja masalah biaya / manfaat untuk kasus spesifik Anda.
Yang mengatakan, satu hal yang perlu dipertimbangkan adalah stabilitas. Saya menemukan sesuatu yang serupa beberapa tahun yang lalu dan tetap menjalankan program cli. Itu terlalu tidak stabil, dan aku tidak ingin yang menerjang untuk mencatat aplikasi induk, yang dibutuhkan untuk menjalankan 24/7. Sekarang ini bukan aplikasi java, tetapi tidak kurang, jika itu masalah yang mungkin berlaku Anda mungkin ingin tetap mempertimbangkan itu.
sumber