Naming Things #1: Avoid Unnecessary Context

Bayu Hendra Winata
Javan Cipta Solusi
Published in
2 min readMay 9, 2018
Hardest problem in programming is naming things

Programmer yang mulai beranjak “dewasa” pasti sangat familiar dengan quote berikut ini:

There are only two hard things in Computer Science: cache invalidation and naming things. (Phil Karlton)

Salah satu kesalahan yang sering saya temui ketika melakukan code review adalah terkait penamaan method yang terlalu panjang karena ada penambahan konteks yang tidak perlu.

Sebagai contoh, terdapatlah sebuah kelas UserRepository yang tanggung jawabnya adalah menyediakan berbagai macam method untuk berinteraksi dengan data User di database.

class UserRepository {    // mendapatkan semua list user
public function getListUser()
{
}}

Dengan nama kelasUserRepository, secara eksplisit sudah mengatakan ini kelas repository untuk User, jadi method-method yang ada di dalamnya sudah pasti berhubungan dengan User. Tidak perlu lagi menambahkan prefiks User di method-nya.

Mengganti getListUser() dengan getList(), get(), atau mungkin all() bisa lebih meningkatkan readability.

Pun bila nanti ada method untuk menambahkan data User, cukup diberi namacreate() saja, tidak perlu createUser(). Dulu ketika baru belajar OOP, contoh yang sering digunakan adalah kelas Person dengan method yang dimiliki antara laingetName() dan getAge(), bukan getPersonName() dan getPersonAge().

Tentu saja ini harus dibarengi dengan penamaan variable yang cukup jelas ketika menginstansiasi kelas repository tersebut.

// bad
$repo = new UserRepository();
$users = $repo->all();// Which repo?
// good
$userRepository = new UserRepository();
$users = $userRepository->all();// clear, it is about user repository

Semoga bermanfaat.

--

--