Monday

18-08-2025 Vol 19

Don’t Do This—Unless You Want 💩 Frontend Code

Jangan Lakukan Ini—Kecuali Anda Ingin Kode Frontend yang Berantakan 💩

Frontend development bisa menjadi mimpi buruk jika Anda tidak berhati-hati. Kode yang tidak terstruktur, sulit di-maintain, dan penuh bug adalah mimpi buruk setiap developer. Artikel ini akan membahas kesalahan-kesalahan umum yang sering dilakukan dalam frontend development dan bagaimana cara menghindarinya. Jadi, jika Anda ingin kode frontend Anda bersih, efisien, dan mudah di-maintain, baca terus!

Daftar Isi

  1. Tidak Merencanakan Struktur Proyek dengan Baik
  2. Menulis Kode yang Berantakan dan Tidak Konsisten
  3. Mengabaikan Aksesibilitas (Accessibility)
  4. Tidak Menggunakan Version Control (Git) dengan Benar
  5. Tidak Mengoptimalkan Performa Frontend
  6. Mengabaikan Keamanan Frontend
  7. Tidak Menulis Unit Test
  8. Terlalu Banyak Menggunakan Ketergantungan (Dependencies)
  9. Tidak Memantau (Monitoring) dan Logging
  10. Tidak Mendokumentasikan Kode
  11. Menggunakan jQuery Berlebihan (di era modern framework)
  12. Tidak Memperhatikan Browser Compatibility
  13. Menulis Kode Duplikat
  14. Mengabaikan Linting dan Formatting
  15. Tidak Menggunakan State Management Library (jika diperlukan)

1. Tidak Merencanakan Struktur Proyek dengan Baik

Masalah: Langsung terjun ke coding tanpa memikirkan struktur proyek adalah resep untuk bencana. Anda akan berakhir dengan file yang berantakan, kode yang sulit dicari, dan kesulitan untuk melakukan perubahan di kemudian hari.

Solusi:

  • Pikirkan tentang arsitektur proyek Anda: Apakah Anda akan menggunakan pola MVC, MVVM, atau yang lainnya? Pilih yang sesuai dengan kebutuhan proyek Anda.
  • Buat struktur folder yang logis: Pisahkan komponen, halaman, layanan, dan file utilitas ke dalam folder yang berbeda.
  • Gunakan penamaan file yang konsisten: Ikuti konvensi penamaan yang jelas untuk memudahkan identifikasi file. Misalnya, gunakan camelCase untuk nama komponen (MyComponent.js) dan snake_case untuk nama file CSS (my_component.css).
  • Pertimbangkan untuk menggunakan modularitas: Pisahkan kode Anda menjadi modul-modul kecil yang dapat digunakan kembali.

Contoh:

Struktur folder yang buruk:

    
    /project
      /css
        style.css
        button.css
        ... (banyak file css tanpa struktur)
      /js
        script.js
        utils.js
        helper.js
        ... (banyak file js tanpa struktur)
      index.html
    
  

Struktur folder yang lebih baik:

    
    /project
      /src
        /components
          /Button
            Button.js
            Button.css
          /Header
            Header.js
            Header.css
        /pages
          /HomePage
            HomePage.js
            HomePage.css
          /AboutPage
            AboutPage.js
            AboutPage.css
        /services
          api.js
        /utils
          helpers.js
      index.html
    
  

Masalah: Kode yang tidak konsisten dan berantakan sulit dibaca, dipahami, dan di-maintain. Ini meningkatkan risiko bug dan memperlambat proses pengembangan.

Solusi:

  • Ikuti pedoman gaya coding: Pilih satu pedoman gaya (misalnya, Airbnb JavaScript Style Guide) dan patuhi itu.
  • Gunakan indentasi yang konsisten: Gunakan 2 atau 4 spasi untuk indentasi dan konsisten di seluruh codebase.
  • Tulis komentar yang jelas dan ringkas: Jelaskan tujuan dan logika kode yang kompleks.
  • Gunakan nama variabel dan fungsi yang deskriptif: Hindari nama yang ambigu seperti x, y, atau data. Pilih nama yang jelas mencerminkan tujuan variabel/fungsi tersebut (misalnya, userName, calculateTotalPrice).
  • Pisahkan fungsi menjadi bagian yang lebih kecil: Fungsi yang panjang dan kompleks sulit dipahami dan di-test. Pisahkan menjadi fungsi-fungsi yang lebih kecil dan fokus pada satu tugas.

