Method yang panjang
ini juga harus dihindari .. satu method itu ga usah panjang2.. eh .. ga boleh panjang2 … bikin mumet aja …
bacanya ga enak .. ga jelas … dan kompleks .. jg sulit untuk dimodifikasi .. nah ukuran panjang itu brapa ??? relatif .. tergantung dengan konvensi di perusahaan atau grup anda .. tapi klo udh lewat satu layar monitor tu udh perlu dipangkas … hehehe
dengan method yg pendek2 kita lebih mudah bacanya. karena kita kan bukan komputer. klo komputer emang ga perduli asal sintaxnya benar aja .. ya udh deh .. jalan. tapi buat manusia yg banyak maunya pasti selalu ingin yg mudah ..
jadi setiap orang yg bodoh pun bisa membuat code yg dapat dimengerti oleh komputer. tapi programmer yg baik menulis code yang dapat dimengerti manusia … so kita pilih yg mana ??
nih klo mw ngerasain baca code yg panjang itu gimana … klo anda masih tetap ga percaya bakal repot bacanya
public string Statement() { double totalAmount = 0; int frequentRenterPoints = 0; Enumeration rentals = _rentals.elements(); String result = "Rental Record for " + getName() + "\n"; while (rentals.hasMoreElements()) { double thisAmount = 0; Rental each = (Rental) rentals.nextElement(); //determine amounts for each line switch (each.getMovie().getPriceCode()) { case Movie.REGULAR: thisAmount += 2; if (each.getDaysRented() > 2) thisAmount += (each.getDaysRented() - 2) * 1.5; break; case Movie.NEW_RELEASE: thisAmount += each.getDaysRented() * 3; break; case Movie.CHILDRENS: thisAmount += 1.5; if (each.getDaysRented() > 3) thisAmount += (each.getDaysRented() - 3) * 1.5; break; } // add frequent renter points frequentRenterPoints ++; // add bonus for a two day new release rental if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) frequentRenterPoints ++; //show figures for this rental result += "\t" + each.getMovie().getTitle()+ "\t" + String.valueOf(thisAmount) + "\n"; totalAmount += thisAmount; } //add footer lines result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points"; return result; }
nah perhatikan bahwa banyak komentar dimana2 … itu tandanya kalau code tersebut maksudnya ga jelas jadi perlu dikelompokkan
pada method yg tersendiri…. jadi ketika anda berpikir .. wah .. sepertinya bagian code yg ini butuh comment …
ketimbang anda bikin comment .. lebih baik kelompokkan dalam satu method dan buat nama method yg jelas … nama dalam suatu kelas atau bahasa kerennya identifer adalah merupakan kontrak .. so pilih nama yg benar dan jelas …
dengan mengelompokkan bagian2 kode menjadi method2 kita dapat membuat method tidak menjadi panjang dan method menjadi jelas.
perubahan mudah dilakukan. dan perubahan hanya dilakukan pada satu tempat saja dan mudah di trace jika terjadi kesalahan. ruang pencariannya lebih sempit..
nah ciri lain yg menunjukkan bahwa code perlu diextract adalah conditional dan loop. ya ini hanya perkenalan saja dulu
ntar masuk ke detilnya .. thax