Pengantar anti-pola

Anti-pola adalah kebalikan dari pola. Ingatlah bahwa pola desain adalah contoh praktik pemrograman yang baik, yaitu pola untuk memecahkan masalah tertentu. Tetapi anti-pola adalah kebalikannya, yaitu pola kesalahan yang dibuat saat memecahkan berbagai masalah.

Bagian dari praktik pemrograman yang baik justru menghindari anti-pola. Jangan berpikir bahwa ini adalah sampah teoretis yang tidak dapat dipahami - ini adalah masalah khusus yang dihadapi hampir setiap pengembang. Siapa yang sadar, dia bersenjata!

Mari kita lihat beberapa anti-pola yang umum di kalangan pemula:

  • Angka dan string ajaib
  • kelas dewa
  • Optimalisasi prematur
  • penemuan sepeda
  • Penemuan unicycle

Angka dan string ajaib

Angka ajaib adalah konstanta yang digunakan dalam kode untuk sesuatu (paling sering identifikasi data), angka itu sendiri tidak masuk akal tanpa komentar yang sesuai. Angka sama sekali tidak membawa semantik.

Ketika angka mulai muncul dalam kode proyek Anda, yang artinya tidak jelas, ini sangat buruk. Seorang programmer yang bukan pembuat kode tersebut akan kesulitan menjelaskan cara kerjanya. Seiring waktu, bahkan pembuat kode dengan angka ajaib tidak akan dapat menjelaskannya.

Angka membuat kode sulit dipahami dan diperbaiki. Alasan utama kesalahan ini adalah pengembangan yang tergesa-gesa dan kurangnya praktik pemrograman. Anti-pola ini harus dihentikan sejak awal dengan menetapkan penggunaan konstanta numerik sebelum memulai pengembangan.

Untuk mengatasi masalah ini, Anda perlu membuat variabel yang namanya menjelaskan tujuan konstanta numerik, dan menetapkan nilai yang diinginkan.

kelas dewa

Objek ilahi adalah anti-pola yang cukup umum di kalangan pengembang OOP. Objek seperti itu mengambil terlalu banyak fungsi dan / atau menyimpan hampir semua data. Akibatnya, kami memiliki kode non-portabel, yang juga sulit dipahami.

Selain itu, kode semacam itu cukup sulit dipertahankan, mengingat seluruh sistem hampir secara eksklusif bergantung padanya. Alasan kesalahan ini: ketidakmampuan pengembang, satu pengembang mengambil sebagian besar pekerjaan (terutama bila jumlah pekerjaan melebihi tingkat pengalaman pengembang tersebut).

Penting untuk menangani pendekatan ini dengan memecah tugas menjadi subtugas yang dapat ditangani oleh pengembang yang berbeda.

Optimalisasi prematur

Optimasi prematur adalah optimasi yang dilakukan sebelum pemrogram memiliki semua informasi yang diperlukan untuk membuat keputusan tentang di mana dan bagaimana melakukannya.

Dalam praktiknya, sulit untuk memprediksi di mana kemacetan akan terjadi. Upaya untuk mengoptimalkan sebelum mendapatkan hasil empiris akan menyebabkan kerumitan kode dan munculnya kesalahan, tetapi tidak akan membawa manfaat apa pun.

Bagaimana cara menghindarinya? Pertama, tulis kode yang bersih, mudah dibaca, dan berfungsi menggunakan algoritme dan alat yang terkenal dan terbukti. Jika perlu, gunakan alat pemrofilan untuk menemukan kemacetan. Andalkan pengukuran, bukan tebakan dan asumsi.

Contoh dan fitur

Caching sebelum membuat profil. Menggunakan heuristik yang kompleks dan belum terbukti alih-alih algoritma yang benar secara matematis. Pilihan kerangka kerja baru yang belum teruji yang mungkin berperilaku buruk saat dimuat.

Apa kesulitannya

