Best Practice Pemrograman — BAB 11
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah mengikuti halaman ini, kamu diharapkan dapat:
- Menerapkan prinsip DRY (Don’t Repeat Yourself) dan Single Responsibility.
- Menulis anotasi tipe data secara disiplin pada parameter dan return fungsi.
- Menghindari penggunaan tipe
anydi seluruh bagian project.
Pendahuluan
Section titled “Pendahuluan”Programmer yang handal tidak hanya peduli apakah programnya “bisa berjalan” saat ini. Mereka peduli apakah program tersebut mudah dipahami saat dibaca 6 bulan lagi, dan mudah dimodifikasi saat ada penambahan fitur baru oleh developer lain.
Penjelasan
Section titled “Penjelasan”Di dalam industri pengembangan software, kita wajib mematuhi panduan penulisan kode bersih (clean code). Tiga pilar utama clean code:
- DRY (Don’t Repeat Yourself): Menghindari duplikasi kode dengan menggunakan fungsi helper.
- Single Responsibility: Setiap modul atau fungsi hanya mengurusi satu hal spesifik secara fokus.
- No any type: Melarang pemakaian tipe
anykarena mematikan fitur type safety utama TypeScript.
Analogi Kehidupan Sehari-hari: Menata Bumbu Dapur di Toples Kaca
Section titled “Analogi Kehidupan Sehari-hari: Menata Bumbu Dapur di Toples Kaca”Menata kode program seperti merapikan bumbu dapur di dalam toples kaca berlabel:
Dapur Bersih Terorganisir:- Garam ditaruh di toples kaca berlabel "GARAM" (Tipe: Asin)- Gula ditaruh di toples kaca berlabel "GULA" (Tipe: Manis)- Lada ditaruh di toples ladaJika kamu malas menaruh bumbu di toples berlabel dan mencampur semuanya di satu baskom besar tanpa penutup (tipe any), kamu akan sangat mudah keliru memasukkan garam ke dalam adonan teh manis saat memasak terburu-buru.
Visual Illustration: Pembagian Tugas Kelas yang Bersih
Section titled “Visual Illustration: Pembagian Tugas Kelas yang Bersih”Class Repository (Akses Data) ──► Hanya mengurusi array RAMClass Service (Proses Logika) ──► Hanya mengurusi hitungan & APImain.ts (Presentation) ──► Hanya mengurusi interaksi terminalLive Coding: Penulisan Tipe Eksplisit vs Any
Section titled “Live Coding: Penulisan Tipe Eksplisit vs Any”Berikut contoh perbandingan kode kotor menggunakan any dengan kode bersih bertipe eksplisit:
// ✗ KODE KOTOR (Hindari!)function prosesBebas(data: any) { return data.name; // Tidak ada jaminan data memiliki properti name}
// ✓ KODE BERSIH (Gunakan ini)interface ProfilNama { name: string;}function prosesBersih(data: ProfilNama): string { return data.name;}Output
Section titled “Output”Hasil eksekusi kode bersih di terminal:
Proses data nama aman terverifikasi compiler.Penjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”prosesBebas(data: any): Memakai tipeanyyang mematikan fitur auto-complete dan proteksi tipe data TypeScript (BAB 9).prosesBersih(data: ProfilNama): Menggunakan kontrak interface yang menjamin input parameter selalu memiliki propertinamebertipe string (BAB 7).
Common Mistakes
Section titled “Common Mistakes”- Menyalin Kode Berulang: Menuliskan visual tabel rapor di
main.tsdan disiswa-service.tssecara terpisah tanpa membungkusnya ke dalam satu fungsi terpusat.
Ringkasan
Section titled “Ringkasan”- Kode bersih menaati prinsip DRY dan Single Responsibility.
- Dilarang keras menggunakan tipe
anydemi menjaga keamanan type safety. - Pemisahan file modular membuat kode mudah dirawat jangka panjang.
Latihan
Section titled “Latihan”- Periksa kembali seluruh file project SIAKAD yang telah kamu buat.
- Pastikan tidak ada satu pun kata kunci
anyyang tertulis di dalam baris kodemu. Jika ada, ganti dengan tipe data yang tepat.