Anda di halaman 1dari 3

Tugas Personal ke-1

Minggu ke-2 Sesi 3

1. Design smell merupakan permasalahan yang muncul ketika program tidak memiliki
struktur kode yang baik. Berdasarkan topik ini, jawablah beberapa pertanyaan berikut.
a. Apa yang dimaksud dengan Refactoring?
Jawaban :
Refactoring adalah salah satu komponen dari tiga komponen pada proses TDD
yaitu test (red), implement (green), refactor (blue). Menurut buku Martin Fowler,
refactoring adalah proses mengubah sistem dari suatu perangakat lunak tanpa
mengubah perilaku eksternal (fungsionalitas akhir) dari perangkat lunak tersebut.
Tujuan utama dari refactoring adalah meningkatkan kualitas struktur internal dari
perangkat lunak. Refactoring merupakan langkah untuk “membersihkan” code
sehingga dapat meminimalkan peluang munculnya software defect (bug) pada
implementasi yang dibuat. Jadi secara umum, ketika kita melakukan refactor, kita
sedang meningkatkan kualitas desain dari perangkat lunak kita.
b. Apa saja keuntungan dari Refactoring?
Jawaban :
Beberapa Manfaat Refactoring

 Meningkatkan desain code pada software atau game


 Membuat source code menjadi mudah dimengerti dan dipetakan
 Mempermudah dalam proses menemukan bug
 Membantu memprogram dengan lebih cepat
 Mempermudah proses delegasi antar programmer (jaga-jaga seandainya
programmer utama sedang sakit dan sebagainya)
 Mempersingkat time development
c. Kapan waktu yang tepat untuk melakukan Refactoring?

COMP6284 – Code Reengineering


Jawaban :

Waktu terbaik untuk mempertimbangkan refactoring adalah sebelum


menambahkan pembaruan atau fitur baru ke kode yang ada. Kembali dan
membersihkan kode saat ini sebelum menambahkan dalam pemrograman baru
tidak hanya akan meningkatkan kualitas produk itu sendiri, itu akan membuatnya
lebih mudah bagi pengembang masa depan untuk membangun kode asli.
d. Apa yang dimaksud dengan technical debt?
Jawaban :
Technical Debts

Technical Debts dalam software development dapat berupa lack of tests


automations, lack of deployment automations, lack of documentations, dirty and
tightly coupled code, defects, bad design, dsb. Technical Debt seringkali muncul
karena software developer memotong jalan pintas demi memenuhi deadline.
Software developer harus memotong jalan pintas karena pimpinan perusahaan
hanya peduli dengan short-term wins. Walaupun Technical Debt muncul karena
tekanan dari manajemen, Technical Debt juga dapat muncul karena software
developer tidak memiliki keahlian untuk mengembangkan software secara
professional, mereka tidak memahami apa yang perlu dilakukan oleh software
craftsman. Technical Debt dapat menghantui software developer di kemudian hari
yang dapat memperlambat software development. Technical Debt adalah
variabilitas yang dapat membuat software delivery menjadi tidak predictable.

2. Carilah contoh untuk setiap jenis code smell pada Bloater design smell berikut (tidak
boleh menggunakan contoh yang telah dijelaskan pada slide):
a. Long method
Jawaban : (contoh: template method DP) (Extract class/method, Replace data
value with object)
b. Large class
Jawaban :

COMP6284 – Code Reengineering


Contoh: Kelas-kelas library seringkali ‘gemuk’ (banyak method, banyak
parameter, banyak overloading)
– Tidak masalah jika tujuannya untuk fleksibilitas.
c. Primitive obsession
Jawaban :
– Semua atribut dari objek merupakan instans dari tipe primitif (int, String,
boolean, double, dll.) • Contoh: dates, currency, SIN, tel.#, ISBN – Seringkali
objek-objek mempunyai constraint • Contoh: fixed number dari digit/karakter,
nilai khusus
d. Long parameter list
Jawaban :
Menyulitkan memahami method.
– Ini merupakan gejala dari:
• Method melakukan terlalu banyak hal
• Terlalu jauh dari maksud dan tujuan awal method
• Banyak mengandung subpart yang berlainan
e. Data clumps
Jawaban :
Terjadi jika sekumpulan data selalu bersama-sama, sebagai parameter atau
diubah/diakses pada saat yang sama – Seharusnya terdapat sebuah subobjek
koheren yang perlu dibuat
– Pada contoh tersebut, sebuah kelas Title perlu dibuat

Reference:

- https://medium.com/ppl-sutopo/refactoring-6e0e047c285e|
- https://www.altexsoft.com/blog/engineering/code-refactoring-best-practices-when-and-when-not-to-
do-it/

COMP6284 – Code Reengineering

Anda mungkin juga menyukai