Pengenalan kepada anti-corak

Anti-corak adalah bertentangan dengan corak. Ingat bahawa corak reka bentuk adalah contoh amalan pengaturcaraan yang baik, iaitu corak untuk menyelesaikan masalah tertentu. Tetapi anti-corak adalah bertentangan sepenuhnya, iaitu corak kesilapan yang dibuat ketika menyelesaikan pelbagai masalah.

Sebahagian daripada amalan pengaturcaraan yang baik adalah dengan tepat mengelakkan anti-corak. Jangan berfikir bahawa ini adalah sampah teori yang tidak dapat difahami - ini adalah masalah khusus yang hampir setiap pemaju telah hadapi. Siapa sedar, dia bersenjata!

Mari lihat beberapa corak anti yang biasa di kalangan pemula:

  • Nombor ajaib dan rentetan
  • kelas dewa
  • Pengoptimuman pramatang
  • ciptaan basikal
  • Ciptaan unicycle

Nombor ajaib dan rentetan

Nombor ajaib ialah pemalar yang digunakan dalam kod untuk sesuatu (paling kerap pengenalpastian data), nombor itu sendiri tidak masuk akal tanpa komen yang sepadan. Nombor sama sekali tidak membawa semantik.

Apabila nombor mula muncul dalam kod projek anda, yang maknanya tidak jelas, ini sangat buruk. Seorang pengaturcara yang bukan pengarang kod tersebut akan mengalami kesukaran untuk menerangkan cara ia berfungsi. Lama kelamaan, walaupun pengarang kod dengan nombor ajaib tidak akan dapat menjelaskannya.

Nombor membuat kod sukar difahami dan difaktorkan semula. Sebab utama ralat ini adalah tergesa-gesa dalam pembangunan dan kekurangan amalan pengaturcaraan. Anti-corak ini harus digigit sejak awal dengan menetapkan penggunaan pemalar berangka sebelum memulakan pembangunan.

Untuk menyelesaikan masalah ini, anda perlu mencipta pembolehubah yang namanya menerangkan tujuan pemalar berangka, dan memberikannya nilai yang dikehendaki.

kelas dewa

Objek ketuhanan ialah anti-corak yang agak biasa di kalangan pembangun OOP. Objek sedemikian mengambil terlalu banyak fungsi dan / atau menyimpan hampir semua data. Akibatnya, kami mempunyai kod bukan mudah alih, yang, lebih-lebih lagi, sukar difahami.

Di samping itu, kod sedemikian agak sukar untuk dikekalkan, memandangkan keseluruhan sistem bergantung hampir secara eksklusif padanya. Sebab ralat ini: ketidakcekapan pembangun, seorang pembangun mengambil sebahagian besar kerja (terutamanya apabila jumlah kerja melebihi tahap pengalaman pembangun itu).

Adalah perlu untuk menangani pendekatan ini dengan memecahkan tugas kepada subtugas yang boleh ditangani oleh pembangun yang berbeza.

Pengoptimuman pramatang

Pengoptimuman pramatang ialah pengoptimuman yang dilakukan sebelum pengaturcara mempunyai semua maklumat yang diperlukan untuk membuat keputusan termaklum tentang tempat dan cara melakukannya.

Dalam amalan, sukar untuk meramalkan di mana kesesakan akan berlaku. Percubaan untuk mengoptimumkan sebelum mendapatkan keputusan empirikal akan membawa kepada kerumitan kod dan kemunculan ralat, tetapi tidak akan membawa apa-apa faedah.

Bagaimana untuk mengelak? Pertama, tulis kod yang bersih, boleh dibaca, berfungsi menggunakan algoritma dan alatan yang terkenal dan terbukti. Jika perlu, gunakan alat pemprofilan untuk mencari kesesakan. Bergantung pada ukuran, bukan tekaan dan andaian.

Contoh dan ciri

Caching sebelum membuat profil. Menggunakan heuristik yang kompleks dan tidak terbukti dan bukannya algoritma yang betul secara matematik. Pilihan rangka kerja baharu yang belum diuji yang mungkin berkelakuan salah di bawah beban.

