SlideShare a Scribd company logo
1 of 19
Download to read offline
Deddy Setyadi
Spaghetti Code
Beberapa bahasa pemrograman yang dicampur menjadi
satu, lalu menghasilkan kode yang berbelit-belit, sulit
dipahami, dan tidak terstruktur.
Kemudian menyebabkan kumpulan kode tersebut sulit
untuk di-maintenance, tidak bisa digunakan kembali,
atau bahkan sulit dipahami oleh seorang developer itu
sendiri.
Pengertian
Native PHP
PHP, secara natural
memang memiliki
semacam kelebihan
(bisa dikatakan
bakat) untuk
menghasilkan
Spaghetti Code!
Modularitas.
Pengorganisasian Kode.
Pembagian antara fungsi
dan tujuan.
Kemungkinan
penggunaan ulang.
Isu Spaghetti Code
PHP Framework
PHP Framework
Sebuah php framework adalah alat yang
menyederhanakan persoalan, dengan menyediakan
library yang sering digunakan sehingga developer bisa
menuntaskan tugasnya lebih cepat.
PHP Framework
Hal-hal lain yang diperkenalkan oleh PHP Framework :
Organisasi kode.
Mempromosikan standar penulisan kode.
Mempromosikan reusabilitas kode.
PHP Framework
Namun, tugas PHP Framework hanyalah
menyederhanakan. Sekali-lagi, menyederhanakan.
Bukan menyelesaikan.
PHP Framework
“Laravel is a clean and classy framework for PHP web
development. Freeing you from spaghetti code, Laravel
helps you create wonderful applications using simple,
expressive syntax,” katanya.
PHP Framework
Problem utama pada (semua) PHP Framework :
Kapabilitas dari suatu produk atau sistem untuk
berinteraksi dan berfungsi dengan produk atau
sistem lain, kini atau di masa mendatang, tanpa
batasan akses atau implementasi.
(interopabilitas)
PHP Framework
Contoh Kasus :
Butuh Package
A
Tersedia
untuk
Framework
lain
Tidak
menemukan
Tanda-Tanda Spaghetti Code
- IF..ELSEIF..ELSEIF..
if ($status == "awake"){
$actitivity = "Writing spaghetti code";
}elseif($healthstatus == "OK"){
$activity = "Sleep";
}else{
print "CALL 911 IMMEDIATELY!";
}
- Error Berantai
Parse error: parse error in /home/index.php on line 140
20 minutes later
Parse error: parse error in /home/index.php on line 141
20 minutes later
Parse error: parse error in /home/index.php on line 142
Tanda-Tanda Spaghetti Code
- Include tak terhingga
index.php:
<?php include("menu.php");?>
...
menu.php:
<?php include("navigation.php");?>
...
navigation.php:
<?php include("newmenu.php");?>
...
newmenu.php:
<?php include("newmenu_final.php");?>
...
- Kode HTML dalam sebuah fungsi
- Membuat class yang terpisah untuk satu function
- Pernyataan IF yang mengharuskan developer untuk scroll teks editor ke kanan
- Tidak Ada Komentar
http://www.webmasterworld.com/forum88/2884-4-30.htm
Solusi
Keep your code, clean !
Clean Code
Tidak adanya redundansi
Ketika prinsip ini sudah terpakai, maka ketika ada
kesalahan kecil, tidak perlu melakukan perubahan yang
banyak.
Menyenangkan ketika dibaca
Buatlah sesimpel mungkin dan hindari yang tidak
dibutuhkan.
Clean Code
Mudah dipahami oleh developer lain
Seorang developer tidak menulis kode untuk dirinya
sendiri, atau untuk compiler. Namun, developer menulis
kode untuk developer lain.
Minimalkan Dependencies
Lebih banyak dependency, maka kedepannya akan
lebih sulit untuk mengelola dan mengubahnya.
Clean Code
Memiliki Unit Testing
Untuk mengetahui apakah sudah berjalan sesuai
dengan rencana.
Ekspresif
Baik itu variabel, class, atau function harus memiliki
nama yang sesuai dengan intensinya. http://c2.
com/cgi/wiki?SelfDocumentingCode
Daftar Pustaka
● https://gist.github.com/toopay/7086599
● http://blog.goyello.com/2013/01/21/top-9-
principles-clean-code/
● http://blog.pluralsight.com/7-reasons-clean-code-
matters
● http://www.webmasterworld.com/forum88/2884.
htm
● http://www.workingsoftware.com.
au/page/Your_templating_engine_sucks_and_ever
ything_you_have_ever_written_is_spaghetti_code_
yes_you
● http://en.wikipedia.org/wiki/Spaghetti_code
● http://c2.com/cgi/wiki?SelfDocumentingCode
●
“Programming is the art of telling another human
what one wants the computer to do. “
- Donald Knuth -

