Tugas 7 - Refactoring
Nama : Afiq Akram
NRP : 5025201270
Refactoring
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').
Nama : Afiq Akram
BalasHapusNRP : 5025201270
Kelas : PPB - I
Link : Tugas 1