Contoh:

Kode yang berantakan:

    
    function calculate(a,b){
      let x=a+b;
      let y=x*2;
      return y;
    }
    
  

Kode yang lebih bersih:

    
    function calculateSum(num1, num2) {
      const sum = num1 + num2;
      return sum;
    }

    function doubleValue(value) {
      return value * 2;
    }

    function calculateResult(num1, num2) {
      const sum = calculateSum(num1, num2);
      const result = doubleValue(sum);
      return result;
    }
    
  

3. Mengabaikan Aksesibilitas (Accessibility)

Masalah: Mengabaikan aksesibilitas berarti Anda mengecualikan pengguna penyandang disabilitas dari website atau aplikasi Anda. Ini tidak hanya tidak etis tetapi juga dapat memiliki konsekuensi hukum.

Solusi:

  • Gunakan HTML semantik: Gunakan tag HTML yang tepat untuk struktur dan konten (misalnya, <article>, <nav>, <aside>).
  • Berikan teks alternatif untuk gambar: Gunakan atribut alt pada tag <img> untuk menjelaskan gambar kepada pengguna screen reader.
  • Pastikan kontras warna yang cukup: Pastikan teks memiliki kontras yang cukup dengan latar belakang agar mudah dibaca.
  • Gunakan atribut ARIA (Accessible Rich Internet Applications): Gunakan atribut ARIA untuk memberikan informasi tambahan tentang elemen UI kepada pengguna screen reader.
  • Uji website Anda dengan screen reader: Gunakan screen reader seperti NVDA atau VoiceOver untuk memastikan website Anda dapat diakses.

Contoh:

Tidak accessible:

    
    <div style="background-color: red; color: black;">
      Some text
    </div>
    
  

Lebih accessible:

    
    <div role="alert" style="background-color: red; color: white;">
      Some text
    </div>
    
  

Menggunakan role="alert" memberi tahu screen reader bahwa ini adalah pesan penting.

4. Tidak Menggunakan Version Control (Git) dengan Benar

Masalah: Tidak menggunakan version control (misalnya, Git) adalah kesalahan fatal. Anda akan kehilangan track perubahan, kesulitan berkolaborasi dengan orang lain, dan kesulitan mengembalikan kode ke versi sebelumnya jika terjadi kesalahan.

Solusi:

  • Pelajari dasar-dasar Git: Pelajari perintah dasar seperti add, commit, push, pull, dan merge.
  • Buat branch untuk setiap fitur atau perbaikan bug: Jangan langsung commit ke branch main. Buat branch terpisah untuk setiap perubahan.
  • Tulis pesan commit yang jelas dan ringkas: Jelaskan apa yang Anda ubah dan mengapa.
  • Lakukan commit secara teratur: Jangan menunggu sampai akhir hari untuk melakukan commit. Lakukan commit setiap kali Anda menyelesaikan satu bagian pekerjaan.
  • Gunakan pull request untuk meninjau kode: Sebelum menggabungkan branch Anda ke branch main, minta orang lain untuk meninjau kode Anda.

Contoh:

Pesan commit yang buruk:

    
    fix
    
  

Pesan commit yang baik:

    
    Fix: Resolve issue where login button doesn't redirect correctly

    This commit fixes an issue where the login button on the homepage was not redirecting users to the dashboard after successful login.  The redirect URL was incorrect. Updated the URL to point to /dashboard.
    
  

5. Tidak Mengoptimalkan Performa Frontend

Masalah: Website atau aplikasi yang lambat membuat frustrasi pengguna dan dapat berdampak negatif pada SEO. Performa frontend yang buruk dapat disebabkan oleh berbagai faktor, termasuk gambar yang tidak dioptimalkan, kode JavaScript yang berat, dan rendering yang tidak efisien.

