Topik ini membahas keputusan pertama pada pengerjaan proyek akhir, yaitu pemilihan bentuk proyek yang paling sesuai dengan tujuannya. Tiga bentuk yang umum dikerjakan dengan Dart dibandingkan berdasarkan tiga kriteria, yaitu konsumen keluaran, kebutuhan infrastruktur, dan cara distribusinya. Pemilihan kemudian dipraktikkan pada satu contoh konkret, yaitu alat konversi satuan untuk baris perintah yang inti perhitungannya langsung dieksekusi di akhir topik.
Tiga bentuk proyek akhir#
Sebuah proyek Dart dapat dikemas dalam tiga bentuk yang melayani konsumen berbeda. Alat CLI adalah program yang dieksekusi langsung di terminal, menerima masukan dari argumen atau berkas, dan menampilkan hasilnya sebagai teks bagi orang yang menjalankannya. Layanan web adalah program yang berjalan terus pada server, menerima permintaan HTTP dari program lain atau browser, dan menjawabnya dengan respons terstruktur. Package adalah kode yang tidak dieksekusi langsung, melainkan diimpor oleh proyek pengembang lain melalui dependensi yang dinyatakan pada pubspec.yaml.
Perbedaan bentuk menentukan hampir seluruh keputusan teknis setelahnya. Alat CLI untuk konversi satuan dapat berdiri sendiri sebagai satu berkas program, sedangkan layanan web untuk kebutuhan yang sama menuntut pemilihan framework, penanganan permintaan, dan manajemen proses pada server. Package berada di sisi ketiga, yaitu logika konversi yang ditulis untuk digunakan ulang, sementara alatnya baru disusun oleh setiap proyek yang mengimpornya. Ketiga bentuk sama-sama sah, sehingga pemilihannya perlu didasarkan pada kriteria yang jelas dan bukan pada kebiasaan.
Perbandingan menurut konsumen, infrastruktur, dan distribusi#
Ketiga kriteria pada tabel berikut menjawab pertanyaan praktis tentang sebuah proyek, yaitu siapa yang menerima hasilnya, apa yang harus berjalan agar proyek tetap hidup, dan bagaimana hasilnya sampai ke konsumen. Kriteria konsumen keluaran membedakan orang di terminal, program lain melalui HTTP, dan pengembang melalui import. Kriteria infrastruktur membedakan program yang berjalan lokal tanpa layanan tambahan dan program yang menuntut server dengan proses yang tidak pernah berhenti. Kriteria distribusi membedakan berkas yang dijalankan dari terminal dan kode yang dibagikan melalui pub.dev.
| Bentuk proyek | Konsumen keluaran | Kebutuhan infrastruktur | Cara distribusi |
|---|---|---|---|
| Alat CLI | Orang di terminal | Tidak ada, berjalan lokal | dart run atau dart compile exe |
| Layanan web | Program lain melalui HTTP | Server dengan proses berjalan terus | deploy ke server atau hosting |
| Package | Pengembang melalui import | Tidak ada | pub.dev, jalur git, atau jalur lokal |
Tabel tersebut juga menyingkap arah biaya perawatan. Layanan web membebani pemiliknya dengan pemantauan proses, pembaruan keamanan, dan ketersediaan server, sedangkan alat CLI dan package dapat dibiarkan berbulan-bulan tanpa kejadian apa pun. Bagi proyek belajar tanpa tujuan komersial, kriteria ini sering menjadi penentu, karena infrastruktur yang tidak dikelola dengan sungguh-sungguh membuat keluaran proyek sulit diandalkan.
Menyeleksi bentuk alat konversi satuan#
Contoh proyek pada modul ini adalah alat konversi satuan panjang untuk keperluan pribadi, misalnya mengubah kilometer menjadi mil ketika membaca data olahraga. Seleksinya mengikuti tabel pada bagian sebelumnya secara langsung. Konsumen keluarannya adalah orang yang mengetik perintah di terminal, sehingga bentuk layanan web langsung tereliminasi karena tidak ada program lain yang membutuhkan antarmuka HTTP. Kebutuhan infrastrukturnya nol, dan distribusinya cukup berupa satu berkas yang dijalankan dengan dart run atau yang dikompilasi dengan dart compile exe menjadi program mandiri. Ketiga kriteria mengarah pada satu jawaban yang sama, yaitu alat CLI.
Bentuk package tetap menarik apabila logika konversinya hendak digunakan proyek lain, misalnya laporan statistik nilai ujian yang juga mengonversi satuan. Namun untuk alat yang konsumennya satu orang, menulis package lebih dahulu berarti membangun jalur distribusi sebelum fungsinya terbukti berguna. Urutan yang lebih realistis adalah menyelesaikan alat CLI terlebih dahulu, lalu mengangkat logikanya menjadi package apabila kebutuhan itu benar-benar muncul. Keputusan bentuk tidak menutup kemungkinan perubahan, tetapi memberi arah pada langkah desain dan pembangunan berikutnya.
Inti alat semacam ini kecil dan murni, sehingga kelayakan bentuknya dapat diuji sejak sekarang. Berkas berikut memuat satu fungsi konversi dan program yang menampilkannya pada tiga jarak yang mudah diperiksa ulang, termasuk jarak maraton sepanjang 42,195 kilometer. Berkas ini disimpan pada bundle topik sehingga dapat diperoleh dan dijalankan apa adanya.
// Inti alat konversi satuan: fungsi murni tanpa efek samping.
double kilometerKeMil(double km) => km * 0.621371;
void main() {
final jarakKm = [5.0, 42.195, 100.0];
for (final km in jarakKm) {
print('${km.toStringAsFixed(3)} km = ${kilometerKeMil(km).toStringAsFixed(3)} mil');
}
}5.000 km = 3.107 mil
42.195 km = 26.219 mil
100.000 km = 62.137 milKeluaran menunjukkan alasan bentuk ini sesuai untuk kasus tersebut. Perhitungan selesai seketika, tidak ada layanan yang harus dinyalakan, dan hasilnya langsung terbaca di terminal tanpa langkah perantara. Fungsi kilometerKeMil juga murni, yaitu keluarannya hanya ditentukan oleh masukannya, sehingga logika yang sama dapat diangkat menjadi package kelak tanpa penyuntingan yang berarti.
Ringkasan#
- Bentuk proyek Dart yang umum adalah alat CLI, layanan web, dan package, dan pemilihannya mengikuti konsumen keluaran, kebutuhan infrastruktur, serta cara distribusi.
- Alat CLI berjalan lokal tanpa infrastruktur dan didistribusikan melalui dart run atau dart compile exe.
- Layanan web menuntut server dengan proses berjalan terus karena konsumennya program lain melalui HTTP, sedangkan package ditujukan bagi pengembang lain melalui import.
- Alat konversi satuan pada modul ini dipilih berbentuk alat CLI karena ketiga kriteria mengarah pada jawaban yang sama.
Referensi#
- dart tool — dart.dev — Referensi perintah dart, termasuk dart run dan dart compile untuk alat baris perintah.
- Command-line and server apps — dart.dev — Ikhtisar resmi penggunaan Dart untuk aplikasi baris perintah dan aplikasi sisi server.
- How to use packages — dart.dev — Panduan resmi pub untuk mengelola dependensi dan membagikan package melalui pub.dev.