Laravel (and PHP) Naming Guide — Do this to Make Your Code Better

Khoerul Umam
4 min readJan 24, 2023

--

Jika kamu adalah seorang junior programmer, atau medior programmer dan masih menggunakan nama variable, fungsi, dan class yang sembarangan, stop dari sekarang. Programming seperti menulis sebuah novel, jika isi novelmu berisi istilah dan kata yang tidak diketahui oleh pembaca, bagaimana bisa pembaca memahami alur ceritanya?

Images from unsplash by https://unsplash.com/@hishahadat

Hal ini sering saya temui ketika sedang review code, penamaan yang tidak konsisten seperti misalnya pencampuran antar dua bahasa seperti getNilai atau penamaan yang terlihat seperti ‘yang penting jadi’ misalnya x, a, i, dsb . Yuk mulai kurangi kebiasaan menulis kode seperti itu.

“Tapi kan saya menulis kode supaya hanya saya — dan Tuhan — yang tahu” ucap seorang programmer yang ingin karyanya hanya dia yang memahaminya. No offense tapi hal seperti itu selalu membuat saya tergelitik. Maksud saya begini, ketika saya pertama kali belajar programming, memang saya melakukan penamaan yang luar biasa kacau, dan ketika saya ingin melihatnya kembali beberapa tahun kemudian, saya jadi bingung “sebenarnya saya ini dulu buat apa, sih?” Seunik apapun isi program yang kamu buat, apakah kamu yakin dalam 2,3 atau 5 tahun masih paham dengan alur program yang kamu buat?

Saya sudah rangkum beberapa guide penamaan di Laravel (dan tentunya di PHP) secara ringkas, padat dan semoga jelas.

Bahasa

Bahasa yang digunakan bahasa inggris, semua, jangan campur.

Penamaan Class

Untuk penamaan class di PHP pastikan selalu diawali dengan kapital dan PascalCase. Untuk penamaan model Laravel gunakan kata singular misal class User {} tidak boleh plural seperti class Users {}

Begitu juga dengan controller, gunakan kata singular ditambah Controller dalam format PascalCase. Contoh class CarController {} tidak boleh class CarsController {}, class Carscontroller {}, class carcontroller {}, class CarControllers {}

Kalau mau buat class lain, misal Repository atau Service, pastikan diberi prefix sesuai namanya, misalclass UserService {} dan class UserRepository {} tidak boleh plural

Penamaan Database

Untuk penamaan tabel di database, gunakan lowercase dan tipenya plural atau jamak. Tidak boleh singular. Misalnya untuk menyimpan data user beri nama users tidak boleh user atau misalnya menyimpan data buku beri nama tabel books tidak boleh book

Penamaan kolom atau atribut, gunakan lowercase dengan style snake_case. Misalnya user_id, created_at, blog_id tidak boleh userid, userId, createdAt, CreatedAt

Pastikan disetiap tabel ada primary key, dan primary key-nya diberi nama id sedangkan untuk foreign key di tabel lain, beri prefix _id misal blog_id, user_id, post_id tidak boleh blogId, userId, PostId

Pivot tabel, untuk penghubung antara dua tabel diberi nama lowercase dengan style snake_case dan harus urut abjad. Misalnya post_user, article_blog karena post dan user (p dan u) lebih dulu p dalam abjad, begitu juga article dan blog (a dan b) lebih dulu a. Tidak boleh seperti ini user_post, userPost, postUser

Penamaan Variabel

Harus jelas, baik di PHP maupun di Laravel. Hindari singkatan misal $pst, $blg, $usr dan hindari campur-campur bahasa misal $priceBuku . Jika variabel menyimpan banyak data seperti array, gunakan plural. Misal $users = [] jangan $user = [] dan begitu juga jika variable hanya menyimpan satu value, gunakan singular, misal $bookName = "Mastering PHP" jangan seperti ini $booksName = "Mastering PHP"

Untuk variabel yang digunakan pada saat looping, jangan menggunakan $i, $j, $k tapi gunakan yang lebih jelas misal$index . Atau best practice nya, misal kamu mempunyai data array di dalam variabel $users dan kamu loop untuk mendapatkan tiap nilainya, beri nama variabel $user lebih jelasnya seperti ini

$users = ["Andri", "Andro", "Ardian"];

// Jika ingin menggunakan for looping. Hindari mengubah variabel $index
// dengan $i, $j, atau $k, atau yang lainnya
for ($index = 0; $index < count($users); $index++) {
echo $users[$index];
}

// Jika ingin menggunakan foreach looping. Pastikan variabel yang dilooping
// adalah plural, dan variabel untuk mendapatkan itemnya, singular
foreach ($users as $user) {
echo $user;
}

Penamaan variabel di PHP tidak menggunakan underscore (snake_case). Jangan gunakan misal $book_price tapi gunakan $bookPrice

Method atau fungsi

Selalu gunakan kata kerja di awal dengan format camelCase. Jangan mencampur bahasa. Harus jelas apa fungsinya tanpa harus melihat kodenya. Misalnya function getUser() {} sudah jelas, fungsinya untuk get (mendapatkan) data user. Karena user di sana singular, berarti sudah jelas yang didapatkan hanya satu data. Berbeda dengan misal function getUsers() {} berarti data yang dikembalikan adalah bentuk array atau lebih dari satu.

Selalu ingat, kata kerja di awal, hindari penamaan method atau fungsi yang tidak jelas misal function category() {} apa coba maksudnya? get category? post category? tidak ada yang paham kan? coba bandingkan function updateCategory() {} paham kan gunanya untuk apa tanpa harus saya jelaskan?

Method yang ada di dalam class, bisa hanya berisi kata kerja saja. Misalnya simak detail di bawah ini

class Car {
public function run() {}
}

Dari kode di atas jelas kan, method run() ini akan menjalankan objek apa? ya, Car . Tapi simak kode di bawah ini

class Car {
public $name;
public function getName() {
return $this->name;
}
}

Method getName sudah jelas kan akan get name apa? ya name dari Car tersebut.

Penamaan file blade

Di dalam Laravel, kita sering membuat file blade untuk html nya. Pastikan namanya lowercase dengan style snake_case. Misalnya all.blade.php, edit.blade.php, all_posts.blade.php

Kesimpulan

Penulisan kode yang baik akan membuat kita nyaman mengembangkannya di kemudian hari, dan hal ini wajib dipahami ketika kita berada di dalam satu tim. Kenapa? karena di dalam satu tim banyak orang yang mungkin mengerjakan fitur yang saling berkaitan, dan semuanya harus mengerti variabel apa saja yang kita buat, class apa saja yang kita buat, dan method apa saja yang kita buat. So, mulai sekarang wajib mengamalkan clean code ya.

--

--