Solusi:

  • Optimalkan gambar: Kompres gambar untuk mengurangi ukuran file tanpa mengorbankan kualitas. Gunakan format gambar yang tepat (misalnya, WebP untuk browser modern).
  • Minifikasi dan gabungkan file CSS dan JavaScript: Kurangi ukuran file dengan menghapus spasi dan komentar yang tidak perlu. Gabungkan beberapa file menjadi satu untuk mengurangi jumlah HTTP request.
  • Gunakan lazy loading untuk gambar dan video: Tunda pemuatan gambar dan video sampai mereka terlihat di layar.
  • Manfaatkan caching browser: Gunakan header HTTP untuk menginstruksikan browser untuk menyimpan aset statis dalam cache.
  • Gunakan Content Delivery Network (CDN): Gunakan CDN untuk mendistribusikan aset statis Anda ke server yang terletak di dekat pengguna Anda.
  • Hindari rendering blocking JavaScript: Letakkan tag <script> di bagian bawah <body> atau gunakan atribut async atau defer.
  • Profil kode Anda: Gunakan alat profiling browser untuk mengidentifikasi bottleneck performa.

Contoh:

Gambar yang tidak dioptimalkan:

    
    <img src="large-image.jpg" alt="Image">
    
  

Gambar yang dioptimalkan:

    
    <img src="optimized-image.webp" alt="Image" loading="lazy">
    
  

6. Mengabaikan Keamanan Frontend

Masalah: Frontend sering dianggap kurang penting dibandingkan backend dalam hal keamanan, tetapi ini adalah kesalahan besar. Frontend rentan terhadap berbagai serangan, termasuk Cross-Site Scripting (XSS) dan Cross-Site Request Forgery (CSRF).

Solusi:

  • Sanitasi input pengguna: Bersihkan semua input pengguna untuk mencegah XSS. Gunakan escaping yang tepat untuk konteks di mana data akan ditampilkan (misalnya, HTML escaping, JavaScript escaping).
  • Gunakan Content Security Policy (CSP): CSP memungkinkan Anda untuk menentukan sumber yang diizinkan untuk memuat sumber daya (misalnya, skrip, stylesheet, gambar).
  • Gunakan HTTPS: Gunakan HTTPS untuk mengenkripsi semua komunikasi antara browser dan server.
  • Lindungi dari CSRF: Gunakan token CSRF untuk memverifikasi bahwa permintaan datang dari website Anda.
  • Perbarui library dan framework secara teratur: Perbarui library dan framework Anda ke versi terbaru untuk memperbaiki kerentanan keamanan yang diketahui.

Contoh:

Rentan terhadap XSS:

    
    <div>
      <p>Welcome, <strong>${userName}</strong></p>
    </div>
    
  

Jika userName berasal dari input pengguna dan berisi kode berbahaya seperti <script>alert('XSS')</script>, maka kode tersebut akan dieksekusi.

Lebih aman (menggunakan HTML escaping):

    
    <div>
      <p>Welcome, <strong>${escapeHTML(userName)}</strong></p>
    </div>
    
  

Fungsi escapeHTML akan mengubah karakter khusus seperti < menjadi entitas HTML (&lt;), sehingga mencegah kode berbahaya dieksekusi.

7. Tidak Menulis Unit Test

Masalah: Tidak menulis unit test berarti Anda tidak memiliki cara untuk memverifikasi bahwa kode Anda berfungsi dengan benar. Ini meningkatkan risiko bug dan membuat refactoring menjadi sulit.

Solusi:

  • Pelajari dasar-dasar unit testing: Pelajari konsep seperti assertion, mocking, dan test-driven development (TDD).
  • Pilih framework testing yang sesuai: Pilih framework testing yang sesuai dengan teknologi yang Anda gunakan (misalnya, Jest, Mocha, Jasmine).
  • Tulis test untuk semua fungsi dan komponen: Fokus pada pengujian unit kecil kode Anda.
  • Jalankan test secara teratur: Jalankan test setiap kali Anda membuat perubahan pada kode Anda.
  • Pastikan cakupan kode yang baik: Usahakan untuk memiliki cakupan kode yang tinggi dengan unit test Anda.