More Related Content

What's hot

Makalah I Rancangan Database CDM dan PDM
Makalah I Rancangan Database CDM dan PDMMakalah I Rancangan Database CDM dan PDM
Makalah I Rancangan Database CDM dan PDMElma Fiana
 
Modul microsoft word 2013
Modul microsoft word 2013Modul microsoft word 2013
Modul microsoft word 2013Anto Jurang
 
Materi ajar browser
Materi ajar browserMateri ajar browser
Materi ajar browserGemi Siksmat
 
Pengenalan power designer
Pengenalan power designerPengenalan power designer
Pengenalan power designerpia_13
 
Dasar dasar dan aplikasi word-power point
Dasar dasar dan aplikasi word-power pointDasar dasar dan aplikasi word-power point
Dasar dasar dan aplikasi word-power pointarybudi88
 
Data Base Tiket Pesawat
Data Base Tiket PesawatData Base Tiket Pesawat
Data Base Tiket Pesawatnaufals11
 
Laporan Praktek Jaringan Komputer "Jaringan perangkat lokal"
Laporan Praktek Jaringan Komputer "Jaringan perangkat lokal"Laporan Praktek Jaringan Komputer "Jaringan perangkat lokal"
Laporan Praktek Jaringan Komputer "Jaringan perangkat lokal"Riyo D'lasphaga
 
Bab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databaseBab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databasefebeniken
 
RPL 1 (Lama) - Pengujian Perangkat Lunak
RPL 1 (Lama) - Pengujian Perangkat LunakRPL 1 (Lama) - Pengujian Perangkat Lunak
RPL 1 (Lama) - Pengujian Perangkat LunakAdam Mukharil Bachtiar
 
Presentasi Pembuatan Website E-Commerce
Presentasi Pembuatan Website E-CommercePresentasi Pembuatan Website E-Commerce
Presentasi Pembuatan Website E-CommerceShofura Kamal
 
Materi Struktur Data Tree
Materi Struktur Data TreeMateri Struktur Data Tree
Materi Struktur Data TreeMeta N
 
Analisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKAnalisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKMiftahul Muttaqin
 
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYASEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYAMandiri Sekuritas
 
Linked List dalam Struktur Data
Linked List dalam Struktur DataLinked List dalam Struktur Data
Linked List dalam Struktur DataFajar Sany
 
Integrasi slims atau eprints dengan dspace
Integrasi slims atau eprints dengan dspaceIntegrasi slims atau eprints dengan dspace
Integrasi slims atau eprints dengan dspaceDwi Fajar Saputra
 
Algoritma pemrograman 01
Algoritma pemrograman 01Algoritma pemrograman 01
Algoritma pemrograman 01Indra Panggalo
 

What's hot (20)

Makalah I Rancangan Database CDM dan PDM
Makalah I Rancangan Database CDM dan PDMMakalah I Rancangan Database CDM dan PDM
Makalah I Rancangan Database CDM dan PDM
 
Modul microsoft word 2013
Modul microsoft word 2013Modul microsoft word 2013
Modul microsoft word 2013
 
Materi ajar browser
Materi ajar browserMateri ajar browser
Materi ajar browser
 
Pengenalan power designer
Pengenalan power designerPengenalan power designer
Pengenalan power designer
 
Dasar dasar dan aplikasi word-power point
Dasar dasar dan aplikasi word-power pointDasar dasar dan aplikasi word-power point
Dasar dasar dan aplikasi word-power point
 
Data Base Tiket Pesawat
Data Base Tiket PesawatData Base Tiket Pesawat
Data Base Tiket Pesawat
 
Makalah mikrotik
Makalah mikrotikMakalah mikrotik
Makalah mikrotik
 
Ppt html5
Ppt html5Ppt html5
Ppt html5
 
Presentation java PPT
Presentation java PPTPresentation java PPT
Presentation java PPT
 
Laporan Praktek Jaringan Komputer "Jaringan perangkat lokal"
Laporan Praktek Jaringan Komputer "Jaringan perangkat lokal"Laporan Praktek Jaringan Komputer "Jaringan perangkat lokal"
Laporan Praktek Jaringan Komputer "Jaringan perangkat lokal"
 
Bab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databaseBab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-database
 
