{"id":7711,"date":"2025-04-11T08:54:47","date_gmt":"2025-04-11T01:54:47","guid":{"rendered":"https:\/\/binus.ac.id\/bekasi\/?p=7711"},"modified":"2025-04-11T08:54:47","modified_gmt":"2025-04-11T01:54:47","slug":"code-smells-dan-cara-menghindarinya","status":"publish","type":"post","link":"https:\/\/beta.binus.ac.id\/bekasi\/2025\/04\/11\/code-smells-dan-cara-menghindarinya\/","title":{"rendered":"Code Smells dan Cara Menghindarinya"},"content":{"rendered":"<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7714 aligncenter\" src=\"http:\/\/binus.ac.id\/bekasi\/wp-content\/uploads\/2025\/04\/Gambar1-1.jpg\" alt=\"\" width=\"451\" height=\"301\" srcset=\"https:\/\/beta.binus.ac.id\/bekasi\/wp-content\/uploads\/sites\/90\/2025\/04\/Gambar1-1.jpg 451w, https:\/\/beta.binus.ac.id\/bekasi\/wp-content\/uploads\/sites\/90\/2025\/04\/Gambar1-1-300x200.jpg 300w\" sizes=\"(max-width: 451px) 100vw, 451px\" \/><span style=\"font-size: 10pt\">Figure 1. Kode Program (Sumber: https:\/\/www.pexels.com\/)<\/span><\/p>\n<p>Dalam dunia pengembangan perangkat lunak, kualitas kode adalah hal yang sangat krusial. Salah satu indikator rendahnya kualitas kode adalah <strong>Code Smell<\/strong> \u2014 istilah yang digunakan untuk menyebut gejala pada kode yang terlihat salah, meskipun belum tentu menyebabkan bug secara langsung.<\/p>\n<h3>Apa Itu Code Smell?<\/h3>\n<p>Istilah <strong>Code Smell<\/strong> pertama kali dipopulerkan oleh <strong>Kent Beck<\/strong> dalam buku <em>&#8220;Refactoring: Improving the Design of Existing Code&#8221;<\/em> oleh <strong>Martin Fowler<\/strong>. Code Smell adalah <strong>indikasi adanya masalah dalam struktur kode<\/strong> yang bisa menyulitkan pemeliharaan, pengujian, dan pengembangan lanjutan.<\/p>\n<h3><\/h3>\n<h3>Contoh Code Smells Umum dan Cara Menghindarinya<\/h3>\n<ol>\n<li><strong>Duplicated Code<\/strong><\/li>\n<\/ol>\n<p>Masalah: Blok kode yang sama muncul di beberapa tempat.<\/p>\n<p><em>Solusi:<\/em> Refactor dengan membuat method\/function reusable. Gunakan prinsip DRY (<em>Don&#8217;t Repeat Yourself<\/em>).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7713 aligncenter\" src=\"http:\/\/binus.ac.id\/bekasi\/wp-content\/uploads\/2025\/04\/Gambar2.png\" alt=\"\" width=\"210\" height=\"196\" \/><\/p>\n<ol start=\"2\">\n<li><strong>Long Method<\/strong><\/li>\n<\/ol>\n<p>Masalah: Fungsi terlalu panjang dan melakukan banyak hal.<\/p>\n<p>Solusi: Pecah menjadi beberapa fungsi yang lebih kecil dan jelas (prinsip SRP &#8211; Single Responsibility Principle).<\/p>\n<ol start=\"3\">\n<li><strong>Large Class<\/strong><\/li>\n<\/ol>\n<p>Masalah: Kelas menangani terlalu banyak tanggung jawab.<\/p>\n<p>Solusi: Bagi menjadi beberapa kelas sesuai tanggung jawabnya masing-masing.<\/p>\n<ol start=\"4\">\n<li><strong>Primitive Obsession<\/strong><\/li>\n<\/ol>\n<p>Masalah: Menggunakan tipe data primitif untuk hal kompleks (misalnya menggunakan string untuk menyimpan email, phone number, dll).<\/p>\n<p>Solusi: Bungkus data tersebut dalam class khusus (value object).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7712 aligncenter\" src=\"http:\/\/binus.ac.id\/bekasi\/wp-content\/uploads\/2025\/04\/Gambar3.png\" alt=\"\" width=\"240\" height=\"212\" \/><\/p>\n<ol start=\"5\">\n<li><strong>Speculative Generality<\/strong><\/li>\n<\/ol>\n<p>Masalah: Menambahkan kode \u201cuntuk berjaga-jaga\u201d yang belum diperlukan.<\/p>\n<p>Solusi: Fokus pada kebutuhan sekarang (YAGNI &#8211; You Aren\u2019t Gonna Need It).<\/p>\n<p>&nbsp;<\/p>\n<h3>Cara Menghindari dan Mengatasi Code Smells<\/h3>\n<ul>\n<li><strong>Refactoring Secara Berkala<\/strong>: Lakukan refactor kecil setelah menambahkan fitur untuk menjaga struktur tetap rapi.<\/li>\n<li><strong>Code Review dan Pair Programming:<\/strong> Melibatkan orang lain akan membantu menemukan bau yang tidak terdeteksi sendiri.<\/li>\n<li><strong>Ikuti Prinsip SOLID dan Clean Code:<\/strong> Panduan desain yang baik dapat mencegah code smell sejak awal.<\/li>\n<li><strong>Gunakan Static Code Analysis Tools:<\/strong> Tools seperti SonarQube, PMD, ESLint, dan lainnya bisa mendeteksi code smell secara otomatis.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 10pt\">Referensi:<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 10pt\">Martin Fowler. Refactoring: Improving the Design of Existing Code, 2nd Edition, Addison-Wesley, 2018.<\/span><\/li>\n<li><span style=\"font-size: 10pt\">Kent Beck &amp; Martin Fowler. <a href=\"https:\/\/martinfowler.com\/bliki\/CodeSmell.html\">https:\/\/martinfowler.com\/bliki\/CodeSmell.html<\/a><\/span><\/li>\n<li><span style=\"font-size: 10pt\">Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship, 2008.<\/span><\/li>\n<li><span style=\"font-size: 10pt\">SonarSource Documentation: https:\/\/docs.sonarsource.com<\/span><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Figure 1. Kode Program (Sumber: https:\/\/www.pexels.com\/) Dalam dunia pengembangan perangkat lunak, kualitas kode adalah hal yang sangat krusial. Salah satu indikator rendahnya kualitas kode adalah Code Smell \u2014 istilah yang digunakan untuk menyebut gejala pada kode yang terlihat salah, meskipun belum tentu menyebabkan bug secara langsung. Apa Itu Code Smell? Istilah Code Smell pertama kali [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7714,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-7711","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computer-science-software-engineering"],"_links":{"self":[{"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/posts\/7711"}],"collection":[{"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/comments?post=7711"}],"version-history":[{"count":0,"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/posts\/7711\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/media\/7714"}],"wp:attachment":[{"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/media?parent=7711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/categories?post=7711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.binus.ac.id\/bekasi\/wp-json\/wp\/v2\/tags?post=7711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}