SLAP: Trik Membuat Fungsi yang Terlihat Profesional

Sebagian besar developer pemula (dan bahkan yang sudah berpengalaman) sering terjebak pada satu hal sederhana:

Fungsi yang “bisa jalan” tapi susah dibaca.

Masalahnya bukan karena logika salah, tapi karena fungsi itu melanggar prinsip yang disebut SLAP (Single Level of Abstraction Principle).

Kalau kamu ingin kode terlihat profesional dan mudah dimengerti oleh siapa pun, prinsip ini wajib kamu pahami.


1. Apa Itu SLAP?

SLAP (Single Level of Abstraction Principle) berarti:

Setiap fungsi sebaiknya hanya beroperasi pada satu level abstraksi saja.

Artinya:
Di dalam satu fungsi, jangan campur high-level logic (apa yang dilakukan) dengan low-level detail (bagaimana caranya dilakukan).


2. Contoh Kode yang Tidak Menerapkan SLAP

Lihat contoh berikut:

function registerUser(userData) {
  console.log("Start user registration...");

  // Validate input
  if (!userData.email.includes("@")) {
    throw new Error("Invalid email address");
  }

  // Hash password
  const hashedPassword = hashPassword(userData.password);

  // Save to database
  const db = connectToDatabase();
  db.insert("users", { ...userData, password: hashedPassword });

  console.log("User registered successfully!");
}

Apakah kode ini jalan? Iya.
Apakah jelas dibaca? Tidak juga.
Karena dalam satu fungsi, ada:

  • Logging (informasi)

  • Validasi

  • Hashing

  • Database operation

Fungsi ini mencampur banyak tingkat abstraksi sekaligus.


3. Versi SLAP: Lebih Bersih dan Profesional

Sekarang kita perbaiki dengan prinsip SLAP:

function registerUser(userData) {
  console.log("Start user registration...");

  validateUserData(userData);
  const hashedPassword = preparePassword(userData.password);
  saveUserToDatabase({ ...userData, password: hashedPassword });

  console.log("User registered successfully!");
}

function validateUserData(userData) {
  if (!userData.email.includes("@")) {
    throw new Error("Invalid email address");
  }
}

function preparePassword(password) {
  return hashPassword(password);
}

function saveUserToDatabase(user) {
  const db = connectToDatabase();
  db.insert("users", user);
}

Sekarang tiap fungsi punya satu level abstraksi yang konsisten:

  • registerUser() menjelaskan apa yang terjadi.

  • Detail bagaimana caranya diserahkan ke fungsi lain.

Inilah esensi SLAP.


4. Kenapa SLAP Penting?

Meningkatkan keterbacaan kode
Orang bisa paham alur logika utama tanpa tenggelam di detail kecil.

Lebih mudah diuji (unit testing)
Kamu bisa uji tiap fungsi kecil tanpa harus jalankan semuanya.

Lebih mudah diubah
Kalau nanti database-nya ganti dari MongoDB ke Supabase, cukup ubah saveUserToDatabase() saja.

Terlihat profesional
Kode seperti ini terasa “clean” dan mudah di-review — kesan kamu sebagai developer juga meningkat.


5. Analogi Dunia Nyata

Bayangkan kamu baca resep masakan.
Kalimat yang baik adalah:

Masak nasi, goreng telur, lalu sajikan di piring.

Bukan:

Masak nasi dengan menakar air 300ml, tekan tombol cook, lalu pecahkan telur di mangkuk, panaskan minyak 3 sendok...

Yang kedua terlalu detail dalam satu langkah besar — inilah pelanggaran SLAP versi dapur 😄


6. SLAP dalam React / Frontend Modern

Misalnya kamu punya fungsi handler di React:

// ❌ Campur logic UI, validasi, dan API call
const handleSubmit = async (e) => {
  e.preventDefault()
  if (!email.includes("@")) return alert("Invalid email")
  const res = await fetch("/api/register", { method: "POST", body: JSON.stringify({ email }) })
  const data = await res.json()
  setMessage(data.message)
}

Kita perbaiki jadi lebih SLAP-friendly:

const handleSubmit = async (e) => {
  e.preventDefault()
  if (!isValidEmail(email)) return showAlert("Invalid email")
  const response = await registerUser(email)
  showMessage(response.message)
}

function isValidEmail(email) { ... }
function showAlert(msg) { ... }
function registerUser(email) { ... }

Sekarang handleSubmit() cuma “cerita besar”-nya aja.
Detail kecil diserahkan ke fungsi lain — bersih, jelas, dan profesional.


7. Kesimpulan

SLAP bukan cuma soal gaya menulis kode. Ini soal bagaimana kita berpikir secara terstruktur.
Developer hebat bukan yang bikin kode paling rumit, tapi yang bikin kode mudah dibaca, mudah diubah, dan mudah diaudit.

Saya pribadi percaya:

Fungsi yang baik itu seperti paragraf yang enak dibaca — satu ide utama, satu level pemikiran, dan tidak terlalu dalam.


🎯 Ringkasan Singkat:

  • SLAP = Satu level abstraksi per fungsi.

  • Pisahkan “apa yang dilakukan” dari “bagaimana caranya”.

  • Kode jadi bersih, modular, dan terlihat profesional.

Hey there 👋

Ready to help you explore?