SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
Clean Code and
Design Pattern
Meaningful Names
By:
Adam Mukharil Bachtiar
CLEAN CODE
I like my code to be elegant and efficient. The
logic should be straightforward to make it hard
for bugs to hide, the dependencies minimal to
ease maintenance, error handling complete
according to an articulated strategy, and
performance close to optimal so as not to tempt
people to make the code messy with unprincipled
optimizations. Clean code does one thing well.
Sumber: Clean Code, Robert C. Martin
Bjarne Stroustrup
Founder of C++
Nama itu selalu ada di dalam kode
program dan bisa muncul dalam
bentuk variabel, nama fungsi,
argumen, class, dan packages.
Bad Code
Kode program tersebut untuk
apa? Berapa detik yang
dibutuhkan untuk paham maksud
dari program ini?
Clean Code
Nama fungsi sudah cukup
menggambarkan maksud
dari fungsinya. Nama
variabel lebih jelas.
Bagaimana menggunakan
konsep nama yang baik
dalam membuat kode
program?
Tips 1
Gunakan nama yang
Intention-Revealing
Do this: Instead of this:
Tips 2
Hindari Disinformation
Penggunaan nama yang
mengandung istilah di
pemrograman sebaiknya sesuai
dengan implementasinya.
Do this: Instead of this:
nameList = [’Adam’, ‘Budi’, ‘Vano’]
Catatan:
List dalam python diwakili dengan tanda [ ].
nameList = (’Adam’, ‘Budi’, ‘Vano’)
Catatan:
Tanda ( ) menandakan tipe SET di dalam Python.
Tips 3
Buat nama yang
Jelas Perbedaannya
Do this: Instead of this:
Catatan:
Penggunaan source dan dest (destination)
meningkatkan perbedaan dibanding
penggunaan a1 dan a2
Tips 4
Gunakan
Pronounceable Names
Seringkali programmer
membicarakan kode
program ketika sedang
istirahat ataupun mengobrol.
Do this: Instead of this:
Catatan:
Penggunaan nama yang mudah disebutkan
akan menolong programmer ketika
berdiskusi tanpa komputer.
Tips 5
Gunakan
Searchable Names
Penggunaan nama variabel
dengan satu karakter
biasanya menyulitkan
pencarian kode program.
Do this: Instead of this:
Catatan:
Nama variabel yang hanya satu karakter
akan muncul bersamaan dengan kode lain
yang mengandung karakter tersebut.
Tips 6
Hindari penggunaan
Encoding
Do this: Instead of this:
nama%20orang = [’Adam’, ‘Budi’, ‘Vano’]
Catatan:
Beberapa bahasa sangat strict dalam
penggunaan encoding
namaOrang = (’Adam’, ‘Budi’, ‘Vano’)
Catatan:
Variabel nama orang bisa bertukar dengan
nama_orang. Sesuaikan bahasa yang digunakan.
Do this: Instead of this:
Catatan:
Beberapa programmer biasanya
menambahkan imbuhan untuk penanda.
Do this: Instead of this:
interface IBangunDatar{
..
}
Catatan:
Penggunaan prefix I biasanya digunakan
programmer untuk membedakan interface
dengan abstract class pada Java.
interface BangunDatar{
..
}
Tips 7
Hindari penggunaan
Mental Mapping
Pengajar pemrograman
seringkali menanamkan
penggunaan variabel i dalam
struktur perulangan.
Tips 8
Gunakan kata benda untuk
nama kelas
Tips 9
Nama method harus
mengandung verb atau
verb-phrase
Mahasiswa
deleteMahasiswa
ControllerMatkul
MataKuliah
hapusMataKuliah
cetakReportSKS
Nama Class
Nama
Method
Tips 10
Pilih satu nama untuk
setiap konsep
Sebagai contoh untuk fungsi
ubah data, pilih satu nama baik
ubahData( ) atau editData( ) tapi
tidak keduanya.
Tips 11
Gunakan nama dari
Solution Domain
Penggunaan nama yang
familiar oleh Programmer
dapat membuat kode
program lebih dipahami.
antrianKeluhan ataukeluhanQueue?
Catatan: lakukan ini hanya jika ada istilah yang memang common di domain programming, selebihnya
gunakan problem domain
Tips 12
Tambahkan
Meaningful Context
Pahami Kode
Program Berikut!
Bandingkan kode
sebelumnya
dengan yang ini!

