Tugas 7 EPL: Refactoring
Nama: Lia Kharisma Putri
NRP: 5025201034
Kelas: Evolusi Perangkat Lunak
Tahun: 2023
TUGAS 7
REFACTORING
Berikut adalah contoh implementasi dalam PHP untuk proses pendaftaran siswa baru pada sebuah aplikasi, baik sebelum maupun setelah refactoring:
Sebelum:
Penjelasan Kode Sebelum Refactoring:
- Kode memiliki tanggung jawab ganda, yaitu melakukan pendaftaran siswa dan mengirim notifikasi.
- Terdapat redundansi kode untuk validasi NISN dan NIK.
- Penggunaan string query langsung tanpa prepared statement, rentan terhadap SQL injection.
- Tidak ada penanganan kesalahan yang baik pada level aplikasi.
Sesudah:
Penjelasan Kode Setelah Refactoring:
- Kode telah dibagi menjadi fungsi-fungsi yang lebih kecil dan berfokus pada satu tanggung jawab.
- Menggunakan parameterized query untuk mencegah SQL injection.
- Menambahkan fungsi untuk menyimpan data ke database sehingga mempermudah pemeliharaan dan pengujian.
- Konsep dependency injection digunakan untuk menyediakan objek koneksi database secara eksternal.
Penjelasan tambahan:
1. Kelas 'PendaftaranSiswa'
- Sebelum Refactoring:
- Inisiasi objek koneksi database langsung di dalam kelas.
- Tanggung jawab utama mencakup proses pendaftaran siswa dan pengiriman notifikasi.
- Fungsi 'prosesPendaftaran' mengandung logika bisnis dan operasi database.
- Fungsi 'validasiNisnNik' melakukan validasi dan mengakses database secara langsung.
- Penggunaan query langsung tanpa prepared statement.
- Kurangnya penanganan kesalahan dan feedback yang baik kepada pengguna.
- Setelah Refactoring:
- Penggunaan konsep dependency injection untuk menyediakan objek koneksi database.
- Konstruktor kelas menerima objek Database sebagai parameter untuk memisahkan tanggung jawab.
- Fungsi 'prosesPendaftaran' menjadi lebih fokus, hanya menangani logika pendaftaran dan notifikasi.
- Fungsi-fungsi yang lebih kecil seperti 'validasiNisnNik', 'simpanData', dan 'kirimNotifikasi' digunakan untuk tanggung jawab spesifik.
- Penggunaan prepared statement untuk mencegah SQL injection.
- Penanganan kesalahan yang lebih baik dengan menghapus informasi kepada pengguna dalam kasus validasi.
2. Database Class:
- Sebelum Refactoring:
- Struktur kelas 'Database' tidak disediakan dalam contoh, tetapi diasumsikan memiliki fungsi-fungsi dasar untuk koneksi dan eksekusi query.
- Setelah Refactoring:
- Fungsi 'eksekusiPreparedQuery' ditambahkan untuk mengeksekusi prepared statement dengan parameter.
3. Proses Pendaftaran Siswa:
- Sebelum Refactoring:
- Proses pendaftaran siswa dan pengiriman notifikasi disatukan dalam satu fungsi.
- Validasi NISN dan NIK dilakukan di dalam fungsi yang sama.
- Setelah Refactoring:
- Proses pendaftaran siswa dan pengiriman notifikasi dipisahkan ke dalam fungsi-fungsi yang lebih kecil.
- Validasi NISN dan NIK dipecah menjadi fungsi tersendiri ('validasiNisnNik').
Catatan Tambahan:
- Refactoring bertujuan untuk meningkatkan struktur, keterbacaan, dan pemeliharaan kode tanpa mengubah fungsionalitas eksternal.
- Refactoring mencakup pembagian tanggung jawab, perbaikan struktur, dan implementasi praktik-praktik terbaik untuk meningkatkan kualitas kode.
Komentar
Posting Komentar