RPL 1 (Lama) - Pengujian Perangkat Lunak
RPL 1 (Lama) - Pengujian Perangkat LunakRPL 1 (Lama) - Pengujian Perangkat Lunak
RPL 1 (Lama) - Pengujian Perangkat Lunak
 
Presentasi Pembuatan Website E-Commerce
Presentasi Pembuatan Website E-CommercePresentasi Pembuatan Website E-Commerce
Presentasi Pembuatan Website E-Commerce
 
Materi Struktur Data Tree
Materi Struktur Data TreeMateri Struktur Data Tree
Materi Struktur Data Tree
 
Analisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKAnalisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMK
 
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYASEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
 
Linked List dalam Struktur Data
Linked List dalam Struktur DataLinked List dalam Struktur Data
Linked List dalam Struktur Data
 
Integrasi slims atau eprints dengan dspace
Integrasi slims atau eprints dengan dspaceIntegrasi slims atau eprints dengan dspace
Integrasi slims atau eprints dengan dspace
 
Algoritma pemrograman 01
Algoritma pemrograman 01Algoritma pemrograman 01
Algoritma pemrograman 01
 
Pengantar UI/UX
Pengantar UI/UXPengantar UI/UX
Pengantar UI/UX
 

Similar to Spaghetti code

E commerce dengan php mysql
E commerce dengan php mysqlE commerce dengan php mysql
E commerce dengan php mysqlAlvin Setiawan
 
Code igneter
Code igneterCode igneter
Code ignetermaiefendi
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesiakaniadona
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesiakaniadona
 
Asas cakephp-mvc
Asas cakephp-mvcAsas cakephp-mvc
Asas cakephp-mvckriptonium
 
Chapter 1 perkenalan code igniter 2.0
Chapter 1 perkenalan code igniter 2.0Chapter 1 perkenalan code igniter 2.0
Chapter 1 perkenalan code igniter 2.0Andarias Jacob Calvyn
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ciWira Hul
 
Pemograman PHP Dasar
Pemograman PHP DasarPemograman PHP Dasar
Pemograman PHP DasarTeukuMahawira
 
Modul praktikum algoritma
Modul praktikum algoritmaModul praktikum algoritma
Modul praktikum algoritmaRony BolaNk
 
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniterMembangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniterBeni Krisbiantoro
 
Modul Pelatihan CodeIgniter Dasar
Modul Pelatihan CodeIgniter DasarModul Pelatihan CodeIgniter Dasar
Modul Pelatihan CodeIgniter DasarRidwan Fadjar
 
Workshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterWorkshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterAdi Setiawan
 

Similar to Spaghetti code (20)

E commerce dengan php mysql
E commerce dengan php mysqlE commerce dengan php mysql
E commerce dengan php mysql
 
Tugas rekweb 4
Tugas rekweb 4Tugas rekweb 4
Tugas rekweb 4
 
Pemrograman dasar
Pemrograman dasarPemrograman dasar
Pemrograman dasar
 
Php mysq l - siapa - takut
Php mysq l - siapa - takutPhp mysq l - siapa - takut
Php mysq l - siapa - takut
 
Code igneter
Code igneterCode igneter
Code igneter
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesia
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesia
 
Asas cakephp-mvc
Asas cakephp-mvcAsas cakephp-mvc
Asas cakephp-mvc
 
Ci 1
Ci 1Ci 1
Ci 1
 
Chapter 1 perkenalan code igniter 2.0
Chapter 1 perkenalan code igniter 2.0Chapter 1 perkenalan code igniter 2.0
Chapter 1 perkenalan code igniter 2.0
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
 
Web programming
Web programmingWeb programming
Web programming
 
Cara Belajar PHP
Cara Belajar PHPCara Belajar PHP
Cara Belajar PHP
 
Pemograman PHP Dasar
Pemograman PHP DasarPemograman PHP Dasar
Pemograman PHP Dasar
 
Modul praktikum algoritma
Modul praktikum algoritmaModul praktikum algoritma
Modul praktikum algoritma
 
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniterMembangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
 
Modul Pelatihan CodeIgniter Dasar
Modul Pelatihan CodeIgniter DasarModul Pelatihan CodeIgniter Dasar
Modul Pelatihan CodeIgniter Dasar
 
Workshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterWorkshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniter
 
MATERI -1.pptx
MATERI -1.pptxMATERI -1.pptx
MATERI -1.pptx
 

