SlideShare a Scribd company logo
Clean Code and
Design Pattern
Clean Comments
By:
Adam Mukharil Bachtiar
Komentar seringkali digunakan
untuk memberikan penjelasan
perihal kode program yang ada
dan seringkali komentar menjadi
clutter bagi kode itu sendiri.
“Setiap orang bodoh dapat
menulis kode yang dapat
dimengerti oleh komputer.
Pemrogram yang baik
menulis kode yang dapat
dipahami manusia.”
Martin Fowler
Bad Code
Pemrogram terlalu berusaha menjelaskan perihal kode
program walaupun sudah jelas.
Komentar akan memperburuk
keadaan jika digunakan pada
BAD CODE.
Bagaimana membuat
komentar yang baik dalam
membuat kode program?
Tips 1
Buatlah kode program
yang menjelaskan
dirinya sendiri.
Do this: Instead of this:
if (employee.isEligibleForFullBenefits())
Catatan:
Ingat kembali konsep clean methods
// Check to see if the employee is eligible
for full benefits
if ((employee.flags & HOURLY_FLAG) &&
(employee.age > 65)
Tips 2
Gunakan komentar untuk
Legal Comments.
Komentar sebagai header kode
program untuk menjelaskan legalitas
kode (Copyright contohnya)
LEGAL COMMENTS
Catatan: Beberapa IDE bisa menyembunyikan legal comments sehingga tidak menjadi clutter
Do this:
// Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the GNU General Public License version 2 or later.
Catatan: Sesuaikan kebutuhan legal comments dengan aturan masing-masing entreprise
Tips 3
Buatlah komentar yang
informatif
Do this: Instead of this:
// format matched kk:mm:ss EEE, MMM dd, yyyy
Pattern timeMatcher =
Pattern.compile("d*:d*:d* w*, w*
d*, d*");
Catatan:
Seringkali program yang mengandung regex
membutuhkan komentar seperti ini
// this is for formatting time
Pattern timeMatcher =
Pattern.compile("d*:d*:d* w*, w*
d*, d*");
Tips 4
Gunakan komentar pada
Return value pada
external library
Penggunaan komentar
pada return value
external library bisa
menjelaskan makna dari
suatu kode.
Tips 5
Gunakan komentar
sebagai Warning of
Consequences.
Terkadang kita perlu memberi
peringatan kepada programmer
lain tentang konsekuensi
menjalankan method yang spesial
(memakan waktu lama, dsb).
Dengan pemberian komentar pada awal kode, programmer
menjadi aware ketika menjalankan kode berikut.
Tips 6
ToDo komentar
masih diperbolehkan
Do this:
// TODO-MdM these are not needed
// We expect this to go away when we do the checkout model
protected VersionInfo makeVersion() throws Exception
{
return null;
}
Catatan: Beberapa IDE sudah bisa menyembunyikan todo comments sehingga tidak menjadi clutter
Tips 7
Gunakan komentar untuk
membentuk dokumentasi
Penggunaan komentar akan sangat
berguna jika kita membuat sebuah
library. Jadikan komentar sebagai
bentuk dokumentasi.
Catatan: Sebagai contoh JavaDocs yang menggunakan komentar sebagai
bentuk dokumentasi standar untuk sebuah library.
JavaDocs
Tips 8
Don’t be redundant
Don’t do this:
/*
set the value of the age integer to 32
*/
int age = 32;
Catatan: Tidak perlu menjelaskan hal yang sudah sangat jelas!
Tips 9
Hindari penggunaan
Misleading Comments
Tips 9
Hindari penggunaan
Journal Comments
Don’t do this:
* Changes (from 11-Oct-2001)
* --------------------------
* 11-Oct-2001 : Re-organised the class and moved it to new package
* com.jrefinery.date (DG);
* 05-Nov-2001 : Added a getDescription() method, and eliminated NotableDate
* class (DG);
* 12-Nov-2001 : IBD requires setDescription() method, now that NotableDate
* class is gone (DG); Changed getPreviousDayOfWeek(),
* getFollowingDayOfWeek() and getNearestDayOfWeek() to correct
* bugs (DG);
* 05-Dec-2001 : Fixed bug in SpreadsheetDate class (DG);
* 29-May-2002 : Moved the month constants into a separate interface
* (MonthConstants) (DG);
* 27-Aug-2002 : Fixed bug in addMonths() method, thanks to N???levka Petr (DG);
* 03-Oct-2002 : Fixed errors reported by Checkstyle (DG);
* 13-Mar-2003 : Implemented Serializable (DG);
* 29-May-2003 : Fixed bug in addMonths method (DG);
Catatan: Jangan gunakan komentar untuk mencatat perkembangan kode program
Untuk bisa menghindari journal
comments, gunakan code versioning
tools seperti git agar perkembangan
kode program tercatat dengan baik.
Catatan: Kombinasikan dengan code repository agar proses kolaborasi dan
versioning menjadi lebih powerful.
Tips 10
Don’t add
obvious noise
Obvious Noise
Catatan: Lebih baik isikan block catch dengan log message yang lebih jelas
Tips 11
Jangan gunakan komentar
pada kode yang tidak
dipakai
Kode yang
tidak dipakai
Catatan: Gunakan code versioning agar tidak perlu menyimpan log kode yang tidak dipakai
Tips 12
Jangan gunakan komentar
yang terlalu banyak
Don’t do this:
/*
RFC 2045 - Multipurpose Internet Mail Extensions (MIME)
Part One: Format of Internet Message Bodies
section 6.8. Base64 Content-Transfer-Encoding
The encoding process represents 24-bit groups of input bits as output
strings of 4 encoded characters. Proceeding from left to right, a
24-bit input group is formed by concatenating 3 8-bit input groups.
These 24 bits are then treated as 4 concatenated 6-bit groups, each
of which is translated into a single digit in the base64 alphabet.
When encoding a bit stream via the base64 encoding, the bit stream
must be presumed to be ordered with the most-significant-bit first.
That is, the first bit in the stream will be the high-order bit in
the first 8-bit byte, and the eighth bit will be the low-order bit in
the first 8-bit byte, and so on.
*/
Catatan: Intisarikan apa yang mau disampaikan pada suatu komentar

More Related Content

PDF
PDF
Clean Code and Design Pattern - Meaningful Names
PDF
Clean Code - Formatting Code
PDF
UML dan Use Case View
PPT
7. cara penanganan kesalahan
PPTX
Paralel prosesor
PDF
OPERASI INPUT OUTPUT di Linux
PDF
Os2013 lap2-ridwan
Clean Code and Design Pattern - Meaningful Names
Clean Code - Formatting Code
UML dan Use Case View
7. cara penanganan kesalahan
Paralel prosesor
OPERASI INPUT OUTPUT di Linux
Os2013 lap2-ridwan

What's hot (20)

PPT
PDF
E-Business (Business Process and Process Model)
PPTX
Sistem basis data 4
PPTX
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
PPTX
Analisis Semantik - P6
DOC
Linked list
PDF
Prinsip User Interface Design
PPTX
Topologi jaringan ppt
DOCX
Makalah java
PPTX
Kelompok 8 - Implementasi Role & Privilege pada database Oracle & my SQL
PDF
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
PDF
Interaksi Manusia dan Komputer : Conceptual Model
PPTX
Error Handling - P 7 Teknik Kompilasi
PPT
metode-pengujian-blackbox
PPT
Telekomunikasi dan Jaringan
PDF
Praktikum1 komdat_pembuatan kabel UTP (stright dan cross)
PPTX
Proses Pengembangan Perangkat Lunak (SDLC)
DOCX
Laporan praktikum 1 perintah dasar sistem operasi linux
PDF
Rpl 010 - perancangan arsitektural
PDF
Makalah perkembangan teknologi informasi
E-Business (Business Process and Process Model)
Sistem basis data 4
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
Analisis Semantik - P6
Linked list
Prinsip User Interface Design
Topologi jaringan ppt
Makalah java
Kelompok 8 - Implementasi Role & Privilege pada database Oracle & my SQL
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Interaksi Manusia dan Komputer : Conceptual Model
Error Handling - P 7 Teknik Kompilasi
metode-pengujian-blackbox
Telekomunikasi dan Jaringan
Praktikum1 komdat_pembuatan kabel UTP (stright dan cross)
Proses Pengembangan Perangkat Lunak (SDLC)
Laporan praktikum 1 perintah dasar sistem operasi linux
Rpl 010 - perancangan arsitektural
Makalah perkembangan teknologi informasi
Ad

More from Adam Mukharil Bachtiar (20)

PDF
Materi 8 - Data Mining Association Rule.pdf
PDF
Model Driven Software Development
PDF
Scrum: How to Implement
PDF
Pengujian Perangkat Lunak
PDF
Data Mining Clustering
PPTX
Data Mining Klasifikasi (Updated 30 Desember 2020)
PDF
Analisis Algoritma - Strategi Algoritma Dynamic Programming
PDF
Analisis Algoritma - Strategi Algoritma Divide and Conquer
PDF
Analisis Algoritma - Strategi Algoritma Greedy
PDF
Analisis Algoritma - Penerapan Strategi Algoritma Brute Force
PDF
Analisis Algoritma - Strategi Algoritma Brute Force
PDF
Analisis Algoritma - Kelas-kelas Dasar Efisiensi Algoritma
PDF
Analisis Algoritma - Teorema Notasi Asimptotik
PDF
Analisis Algoritma - Notasi Asimptotik
PDF
Activity Diagram
PDF
Analisis Algoritma - Langkah Desain Algoritma
PDF
Validasi ide Menggunakan Javelin Board (Idea Validation)
PDF
Analisis Algoritma - Pengantar Kompleksitas Algoritma
PDF
Analisis Algoritma - Pengantar Analisis Algoritma
PDF
Mini Google Design Sprint
Materi 8 - Data Mining Association Rule.pdf
Model Driven Software Development
Scrum: How to Implement
Pengujian Perangkat Lunak
Data Mining Clustering
Data Mining Klasifikasi (Updated 30 Desember 2020)
Analisis Algoritma - Strategi Algoritma Dynamic Programming
Analisis Algoritma - Strategi Algoritma Divide and Conquer
Analisis Algoritma - Strategi Algoritma Greedy
Analisis Algoritma - Penerapan Strategi Algoritma Brute Force
Analisis Algoritma - Strategi Algoritma Brute Force
Analisis Algoritma - Kelas-kelas Dasar Efisiensi Algoritma
Analisis Algoritma - Teorema Notasi Asimptotik
Analisis Algoritma - Notasi Asimptotik
Activity Diagram
Analisis Algoritma - Langkah Desain Algoritma
Validasi ide Menggunakan Javelin Board (Idea Validation)
Analisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Analisis Algoritma
Mini Google Design Sprint
Ad

Clean Code - Clean Comments

  • 1. Clean Code and Design Pattern Clean Comments By: Adam Mukharil Bachtiar
  • 2. Komentar seringkali digunakan untuk memberikan penjelasan perihal kode program yang ada dan seringkali komentar menjadi clutter bagi kode itu sendiri.
  • 3. “Setiap orang bodoh dapat menulis kode yang dapat dimengerti oleh komputer. Pemrogram yang baik menulis kode yang dapat dipahami manusia.” Martin Fowler
  • 4. Bad Code Pemrogram terlalu berusaha menjelaskan perihal kode program walaupun sudah jelas.
  • 5. Komentar akan memperburuk keadaan jika digunakan pada BAD CODE.
  • 6. Bagaimana membuat komentar yang baik dalam membuat kode program?
  • 7. Tips 1 Buatlah kode program yang menjelaskan dirinya sendiri.
  • 8. Do this: Instead of this: if (employee.isEligibleForFullBenefits()) Catatan: Ingat kembali konsep clean methods // Check to see if the employee is eligible for full benefits if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)
  • 9. Tips 2 Gunakan komentar untuk Legal Comments.
  • 10. Komentar sebagai header kode program untuk menjelaskan legalitas kode (Copyright contohnya) LEGAL COMMENTS Catatan: Beberapa IDE bisa menyembunyikan legal comments sehingga tidak menjadi clutter
  • 11. Do this: // Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved. // Released under the terms of the GNU General Public License version 2 or later. Catatan: Sesuaikan kebutuhan legal comments dengan aturan masing-masing entreprise
  • 12. Tips 3 Buatlah komentar yang informatif
  • 13. Do this: Instead of this: // format matched kk:mm:ss EEE, MMM dd, yyyy Pattern timeMatcher = Pattern.compile("d*:d*:d* w*, w* d*, d*"); Catatan: Seringkali program yang mengandung regex membutuhkan komentar seperti ini // this is for formatting time Pattern timeMatcher = Pattern.compile("d*:d*:d* w*, w* d*, d*");
  • 14. Tips 4 Gunakan komentar pada Return value pada external library
  • 15. Penggunaan komentar pada return value external library bisa menjelaskan makna dari suatu kode.
  • 16. Tips 5 Gunakan komentar sebagai Warning of Consequences.
  • 17. Terkadang kita perlu memberi peringatan kepada programmer lain tentang konsekuensi menjalankan method yang spesial (memakan waktu lama, dsb).
  • 18. Dengan pemberian komentar pada awal kode, programmer menjadi aware ketika menjalankan kode berikut.
  • 19. Tips 6 ToDo komentar masih diperbolehkan
  • 20. Do this: // TODO-MdM these are not needed // We expect this to go away when we do the checkout model protected VersionInfo makeVersion() throws Exception { return null; } Catatan: Beberapa IDE sudah bisa menyembunyikan todo comments sehingga tidak menjadi clutter
  • 21. Tips 7 Gunakan komentar untuk membentuk dokumentasi
  • 22. Penggunaan komentar akan sangat berguna jika kita membuat sebuah library. Jadikan komentar sebagai bentuk dokumentasi. Catatan: Sebagai contoh JavaDocs yang menggunakan komentar sebagai bentuk dokumentasi standar untuk sebuah library.
  • 24. Tips 8 Don’t be redundant
  • 25. Don’t do this: /* set the value of the age integer to 32 */ int age = 32; Catatan: Tidak perlu menjelaskan hal yang sudah sangat jelas!
  • 28. Don’t do this: * Changes (from 11-Oct-2001) * -------------------------- * 11-Oct-2001 : Re-organised the class and moved it to new package * com.jrefinery.date (DG); * 05-Nov-2001 : Added a getDescription() method, and eliminated NotableDate * class (DG); * 12-Nov-2001 : IBD requires setDescription() method, now that NotableDate * class is gone (DG); Changed getPreviousDayOfWeek(), * getFollowingDayOfWeek() and getNearestDayOfWeek() to correct * bugs (DG); * 05-Dec-2001 : Fixed bug in SpreadsheetDate class (DG); * 29-May-2002 : Moved the month constants into a separate interface * (MonthConstants) (DG); * 27-Aug-2002 : Fixed bug in addMonths() method, thanks to N???levka Petr (DG); * 03-Oct-2002 : Fixed errors reported by Checkstyle (DG); * 13-Mar-2003 : Implemented Serializable (DG); * 29-May-2003 : Fixed bug in addMonths method (DG); Catatan: Jangan gunakan komentar untuk mencatat perkembangan kode program
  • 29. Untuk bisa menghindari journal comments, gunakan code versioning tools seperti git agar perkembangan kode program tercatat dengan baik. Catatan: Kombinasikan dengan code repository agar proses kolaborasi dan versioning menjadi lebih powerful.
  • 31. Obvious Noise Catatan: Lebih baik isikan block catch dengan log message yang lebih jelas
  • 32. Tips 11 Jangan gunakan komentar pada kode yang tidak dipakai
  • 33. Kode yang tidak dipakai Catatan: Gunakan code versioning agar tidak perlu menyimpan log kode yang tidak dipakai
  • 34. Tips 12 Jangan gunakan komentar yang terlalu banyak
  • 35. Don’t do this: /* RFC 2045 - Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies section 6.8. Base64 Content-Transfer-Encoding The encoding process represents 24-bit groups of input bits as output strings of 4 encoded characters. Proceeding from left to right, a 24-bit input group is formed by concatenating 3 8-bit input groups. These 24 bits are then treated as 4 concatenated 6-bit groups, each of which is translated into a single digit in the base64 alphabet. When encoding a bit stream via the base64 encoding, the bit stream must be presumed to be ordered with the most-significant-bit first. That is, the first bit in the stream will be the high-order bit in the first 8-bit byte, and the eighth bit will be the low-order bit in the first 8-bit byte, and so on. */ Catatan: Intisarikan apa yang mau disampaikan pada suatu komentar