Contoh (menggunakan Jest):

    
    // sum.js
    function sum(a, b) {
      return a + b;
    }
    module.exports = sum;

    // sum.test.js
    const sum = require('./sum');

    test('adds 1 + 2 to equal 3', () => {
      expect(sum(1, 2)).toBe(3);
    });
    
  

8. Terlalu Banyak Menggunakan Ketergantungan (Dependencies)

Masalah: Menggunakan terlalu banyak library dan framework dapat meningkatkan ukuran bundle Anda, memperlambat performa, dan meningkatkan risiko kerentanan keamanan.

Solusi:

  • Evaluasi kebutuhan Anda: Sebelum menambahkan library, tanyakan pada diri sendiri apakah Anda benar-benar membutuhkannya. Bisakah Anda menulis kode yang sama sendiri?
  • Pilih library yang ringan: Pilih library yang hanya melakukan apa yang Anda butuhkan dan tidak memiliki banyak ketergantungan lain.
  • Periksa ukuran bundle: Gunakan alat seperti Webpack Bundle Analyzer untuk memeriksa ukuran bundle Anda dan mengidentifikasi ketergantungan yang besar.
  • Hapus ketergantungan yang tidak digunakan: Hapus library yang tidak lagi Anda gunakan.
  • Perbarui ketergantungan secara teratur: Perbarui library Anda ke versi terbaru untuk memperbaiki kerentanan keamanan dan mendapatkan peningkatan performa.

9. Tidak Memantau (Monitoring) dan Logging

Masalah: Tanpa pemantauan dan logging yang tepat, Anda tidak akan tahu apa yang terjadi di aplikasi Anda. Anda akan kesulitan mendiagnosis dan memperbaiki bug, melacak performa, dan memahami perilaku pengguna.

Solusi:

  • Gunakan alat pemantauan: Gunakan alat pemantauan seperti Sentry, New Relic, atau Datadog untuk melacak kesalahan, performa, dan metrik lainnya.
  • Tambahkan logging ke kode Anda: Tambahkan logging ke kode Anda untuk mencatat informasi penting seperti kesalahan, peringatan, dan peristiwa pengguna.
  • Gunakan tingkat logging yang tepat: Gunakan tingkat logging yang berbeda (misalnya, debug, info, warning, error) untuk memprioritaskan pesan log Anda.
  • Analisis log Anda secara teratur: Analisis log Anda secara teratur untuk mengidentifikasi masalah dan tren.

10. Tidak Mendokumentasikan Kode

Masalah: Kode tanpa dokumentasi sulit dipahami, di-maintain, dan digunakan kembali. Dokumentasi yang baik penting untuk kolaborasi, onboarding developer baru, dan pemahaman jangka panjang proyek.

Solusi:

  • Tulis komentar yang jelas dan ringkas: Jelaskan tujuan dan logika kode yang kompleks.
  • Buat dokumentasi API: Buat dokumentasi API yang jelas dan lengkap untuk semua fungsi dan komponen yang dapat digunakan kembali.
  • Gunakan alat dokumentasi: Gunakan alat dokumentasi seperti JSDoc atau Storybook untuk menghasilkan dokumentasi secara otomatis dari kode Anda.
  • Jaga dokumentasi tetap mutakhir: Pastikan dokumentasi Anda selalu mencerminkan keadaan kode Anda saat ini.

11. Menggunakan jQuery Berlebihan (di era modern framework)

Masalah: jQuery adalah library yang populer, tetapi seringkali tidak diperlukan dalam proyek modern yang menggunakan framework seperti React, Vue, atau Angular. Penggunaan jQuery yang berlebihan dapat menambah ukuran bundle Anda dan mengurangi performa.

