SlideShare a Scribd company logo
Solusi Mencegah Coding
Ruwet
design pattern - clean code - clean architecture
ARIF AKBARUL HUDA
source code https://gist.github.com/omayib/0f9fed4bda6e76a7b94185a7f9c79b73
Solusi Mencegah Coding Ruwet
WHAT THE FUCK
WHY IT IS
HAPPENING?
Its My Painful Experience
1st Email Encryption
- Banyak magic dari copy-paste
- Alur / scoping tidak beraturan
2nd Pesan Antar
- tidak jalan di HP orang lain
- disana force close tapi disini aman
3rd Apps Surveyor Bank
- Terlalu banyak variabel
- UI Logic vs Business Logic
Lesson Learned
=== without builder pattern ===
Personal nasabah = new Personal("joko","sleman","","06/04/80",
"Tempel","40","4","menikah",
"kontrak","3314140604800045","maryani",
"yanik","sri","menikah","laki-laki","08763543","swasta")
==== with builder pattern ===
Personal joko = new Personal.Builder()
.addressByCurrent(addrCurrent)
.addressByKtp(addrKtp)
.children(children)
.gender(gender).build()
=== kotlins world ===
var nasabah = Nasabah(
name = "joko",
statusPasangan = "menikah",
nmrKtp = "3314140604800045",
statusNikah = "menikah"
)
BUILDER
DESIGN PATTERN
Sudah punya alt. tanggal?
ya tidak
Tanggal brp?
05/07/80
COMPOSITE
DESIGN PATTERN
Sudah punya alt. tanggal?
ya tidak
Tanggal brp?
05/07/80
val q1 = QuestionComponent("berapa umurmu?")
var q2 = QuestionComponent("sudah menikah ?")
var q3 = QuestionComponent("dimana domisilimu");
var q4 = QuestionComponent("berapa penghasilanmu");
q1.addQueastion(q2)
view.showQuestion(q1)
view.showQuestion(q3)
view.showQuestion(q4)
Video Call
Engine 1
Video Call
Engine 2
SDK Call Engine
Your Apps Your Apps Your Apps
UI
Observer
Pattern
Strategy
pattern
Call Engine 1 Call Engine 2 ...
var phoneByWa = WhatsappCallEngine()
var phoneByGoogle = GoogleCallEngine()
var sdk = SDKCallEngine()
sdk.addCallEngine(phoneByWa)
sdk.makeACall()
sdk.closeThePhone()
sdk.addCallEngine(phoneByGoogle)
sdk.makeACall()
sdk.closeThePhone()
ConnectionMonitor:Connection
- downloader
=======================
- connecting
- disconnecting
- connected
- disconnected
FasterDownlaoder:Downloader
- connection
=======================
- download
- resume
- cancel
interface Connection
- connecting
- disconnecting
- connected
- disconnected
interface Downloader
- download
- resume
- cancel
REPOSITORY
PATTERN

More Related Content

PDF
Spotify Recommender System
PPTX
Startup Tanpa Mentor, Bisa?
PDF
Introducing Startup 101
PDF
Bedah Teknologi Semacam Gojek
PDF
Rahasia Mendapatkan Investasi Milyaran Rupiah Sebelum Usia 30 Tahun
PPTX
Membuat Media Edukasi Daring
PDF
Single responsibility pattern
PDF
5 jalan rahasia mewujudkan ide startup
Spotify Recommender System
Startup Tanpa Mentor, Bisa?
Introducing Startup 101
Bedah Teknologi Semacam Gojek
Rahasia Mendapatkan Investasi Milyaran Rupiah Sebelum Usia 30 Tahun
Membuat Media Edukasi Daring
Single responsibility pattern
5 jalan rahasia mewujudkan ide startup

More from Arif Huda (20)

