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:
  1. Refactoring bertujuan untuk meningkatkan struktur, keterbacaan, dan pemeliharaan kode tanpa mengubah fungsionalitas eksternal.
  2. Refactoring mencakup pembagian tanggung jawab, perbaikan struktur, dan implementasi praktik-praktik terbaik untuk meningkatkan kualitas kode.




Komentar

Postingan populer dari blog ini

ETS Evolusi Perangkat Lunak

FP Evolusi Perangkat Lunak