Laporan Akhir Praktikum Implementasi Perangkat Lunak
Laporan Akhir Praktikum Implementasi Perangkat Lunak
MODUL 9
“REFACTORING”
Disusun Oleh
DAFTAR ISI..........................................................................................................................2
BAB I......................................................................................................................................3
PENDAHULUAN..................................................................................................................3
I.1 IMPLEMENTASI PROSES DESAIN OBJECT ORIENTED...........................3
I.2 LATIHAN...............................................................................................................3
BAB II.....................................................................................................................................4
HASIL PRAKTIKUM DAN TUGAS...................................................................................4
II.1 Hasil Praktikum.....................................................................................................4
1. Class Person................................................................................................................4
2. Kondisi.java................................................................................................................5
3. Validasi.java...............................................................................................................7
II.2 Tugas.....................................................................................................................10
1. Group.java................................................................................................................10
BAB III.................................................................................................................................12
KESIMPULAN....................................................................................................................12
BAB I
PENDAHULUAN
I.1 IMPLEMENTASI PROSES DESAIN OBJECT ORIENTED
Refactoring adalah teknik untuk meningkatkan desain basis kode yang ada.
Esensinya adalah menerapkan serangkaian perubahan-perubahan kecil pada code, namun
efek kumulatif dari masing-masing perubahan ini cukup signifikan. Dengan melakukannya
dalam langkah-langkah kecil dapat mengurangi risiko terjadi kesalahan.
1. Merekonstruksi method.
2. Memindahkan component antar objek (Class)
3. Pengelolaan Data
4. Menyederhanakan ekspresi Kondisi (Conditional Expression / IF)
5. Penyederhanaan pemanggilan method
6. Menangani Generalisasi
7. Big Refactorings
I.2 LATIHAN
Dalam Latihan praktikum ini Bahasa pemrograman yang digunakan adalah Java.
Texteditor, compiler, atau IDE yang digunakan bisa Notepad++, Notepad, Netbeans, dll.
BAB II
// Main Method
public static void main(String[] args)
{
Person1 person = new Person1();
person.name = "Bob Smith";
System.out.println(person.name);
}
}
Setelah di Refactoring:
public class Person{
public String name;
public String getName(){
return name;
}
public void setName(String newName){
name = newName;
}
Setelah di Refactoring:
c. Analisa
Untuk hasil sama, hanya saja pada Codingan di atas perbedaan
Sebelum/Setalah di Refactoring adalah lebih baik dari sebelum di Refactoring.
2. Kondisi.java
a. Source Code
//Sebelum Refactoring
if(score > 700){
accept();
}else if((income >= 40000) && (income <= 100000) &&
authorized && (score > 500)){
accept();
}else{
reject();
}
//Setelah Refactoring
if((score <= 700) && (income < 40000) || (income > 100000)
|| !authorized || (score <= 500) && (income <= 100000)){
reject();
}else{
accept();
}
}
b. Hasil Eksekusi
Sebelum Refactoring:
Setelah Refactoring:
c. Analisa
Sama seperti program sebelumnya, Untuk hasil sama, hanya saja pada
Codingan di atas perbedaan Sebelum/Setalah di Refactoring adalah lebih baik
dari sebelum di Refactoring.
3. Validasi.java
a. Source Code
Sebelum Refactoring:
public class Validasi{
private boolean ValidateRequest(CustomerInquiryRequest request,
int
customerIDFieldLength, int productFieldLength){
request.CustomerProduct.ProductNumber =
request.CustomerProduct.ProductNumber.PadLeft(
productFieldLength,
Convert.ToChar( "0",
CultureInfo.CurrentCulture ) );
}
return true;
}
Setelah Refactoring:
request.Customer.CustomerID.PadLeft(
customerIDFieldLength,
Convert.ToChar( "0",
CultureInfo.CurrentCulture ) );
}
}
private void CheckProductNumberValid( CustomerInquiryRequest
request, int productFieldLength ){
request.CustomerProduct.ProductNumber.PadLeft(
productFieldLength,
Convert.ToChar( "0",
CultureInfo.CurrentCulture ) );
}
}
}
b. Analisa
Dari Code validasi di atas adalah melakukan beberapa Refactoring
agar terlihat lebih mudah, semakin Panjang metode semakin sulit untuk
menlihat apa yang akan di kerjakan. Pada code terakhir mati, seperti pada
variable, parameter, metode pada code validasi di awal sebelum direfactoring
tidak pernah digunakan. Pada program di atas tidak terdapat Class yang bisa
dijalan pada Class utama.
II.2 Tugas
1. Group.java
a. Source Code
Sebelum Refactoring:
Setelah Refactoring:
return users;
}
}
b. Analisa
1. Berdasarkan hasil Refactoring tersebut, apa saja code smells yang ada
pada code awal ?
Jawab:
Terdapat dua code smells yang ada pada source code diatas, yaitu:
Long Method: Syntax di atas terlalu Panjang dan sulit untuk melihat apa
yang dilakukannya.
Code Duplikat: Terdapat code “persistence path” yang di ulang pada source
code di atas.
2. Jenis Refactoring apa saja yang dilakukan ?
Jawab:
Merekontruksi Mehod
Menyederhanakan Eksresi
BAB III
KESIMPULAN
Pada praktikum kali ini kita dapat mempelajari tentang Refactoring.
Refactoring adalah sebuah Teknik untuk meningkatkan desain basis kode yang ada.
Esensinya adalah menerapkan serangkaian perubahan-perubahan kecil pada coding.
Pada Tugas Praktikum ini terdapat dua code smells yang ada pada source
code, yaitu: Long Mehod dan Duplicate, sehingga perlu dilakukan refactoring yaitu
merekontruksi method yang ada dan menyederhanakan ekspresi.