SOLID Principle Example #1 in Unity: Write Better Code

Pernah ga sih saat kalian meng-coding game kalian di Unity, scriptnya cuma satu dan sangat berantakan sehingga menghambat kalian game developing?  Saat kalian liat code kalian sekarang kalian mikir mau nulis code yang lebih bagus buat proyek selanjutnya. Nah, sekarang saya mau kasitau salah satu principle di dunia Object Oriented Programming (OOP) yang banyak sekali dipakai oleh programmer yang sudah profesional, yaitu SOLID Principle.read more

Introduction

SOLID Principle pertama kali diajukan oleh Robert C. Martin pada tahun 2000 di papernya, Design Principles and Design Patterns. Kemudian idenya dikembangkan kembali oleh Michael Feathers sehingga tercipta SOLID Principle. SOLID Principle mempunyai tujuan utama untuk membuat code kita lebih maintanable, understandable, dan flexible dan seiring besarnya game kita bertambah, kita dapat mengurangi kompleksitas dari codenya.

SOLID Principle mempunyai 5 principle yaitu:

  1. Single Responsibility
  2. Open/Closed
  3. Liskov Substitution
  4. Interface Segregation
  5. Dependency Inversion

Pada artikel kali ini, kita akan membahas bagaimana menerapkan principle pertama yaitu, Single Responsibility.

Single Responsibility

Misalkan kita mempunyai contoh GameObject Player yang mempunyai fungsionalitas yang di-define di kelas PlayerScript. Bisa dilihat terdapat 2 fungsi utama dari kelas player ini yaitu mendapatkan input arah dan dari input tersebut menjalankan player. Cara mengcoding seperti ini melanggar prinsip Single Responsibility yaitu, setiap kelas hanya boleh mempunyai satu tanggung jawab saja. Sedangkan di kelas tersebut terdapat dua tanggung jawab yaitu tanggung jawab akan input dan tanggung jawab akan pergerakan player. Dilihat dari code yang sekarang mungkin masih bagus namun ketika skala game diperbesar akan banyak fungsi – fungsi input atau movement yang akan ditambahkan sehingga lebih baik dipisah saja.

Kelas Player yang memuat dua tanggung jawab untuk player

Kita dapat membagi – bagi tanggung jawab antara input dan gerakan karakter menjadi kelasnya masing – masing seperti gambar dibawah ini.

Kelas Input untuk player yang bertanggung jawab pada input player saja

 

Kelas Movement untuk player yang bertanggung jawab atas movement player saja

Dengan membagi – bagi tanggung jawab ini, code akan semakin mudah di jaga dan fungsionalitas dari satu kelas semakin kecil sehingga tercapai lower coupling. 

Sekian penjelasan principle pertama ini. Jika ada pertanyaan bisa ditulis di komentar saja. Pada artikel series selanjutnya akan dibahas principle kedua yaitu Open/Closed Principle. Jadi ditunggu ya~