ODP
programmersworld
PDF
5 Langkah Jitu Melejitkan Ide Bisnis Startup
ODP
getting started startup in millenial era
PPTX
Fingertip Detection
PDF
Protocol oriented programming
ODP
an implementation of repository pattern for mobile application
ODP
Inovasi Teknologi Berkemajuan
ODP
Git workflow
PDF
Media pembelajaran audio untuk tunanetra
ODP
Tobe a superstar programmer
ODP
clean code for high quality software
ODP
Seminar nasional internet of things 2016
ODP
Pemanfaatan Teknologi Android
PDF
Membangun ekosistem ekonomi kreatif aplikasi dan game
ODP
7 inspirasi- perusahaan-berbasis-it
ODP
Inovasi teknologi-untuk-kemajuan-bangsa
PDF
introduction to programmer career path
PDF
Persitance Data with sqlite
PDF
Restaurant recommender system
PDF
Beacon bluetooth low energy
programmersworld
5 Langkah Jitu Melejitkan Ide Bisnis Startup
getting started startup in millenial era
Fingertip Detection
Protocol oriented programming
an implementation of repository pattern for mobile application
Inovasi Teknologi Berkemajuan
Git workflow
Media pembelajaran audio untuk tunanetra
Tobe a superstar programmer
clean code for high quality software
Seminar nasional internet of things 2016
Pemanfaatan Teknologi Android
Membangun ekosistem ekonomi kreatif aplikasi dan game
7 inspirasi- perusahaan-berbasis-it
Inovasi teknologi-untuk-kemajuan-bangsa
introduction to programmer career path
Persitance Data with sqlite
Restaurant recommender system
Beacon bluetooth low energy
Ad

Recently uploaded (20)

PDF
Digital Strategies for Manufacturing Companies
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
ai tools demonstartion for schools and inter college
PDF
System and Network Administration Chapter 2
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
medical staffing services at VALiNTRY
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
System and Network Administraation Chapter 3
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
Operating system designcfffgfgggggggvggggggggg
PPT
Introduction Database Management System for Course Database
Digital Strategies for Manufacturing Companies
CHAPTER 2 - PM Management and IT Context
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Online Work Permit System for Fast Permit Processing
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Wondershare Filmora 15 Crack With Activation Key [2025
ai tools demonstartion for schools and inter college
System and Network Administration Chapter 2
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
medical staffing services at VALiNTRY
Odoo Companies in India – Driving Business Transformation.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Odoo POS Development Services by CandidRoot Solutions
System and Network Administraation Chapter 3
ManageIQ - Sprint 268 Review - Slide Deck
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Operating system designcfffgfgggggggvggggggggg
Introduction Database Management System for Course Database
Ad

Solusi Mencegah Coding Ruwet

  • 1. Solusi Mencegah Coding Ruwet design pattern - clean code - clean architecture ARIF AKBARUL HUDA source code https://gist.github.com/omayib/0f9fed4bda6e76a7b94185a7f9c79b73
  • 3. WHAT THE FUCK WHY IT IS HAPPENING?
  • 4. Its My Painful Experience
  • 5. 1st Email Encryption - Banyak magic dari copy-paste - Alur / scoping tidak beraturan
  • 6. 2nd Pesan Antar - tidak jalan di HP orang lain - disana force close tapi disini aman
  • 7. 3rd Apps Surveyor Bank - Terlalu banyak variabel - UI Logic vs Business Logic
  • 9. === without builder pattern === Personal nasabah = new Personal("joko","sleman","","06/04/80", "Tempel","40","4","menikah", "kontrak","3314140604800045","maryani", "yanik","sri","menikah","laki-laki","08763543","swasta") ==== with builder pattern === Personal joko = new Personal.Builder() .addressByCurrent(addrCurrent) .addressByKtp(addrKtp) .children(children) .gender(gender).build() === kotlins world === var nasabah = Nasabah( name = "joko", statusPasangan = "menikah", nmrKtp = "3314140604800045", statusNikah = "menikah" ) BUILDER DESIGN PATTERN
  • 10. Sudah punya alt. tanggal? ya tidak Tanggal brp? 05/07/80 COMPOSITE DESIGN PATTERN
  • 11. Sudah punya alt. tanggal? ya tidak Tanggal brp? 05/07/80 val q1 = QuestionComponent("berapa umurmu?") var q2 = QuestionComponent("sudah menikah ?") var q3 = QuestionComponent("dimana domisilimu"); var q4 = QuestionComponent("berapa penghasilanmu"); q1.addQueastion(q2) view.showQuestion(q1) view.showQuestion(q3) view.showQuestion(q4)
  • 12. Video Call Engine 1 Video Call Engine 2 SDK Call Engine Your Apps Your Apps Your Apps
  • 14. var phoneByWa = WhatsappCallEngine() var phoneByGoogle = GoogleCallEngine() var sdk = SDKCallEngine() sdk.addCallEngine(phoneByWa) sdk.makeACall() sdk.closeThePhone() sdk.addCallEngine(phoneByGoogle) sdk.makeACall() sdk.closeThePhone()
  • 15. ConnectionMonitor:Connection - downloader ======================= - connecting - disconnecting - connected - disconnected FasterDownlaoder:Downloader - connection ======================= - download - resume - cancel interface Connection - connecting - disconnecting - connected - disconnected interface Downloader - download - resume - cancel