Spaghetti code

  • 2. Beberapa bahasa pemrograman yang dicampur menjadi satu, lalu menghasilkan kode yang berbelit-belit, sulit dipahami, dan tidak terstruktur. Kemudian menyebabkan kumpulan kode tersebut sulit untuk di-maintenance, tidak bisa digunakan kembali, atau bahkan sulit dipahami oleh seorang developer itu sendiri. Pengertian
  • 3. Native PHP PHP, secara natural memang memiliki semacam kelebihan (bisa dikatakan bakat) untuk menghasilkan Spaghetti Code!
  • 4. Modularitas. Pengorganisasian Kode. Pembagian antara fungsi dan tujuan. Kemungkinan penggunaan ulang. Isu Spaghetti Code
  • 6. PHP Framework Sebuah php framework adalah alat yang menyederhanakan persoalan, dengan menyediakan library yang sering digunakan sehingga developer bisa menuntaskan tugasnya lebih cepat.
  • 7. PHP Framework Hal-hal lain yang diperkenalkan oleh PHP Framework : Organisasi kode. Mempromosikan standar penulisan kode. Mempromosikan reusabilitas kode.
  • 8. PHP Framework Namun, tugas PHP Framework hanyalah menyederhanakan. Sekali-lagi, menyederhanakan. Bukan menyelesaikan.
  • 9. PHP Framework “Laravel is a clean and classy framework for PHP web development. Freeing you from spaghetti code, Laravel helps you create wonderful applications using simple, expressive syntax,” katanya.
  • 10. PHP Framework Problem utama pada (semua) PHP Framework : Kapabilitas dari suatu produk atau sistem untuk berinteraksi dan berfungsi dengan produk atau sistem lain, kini atau di masa mendatang, tanpa batasan akses atau implementasi. (interopabilitas)
  • 11. PHP Framework Contoh Kasus : Butuh Package A Tersedia untuk Framework lain Tidak menemukan
  • 12. Tanda-Tanda Spaghetti Code - IF..ELSEIF..ELSEIF.. if ($status == "awake"){ $actitivity = "Writing spaghetti code"; }elseif($healthstatus == "OK"){ $activity = "Sleep"; }else{ print "CALL 911 IMMEDIATELY!"; } - Error Berantai Parse error: parse error in /home/index.php on line 140 20 minutes later Parse error: parse error in /home/index.php on line 141 20 minutes later Parse error: parse error in /home/index.php on line 142
  • 13. Tanda-Tanda Spaghetti Code - Include tak terhingga index.php: <?php include("menu.php");?> ... menu.php: <?php include("navigation.php");?> ... navigation.php: <?php include("newmenu.php");?> ... newmenu.php: <?php include("newmenu_final.php");?> ... - Kode HTML dalam sebuah fungsi - Membuat class yang terpisah untuk satu function - Pernyataan IF yang mengharuskan developer untuk scroll teks editor ke kanan - Tidak Ada Komentar http://www.webmasterworld.com/forum88/2884-4-30.htm
  • 15. Clean Code Tidak adanya redundansi Ketika prinsip ini sudah terpakai, maka ketika ada kesalahan kecil, tidak perlu melakukan perubahan yang banyak. Menyenangkan ketika dibaca Buatlah sesimpel mungkin dan hindari yang tidak dibutuhkan.
  • 16. Clean Code Mudah dipahami oleh developer lain Seorang developer tidak menulis kode untuk dirinya sendiri, atau untuk compiler. Namun, developer menulis kode untuk developer lain. Minimalkan Dependencies Lebih banyak dependency, maka kedepannya akan lebih sulit untuk mengelola dan mengubahnya.
  • 17. Clean Code Memiliki Unit Testing Untuk mengetahui apakah sudah berjalan sesuai dengan rencana. Ekspresif Baik itu variabel, class, atau function harus memiliki nama yang sesuai dengan intensinya. http://c2. com/cgi/wiki?SelfDocumentingCode
  • 18. Daftar Pustaka ● https://gist.github.com/toopay/7086599 ● http://blog.goyello.com/2013/01/21/top-9- principles-clean-code/ ● http://blog.pluralsight.com/7-reasons-clean-code- matters ● http://www.webmasterworld.com/forum88/2884. htm ● http://www.workingsoftware.com. au/page/Your_templating_engine_sucks_and_ever ything_you_have_ever_written_is_spaghetti_code_ yes_you ● http://en.wikipedia.org/wiki/Spaghetti_code ● http://c2.com/cgi/wiki?SelfDocumentingCode ●
  • 19. “Programming is the art of telling another human what one wants the computer to do. “ - Donald Knuth -