EPL Tugas 7 Refactoring

 Nama: Hafiz Kurniawan

NRP: 5025201032 

Refactoring

    akan  digunakan implementasi fitur untuk project Sistem Kenaikan Jabatan Dosen  pada matakuliah PPL yaitu mengirim email ke admin fakultas ketika terdapat perubahan status akibat hasil dari rapat DGB terkait CYD dari fakultas tersebut. Code implementasinya adalah sebagai berikut:


    
    Jika diperhatikan, code tersebut jelas tidak “bersih” dan kurang efisien. Method sendAcceptanceMail dan sendRevisionMail merupakan method untuk mengirim email yang memberitahukan bahwa CYD pengajuannya disetujui atau pengajuannya perlu direvisi. Method tersebut menerima argumen CYD yang terkait dengan email tersebut. Kedua method tersebut pada dasarnya melakukan hal yang sama, hanya dengan konten email yang berbeda. Jadi, pada kasus ini terdapat duplikasi. 

    tahap pertama atau permulaan dari proses refactoring dimulai dari pembuatan test. Pada kasus ini, saya ingin kedua fungsi tersebut dijadikan satu dengan menambah parameter yaitu konten emailnya agar dapat dipanggil untuk mengirim revisi email maupun acceptance email, sehingga dibuat test berikut.



    Dapat dilihat bahwa fungsi tersebut menjadi lebih compact dan lebih bersih. Tidak ada lagi duplikasi yang terjadi. Namun, jika implementasinya seperti di atas, maka pemanggil fungsi harus mendefinisikan konten emailnya. Ini tidak masalah, kita tinggal mendefinisikan konten email pada fungsi pemanggil. Kemudian, jika diperhatikan selain merefactor fungsi utama, pada code di atas saya juga merefactor fungsi testnya karena terdapat duplikasi.

    Dari hasil tersebut masih ada kekurangan, yaitu terkait penamaan fungsi. Dalam konvensi penamaan fungsi Python, tiap kata pada fungsi dippisahkan oleh ‘_’, tidak disatukan dengan menggunakan huruf kapital seperti pada Java. Jadi, pada nama fungsi ‘sendMail’ seharusnya ‘send_mail’ agar sesuai konvensi Python. Untuk itu, saya perlu mengubah sedikit fungsi tersebut dengan mengubah testnya terlebih dahulu.



    Perlu diingat bahwa karena terjadi perubahan nama fungsi dan argumennya, maka perlu diedit pula implementasi fungsi yang memanggil fungsi ini dengan menyesuaikan nama dan parameternya. Kemudian, lebih lanjut lagi, kita juga bisa melakukan refactoring untuk testnya karena masih terdapat sedikit duplikasi pada fungsi test.

Comments

Popular posts from this blog

EPL - Tugas 1

EPL KUIS AKHIR