Contenu connexe

Tendances

REKAYASA PERANGKAT LUNAK (REQUIREMENTS ANALYSIS FUNDAMENTALS)
REKAYASA PERANGKAT LUNAK (REQUIREMENTS ANALYSIS FUNDAMENTALS)REKAYASA PERANGKAT LUNAK (REQUIREMENTS ANALYSIS FUNDAMENTALS)
REKAYASA PERANGKAT LUNAK (REQUIREMENTS ANALYSIS FUNDAMENTALS)
Listyowatik (Yanie)
 
9. tabel informasi
9. tabel informasi9. tabel informasi
9. tabel informasi
yuster92
 
Buku ajar imk dyah ayu irawati
Buku ajar imk dyah ayu irawatiBuku ajar imk dyah ayu irawati
Buku ajar imk dyah ayu irawati
Robby Firmansyah
 
Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)
Nabil Muhammad Firdaus
 
6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantik
yuster92
 

Tendances (20)

Pertemuan 7 camera
Pertemuan 7 cameraPertemuan 7 camera
Pertemuan 7 camera
 
E-Business (Business Process and Process Model)
E-Business (Business Process and Process Model)E-Business (Business Process and Process Model)
E-Business (Business Process and Process Model)
 
Pengujian Perangkat Lunak
Pengujian Perangkat LunakPengujian Perangkat Lunak
Pengujian Perangkat Lunak
 
REKAYASA PERANGKAT LUNAK (REQUIREMENTS ANALYSIS FUNDAMENTALS)
REKAYASA PERANGKAT LUNAK (REQUIREMENTS ANALYSIS FUNDAMENTALS)REKAYASA PERANGKAT LUNAK (REQUIREMENTS ANALYSIS FUNDAMENTALS)
REKAYASA PERANGKAT LUNAK (REQUIREMENTS ANALYSIS FUNDAMENTALS)
 
technik kompilasi
technik kompilasitechnik kompilasi
technik kompilasi
 
Analisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik KompilasiAnalisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik Kompilasi
 
9. tabel informasi
9. tabel informasi9. tabel informasi
9. tabel informasi
 
CFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik KompilasiCFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik Kompilasi
 
Minggu 1 - Using Alice 3
Minggu 1 - Using Alice 3Minggu 1 - Using Alice 3
Minggu 1 - Using Alice 3
 
Buku ajar imk dyah ayu irawati
Buku ajar imk dyah ayu irawatiBuku ajar imk dyah ayu irawati
Buku ajar imk dyah ayu irawati
 
Menulis opini
Menulis opiniMenulis opini
Menulis opini
 
Kumpulan catatan Teknik Kompilasi
Kumpulan catatan Teknik KompilasiKumpulan catatan Teknik Kompilasi
Kumpulan catatan Teknik Kompilasi
 
Error Handling - P 7 Teknik Kompilasi
Error Handling - P 7 Teknik Kompilasi Error Handling - P 7 Teknik Kompilasi
Error Handling - P 7 Teknik Kompilasi
 
Analisis leksikal tugas
Analisis leksikal tugasAnalisis leksikal tugas
Analisis leksikal tugas
 
03 pseudocode
03 pseudocode03 pseudocode
03 pseudocode
 
7 pengembangan sistem
7 pengembangan sistem7 pengembangan sistem
7 pengembangan sistem
 
1. pengenalan python
1. pengenalan python1. pengenalan python
1. pengenalan python
 
Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)
 
6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantik
 
The Basic Setup for OJS 2
The Basic Setup for OJS 2The Basic Setup for OJS 2
The Basic Setup for OJS 2
 