Apa susahnya

Tidak mudah untuk menentukan bila pengoptimuman adalah pramatang. Adalah penting untuk meninggalkan ruang untuk pertumbuhan terlebih dahulu. Anda perlu memilih penyelesaian dan platform yang membolehkan anda mengoptimumkan dan berkembang dengan mudah. Juga kadangkala pengoptimuman pramatang digunakan sebagai alasan untuk kod buruk. Sebagai contoh, mereka mengambil algoritma O(n2) hanya kerana algoritma itu akan menjadi O(n) lebih sukar.

ciptaan basikal

Maksud anti-corak ini ialah pengaturcara membangunkan penyelesaiannya sendiri untuk masalah yang penyelesaiannya sudah wujud, dan selalunya penyelesaian yang lebih berjaya.

Pembangun menganggap dirinya lebih bijak, jadi dia cuba menghasilkan penyelesaian sendiri untuk setiap tugas, walaupun pengalaman pendahulunya. Selalunya, ini hanya membawa kepada kehilangan masa dan penurunan dalam kecekapan pengaturcara. Lagipun, penyelesaiannya mungkin tidak optimum, jika didapati sama sekali.

Sudah tentu, anda tidak boleh membuang sepenuhnya kemungkinan penyelesaian bebas, kerana ini akan membawa kepada pengaturcaraan salin-tampal secara langsung. Pembangun mesti menavigasi tugas yang mungkin muncul di hadapannya untuk menyelesaikannya dengan cekap, menggunakan penyelesaian siap sedia atau mencipta sendiri.

Selalunya, sebab anti-corak ini adalah kekurangan masa yang mudah. Dan masa adalah wang.

Ciptaan basikal roda empat segi

Anti-corak ini sangat berkait rapat dengan mencipta semula roda - mencipta penyelesaian buruk anda sendiri apabila penyelesaian yang lebih baik wujud.

Anti-corak ini mengambil masa dua kali ganda: pertama, masa dihabiskan untuk mencipta dan melaksanakan penyelesaian anda sendiri, dan kemudian untuk memfaktor semula atau menggantikannya.

Pengaturcara mesti menyedari kewujudan pelbagai penyelesaian untuk julat tugas tertentu, berpandukan kelebihan dan kekurangannya.

Semua masalah yang anda akan hadapi sebagai pengaturcara boleh dibahagikan kepada dua bahagian:

  • orang bijak menyelesaikan masalah ini 30 tahun lalu
  • orang bijak menyelesaikan masalah ini 50 tahun lalu

Kebanyakan masalah pengaturcaraan telah berjaya diselesaikan sebelum anda dilahirkan . Tidak perlu mencipta apa-apa - hanya kaji pengalaman orang lain (inilah gunanya buku).

Pada tahun 2022, kita boleh menyambut hari lahir berikut:

  • Bahasa pengaturcaraan
    • Bahasa C bertukar ke 50 (1972)
    • Bahasa Java bertukar menjadi 27 (1995)
    • Python berumur 31 tahun (1991)
  • Sambungan
    • Internet telah berusia 39 tahun (1983)
    • Telefon bimbit berusia 49 tahun (1973)
    • SMS pertama dihantar 30 tahun yang lalu (1992)
  • Corak
    • Corak MVC bertukar menjadi 44 (1978)
    • SQL dicipta 48 tahun yang lalu (1974)
    • Kacang Jawa telah dicipta 26 tahun yang lalu (1996)
  • Perpustakaan
    • Hibernate telah dicipta 21 tahun yang lalu (2001)
    • Spring dicipta 20 tahun yang lalu (2002)
    • Tomcat dikeluarkan 23 tahun yang lalu (1999)
  • OS
    • Unix dikeluarkan 51 tahun yang lalu (1971)
    • Windows melihat cahaya hari 37 tahun yang lalu (1985)
    • Mac OS dikeluarkan 21 tahun yang lalu (2001)

Dan semua perkara ini bukan hanya dicipta, ia dibangunkan sebagai penyelesaian kepada masalah yang sangat biasa dan relevan pada masa itu.