Tidak mudah untuk menentukan kapan pengoptimalan terlalu dini. Penting untuk memberikan ruang untuk pertumbuhan terlebih dahulu. Anda perlu memilih solusi dan platform yang memungkinkan Anda mengoptimalkan dan berkembang dengan mudah. Juga terkadang pengoptimalan prematur digunakan sebagai alasan untuk kode yang buruk. Sebagai contoh, mereka menggunakan algoritma O(n2) hanya karena algoritma tersebut akan menjadi O(n) lebih sulit.

penemuan sepeda

Arti dari anti-pola ini adalah bahwa pemrogram mengembangkan solusinya sendiri untuk suatu masalah yang solusinya sudah ada, dan seringkali solusi yang jauh lebih berhasil.

Pengembang menganggap dirinya lebih pintar, jadi dia mencoba menemukan solusinya sendiri untuk setiap tugas, terlepas dari pengalaman pendahulunya. Paling sering, ini hanya menyebabkan hilangnya waktu dan penurunan efisiensi pemrogram. Lagi pula, solusinya cenderung kurang optimal, jika ditemukan sama sekali.

Tentu saja, Anda tidak dapat sepenuhnya membuang kemungkinan solusi independen, karena ini akan mengarah pada pemrograman salin-tempel secara langsung. Pengembang harus menavigasi tugas yang mungkin muncul di hadapannya untuk menyelesaikannya secara kompeten, menggunakan solusi yang sudah jadi atau menciptakan solusinya sendiri.

Sangat sering, alasan anti-pola ini adalah kurangnya waktu. Dan waktu adalah uang.

Penemuan sepeda roda persegi

Anti-pola ini sangat erat kaitannya dengan hanya menemukan kembali roda - menciptakan solusi buruk Anda sendiri ketika ada solusi yang lebih baik.

Anti-pola ini memakan waktu dua kali lipat: pertama, waktu dihabiskan untuk menemukan dan mengimplementasikan solusi Anda sendiri, lalu untuk memfaktorkan ulang atau menggantinya.

Pemrogram harus menyadari adanya berbagai solusi untuk rentang tugas tertentu, dipandu oleh kelebihan dan kekurangannya.

Semua masalah yang akan Anda hadapi sebagai seorang programmer dapat dibagi menjadi dua bagian:

  • orang pintar memecahkan masalah ini 30 tahun yang lalu
  • orang pintar memecahkan masalah ini 50 tahun yang lalu

Sebagian besar masalah pemrograman telah berhasil diselesaikan bahkan sebelum Anda lahir . Tidak perlu menemukan apa pun - pelajari saja pengalaman orang lain (untuk itulah buku ditulis).

Pada tahun 2022, kita dapat merayakan ulang tahun berikut:

  • Bahasa pemrograman
    • Bahasa C berusia 50 tahun (1972)
    • Bahasa Jawa berusia 27 tahun (1995)
    • Python berusia 31 tahun (1991)
  • Koneksi
    • Internet berusia 39 tahun (1983)
    • Ponsel berusia 49 tahun (1973)
    • SMS pertama dikirim 30 tahun yang lalu (1992)
  • Pola
    • Pola MVC berubah menjadi 44 (1978)
    • SQL ditemukan 48 tahun yang lalu (1974)
    • Kacang Jawa ditemukan 26 tahun yang lalu (1996)
  • Perpustakaan
    • Hibernasi ditemukan 21 tahun yang lalu (2001)
    • Musim semi ditemukan 20 tahun yang lalu (2002)
    • Tomcat dirilis 23 tahun yang lalu (1999)
  • OS
    • Unix dirilis 51 tahun yang lalu (1971)
    • Windows melihat cahaya hari 37 tahun yang lalu (1985)
    • Mac OS dirilis 21 tahun yang lalu (2001)

Dan semua hal ini tidak hanya ditemukan, tetapi dikembangkan sebagai solusi untuk masalah yang sangat umum dan relevan pada saat itu.