Solusi:

  • Gunakan fitur bawaan framework: Manfaatkan fitur manipulasi DOM dan event handling yang disediakan oleh framework Anda.
  • Hindari penggunaan jQuery untuk tugas sederhana: Jika Anda hanya membutuhkan jQuery untuk tugas sederhana seperti memilih elemen atau menambahkan class, pertimbangkan untuk menggunakan metode JavaScript asli.
  • Refactor kode jQuery yang ada: Secara bertahap refactor kode jQuery yang ada untuk menggunakan framework Anda atau JavaScript asli.

12. Tidak Memperhatikan Browser Compatibility

Masalah: Website yang hanya berfungsi di satu browser akan mengecewakan pengguna yang menggunakan browser lain. Penting untuk memastikan website Anda kompatibel dengan berbagai browser dan versi.

Solusi:

  • Uji website Anda di berbagai browser: Uji website Anda di browser populer seperti Chrome, Firefox, Safari, dan Edge.
  • Gunakan alat kompatibilitas browser: Gunakan alat seperti BrowserStack atau Sauce Labs untuk menguji website Anda di berbagai browser dan versi.
  • Gunakan polyfill: Gunakan polyfill untuk menyediakan fitur JavaScript modern ke browser yang lebih lama.
  • Perhatikan prefix browser: Gunakan prefix browser untuk memastikan fitur CSS berfungsi di semua browser.

Masalah: Kode duplikat meningkatkan kompleksitas kode, membuat maintenance lebih sulit, dan meningkatkan risiko bug. Jika Anda perlu mengubah sesuatu, Anda harus mengubahnya di beberapa tempat.

Solusi:

  • Identifikasi kode duplikat: Gunakan alat seperti JDuploc atau PMD untuk mengidentifikasi kode duplikat.
  • Refactor kode duplikat: Refactor kode duplikat menjadi fungsi atau komponen yang dapat digunakan kembali.
  • Gunakan prinsip DRY (Don’t Repeat Yourself): Hindari menulis kode yang sama lebih dari sekali.

14. Mengabaikan Linting dan Formatting

Masalah: Kode yang tidak dilinting dan diformat dengan benar dapat menyebabkan masalah konsistensi, kesalahan sintaksis, dan kode yang sulit dibaca.

Solusi:

  • Gunakan linter: Gunakan linter seperti ESLint atau JSHint untuk mendeteksi kesalahan sintaksis, potensi bug, dan pelanggaran gaya coding.
  • Gunakan formatter: Gunakan formatter seperti Prettier untuk secara otomatis memformat kode Anda sesuai dengan pedoman gaya coding.
  • Integrasikan linter dan formatter ke dalam alur kerja Anda: Konfigurasikan linter dan formatter untuk berjalan secara otomatis saat Anda menyimpan file atau melakukan commit.

15. Tidak Menggunakan State Management Library (jika diperlukan)

Masalah: Untuk aplikasi kompleks, mengelola state secara manual bisa menjadi sulit dan rentan kesalahan. Perubahan state yang tidak terkontrol dapat menyebabkan bug dan performa yang buruk.

Solusi:

  • Pertimbangkan state management library: Jika aplikasi Anda memiliki state yang kompleks, pertimbangkan untuk menggunakan state management library seperti Redux, Vuex, atau Zustand.
  • Pilih library yang sesuai: Pilih library yang sesuai dengan kebutuhan dan skala aplikasi Anda.
  • Pelajari konsep state management: Pelajari konsep seperti reducer, action, dan store.
  • Gunakan state management library dengan bijak: Jangan menggunakan state management library untuk setiap perubahan state kecil. Gunakan hanya untuk state yang perlu dibagikan di antara beberapa komponen.

Kesimpulan

Menghindari kesalahan-kesalahan di atas akan membantu Anda menulis kode frontend yang bersih, efisien, dan mudah di-maintain. Frontend development yang baik membutuhkan perencanaan, disiplin, dan perhatian terhadap detail. Dengan mengikuti praktik terbaik dan terus belajar, Anda dapat menjadi developer frontend yang hebat dan menghindari mimpi buruk kode yang berantakan.

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *