Mengenal Clean Code

Hema Mitta Kalyani
LEARNFAZZ
Published in
3 min readMar 31, 2019

“Truth can only be found in one place: the code.”
― Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship

Sumber: perforce.com

Clean Code merupakan sebuah istilah yang diperkenalkan dalam buku Clean Code: A Handbook of Agile Software Craftsmanship karya Robert C. Martin. Mungkin kita sudah sering mendengar istilah ini sebelumnya, namun sudahkah kita paham apa yang dimaksud dengan Clean Code tersebut?

Apa itu Clean Code?

Clean code adalah kode dengan format yang benar dan disusun dengan baik sehingga programmer lain dapat dengan mudah membaca atau memodifikasi kode tersebut. Ada beberapa alasan penerapan clean code, diantaranya untuk membantu orang lain membaca kode yang dibuat dan agar aritektur kode menjadi lebih elegan sehingga lebih mudah untuk dilihat dalam waktu lama, dimodifikasi dan dikembangkan. Selain itu, penerapan clean code juga dapat menghemat waktu dan biaya saat harus melakukan maintenance terhadap sistem. Ada enam poin tentang clean code yang bisa membantu meningkatkan kualitas sebuah kode:

  1. Komentar yang efisien — komentar hanya ditulis pada bagian-bagian yang membutuhkan penjelasan ekstra dan bukan karena kode yang ditulis kurang bagus.
  2. Penamaan yang baik — penamaan variable dan fungsi mengikuti acuan umum dan baku yang ditetapkan untuk suatu bahasa pemrograman atau framework.
  3. Penulisan fungsi yang simpel dan efektif — setiap fungsi/method hanya melakukan satu hal.
  4. Exception handling — antisipasi setiap kemungkinan exception dengan handling yang sesuai.
  5. Don’t Repeat Yourself! (DRY) — tidak terdapat duplikasi kode dan program dibuat secara modular dan terstruktur rapi.
  6. Layout formatting — menerapkan aturan formatting code, menerapkan tools yang sesuai dengan teknologi bahasa pemrograman yang digunakan.

Penerapan Clean Code pada Proyek

Berikut adalah contoh penerapan Clean Code pada proyek LEARNFAZZ.

Penamaan variable dan fungsi

Penamaan variable dan fungsi pada proyek kami menggunakan aturan camel case. Nama yang diberikan untuk suatu variable atau fungsi bersesuaian dengan apa yang dilakukan oleh variable atau fungsi tersebut. Berikut adalah contoh potongan kode proyek kami.

class CourseListPageState extends State<CourseListPage> {
TabController tabController;

void initState() {
super.initState();
tabController = TabController(length: 2, vsync: this);
}
}

Fungsi yang efektif

Fungsi yang efektif hanya melakukan satu hal. Fungsi initState() pada potongan kode sebelumnya hanya bertugas menginisiasi state halaman course dengan cara membuat dua tab pada halaman tersebut.

Exception handling

Berikut adalah contoh penanganan exception saat user melakukan submit sebuah form. Program akan memberikan pesan error jika user belum mengunggah foto. Selain itu jika terdapat exception lain, akan muncul sebuah snackbar.

if (_formKey.currentState.validate()) {
setState(() => _isSubmitting = true);
_formKey.currentState.save();
try {
if (_imageFile == null) {
throw RegisterFormPage.kNoImageErrorMessage;
}
// code for build response here
} catch (e) {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text(e.toString()),
duration: const Duration(seconds: 5)));
}
setState(() => _isSubmitting = false);
}

DRY

Pada proyek, kami telah menerapkan prinsip reuse untuk kode yang digunakan lebih dari satu kali. Sebagai contoh, program kami memerlukan HTTP Client untuk melakukan koneksi dari front-end ke back-end. Agar kode untuk melakukan koneksi ini tidak berulang, maka sebelumnya dibuat kelas AppConfig yang menangani koneksi ini dan kemudian class itu kemudian yang akan dipanggil setiap ingin membuat koneksi ke back-end. Berikut contoh penerapannya:

AppConfig.of(context).httpClient.post(url, data);
AppConfig.of(context).httpClient.get(url, data);

Layout formatting

Kami telah menggunakan linter dalam proyek kami. Hal ini membantu kami dalam hal-hal seperti mengetahui package yang diimport pada file namun tidak digunakan, pengurutan package yang diimport, dan kesesuaian tipe variable.

Referensi:

  1. Martin, R. C. 2009. Clean code: a handbook of agile software craftsmanship. Pearson Education.
  2. Bruffy, T. 2016. Four Key Principles of Clean Code. https://jakegroup.com/blog/four-principles-of-clean-code/
  3. Nguyen, L. 2018. How to write Clean Code? Lessons Learned from Robert C. Martin. https://hackernoon.com/how-to-write-clean-code-d557d998bb08

--

--