Similaire à Clean Code and Design Pattern - Meaningful Names

Tugas praktikum algoritma modul 1 faisal al zamar
Tugas praktikum algoritma modul 1 faisal al zamarTugas praktikum algoritma modul 1 faisal al zamar
Tugas praktikum algoritma modul 1 faisal al zamar
Faisal Zamar
 
Slide-INF202-INF202-Slide-01.pdf
Slide-INF202-INF202-Slide-01.pdfSlide-INF202-INF202-Slide-01.pdf
Slide-INF202-INF202-Slide-01.pdf
GratechComputer
 
Mengapa microsoft perlu menciptakan bahasa c#
Mengapa microsoft perlu menciptakan bahasa c#Mengapa microsoft perlu menciptakan bahasa c#
Mengapa microsoft perlu menciptakan bahasa c#
Khoirul Faiz
 
Algoritma dan pemrograman
Algoritma dan pemrogramanAlgoritma dan pemrograman
Algoritma dan pemrograman
Mastur Cell
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
PANJI_ADITYAN
 
Pertemuan 03-04 - Pemrograman C
Pertemuan 03-04 - Pemrograman CPertemuan 03-04 - Pemrograman C
Pertemuan 03-04 - Pemrograman C
Nurdin Al-Azies
 

Similaire à Clean Code and Design Pattern - Meaningful Names (20)

Makalah java
Makalah javaMakalah java
Makalah java
 
Clean Code - Clean Comments
Clean Code - Clean CommentsClean Code - Clean Comments
Clean Code - Clean Comments
 
Tugas praktikum algoritma modul 1 faisal al zamar
Tugas praktikum algoritma modul 1 faisal al zamarTugas praktikum algoritma modul 1 faisal al zamar
Tugas praktikum algoritma modul 1 faisal al zamar
 
Download gratis modul c++
Download gratis modul c++Download gratis modul c++
Download gratis modul c++
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
 
Pertemuan I Teori
Pertemuan I TeoriPertemuan I Teori
Pertemuan I Teori
 
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compilerModul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
 
Pemrograman dasar
Pemrograman dasarPemrograman dasar
Pemrograman dasar
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
flowchart
flowchartflowchart
flowchart
 
Tutorial basic of c++ lesson 1 ind ver
Tutorial basic of c++ lesson 1 ind verTutorial basic of c++ lesson 1 ind ver
Tutorial basic of c++ lesson 1 ind ver
 
Bab 1
Bab 1 Bab 1
Bab 1
 
Pengertian pseudo code dan contohnya
Pengertian pseudo code dan contohnyaPengertian pseudo code dan contohnya
Pengertian pseudo code dan contohnya
 
Slide-INF202-INF202-Slide-01.pdf
Slide-INF202-INF202-Slide-01.pdfSlide-INF202-INF202-Slide-01.pdf
Slide-INF202-INF202-Slide-01.pdf
 
Mengapa microsoft perlu menciptakan bahasa c#
Mengapa microsoft perlu menciptakan bahasa c#Mengapa microsoft perlu menciptakan bahasa c#
Mengapa microsoft perlu menciptakan bahasa c#
 
Materi matakuliah bahasa c
Materi matakuliah bahasa cMateri matakuliah bahasa c
Materi matakuliah bahasa c
 
Algoritma dan pemrograman
Algoritma dan pemrogramanAlgoritma dan pemrograman
Algoritma dan pemrograman
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Pertemuan 03-04 - Pemrograman C
Pertemuan 03-04 - Pemrograman CPertemuan 03-04 - Pemrograman C
Pertemuan 03-04 - Pemrograman C
 

Plus de Adam Mukharil Bachtiar

Plus de Adam Mukharil Bachtiar (20)

Materi 8 - Data Mining Association Rule.pdf
Materi 8 - Data Mining Association Rule.pdfMateri 8 - Data Mining Association Rule.pdf
Materi 8 - Data Mining Association Rule.pdf
 
Model Driven Software Development
Model Driven Software DevelopmentModel Driven Software Development
Model Driven Software Development
 
Scrum: How to Implement
Scrum: How to ImplementScrum: How to Implement
Scrum: How to Implement
 
Data Mining Clustering
Data Mining ClusteringData Mining Clustering
Data Mining Clustering
 
Data Mining Klasifikasi (Updated 30 Desember 2020)
Data Mining Klasifikasi (Updated 30 Desember 2020)Data Mining Klasifikasi (Updated 30 Desember 2020)
Data Mining Klasifikasi (Updated 30 Desember 2020)
 
Analisis Algoritma - Strategi Algoritma Dynamic Programming
Analisis Algoritma - Strategi Algoritma Dynamic ProgrammingAnalisis Algoritma - Strategi Algoritma Dynamic Programming
Analisis Algoritma - Strategi Algoritma Dynamic Programming
 
Analisis Algoritma - Strategi Algoritma Divide and Conquer
Analisis Algoritma - Strategi Algoritma Divide and ConquerAnalisis Algoritma - Strategi Algoritma Divide and Conquer
Analisis Algoritma - Strategi Algoritma Divide and Conquer
 
Analisis Algoritma - Strategi Algoritma Greedy
Analisis Algoritma - Strategi Algoritma GreedyAnalisis Algoritma - Strategi Algoritma Greedy
Analisis Algoritma - Strategi Algoritma Greedy
 
Analisis Algoritma - Penerapan Strategi Algoritma Brute Force
Analisis Algoritma - Penerapan Strategi Algoritma Brute ForceAnalisis Algoritma - Penerapan Strategi Algoritma Brute Force
Analisis Algoritma - Penerapan Strategi Algoritma Brute Force
 
Analisis Algoritma - Strategi Algoritma Brute Force
Analisis Algoritma - Strategi Algoritma Brute ForceAnalisis Algoritma - Strategi Algoritma Brute Force
Analisis Algoritma - Strategi Algoritma Brute Force
 
Analisis Algoritma - Kelas-kelas Dasar Efisiensi Algoritma
Analisis Algoritma - Kelas-kelas Dasar Efisiensi AlgoritmaAnalisis Algoritma - Kelas-kelas Dasar Efisiensi Algoritma
Analisis Algoritma - Kelas-kelas Dasar Efisiensi Algoritma
 
Analisis Algoritma - Teorema Notasi Asimptotik
Analisis Algoritma - Teorema Notasi AsimptotikAnalisis Algoritma - Teorema Notasi Asimptotik
Analisis Algoritma - Teorema Notasi Asimptotik
 
Analisis Algoritma - Notasi Asimptotik
Analisis Algoritma - Notasi AsimptotikAnalisis Algoritma - Notasi Asimptotik
Analisis Algoritma - Notasi Asimptotik
 
Activity Diagram
Activity DiagramActivity Diagram
Activity Diagram
 
UML dan Use Case View
UML dan Use Case ViewUML dan Use Case View
UML dan Use Case View
 
Analisis Algoritma - Langkah Desain Algoritma
Analisis Algoritma - Langkah Desain AlgoritmaAnalisis Algoritma - Langkah Desain Algoritma
Analisis Algoritma - Langkah Desain Algoritma
 
Validasi ide Menggunakan Javelin Board (Idea Validation)
Validasi ide Menggunakan Javelin Board (Idea Validation)Validasi ide Menggunakan Javelin Board (Idea Validation)
Validasi ide Menggunakan Javelin Board (Idea Validation)
 
Analisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Kompleksitas AlgoritmaAnalisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Kompleksitas Algoritma
 
Analisis Algoritma - Pengantar Analisis Algoritma
Analisis Algoritma - Pengantar Analisis AlgoritmaAnalisis Algoritma - Pengantar Analisis Algoritma
Analisis Algoritma - Pengantar Analisis Algoritma
 
Mini Google Design Sprint
Mini Google Design SprintMini Google Design Sprint
Mini Google Design Sprint
 

Clean Code and Design Pattern - Meaningful Names