Jangan belajar pola, belajar konsep

Selamat siang (atau sore atau pagi, tergantung kapan posting ini keluar).

Saya ingin berbicara tentang bagian elit pemrograman dan menyampaikan, secara umum, ide yang jelas untuk pemula dalam pengembangan back-end (dan tidak hanya), di sepanjang jalan menggunakan upaya untuk mulai menulis di Habré.

Jadi


Setiap programmer dengan setidaknya selera yang baik, yang memulai pemrograman atas kehendaknya sendiri, setelah memahami dasar-dasar bahasa dan menulis proyek pertama, akan diminta untuk tidak "bagaimana melakukan sesuatu", tetapi "bagaimana melakukan sesuatu dengan benar" dan "apa standarnya kecantikan. "

Ini, tentu saja, pertanyaan sejati cepat atau lambat akan membawanya ke nama-nama yang tidak jelas "Pabrik Abstrak", "Singleton", "Mediator" dan singkatan yang sama-sama dapat dimengerti SOLID, GRASP.

Harap dicatat bahwa saya tidak mengutip contoh OOP, MVC, ORM - ini adalah konsep dengan makna dan ruang lingkup yang sangat spesifik, dengan tingkat abstraksi minimum.

OOP mengatakan: "Bung, saya menemukan cara yang jelas dan dapat dimengerti untuk mempresentasikan program."
MVC mengatakan: "bung, akan lebih baik jika Anda membagi kode, dan aturan pemisahan berada di bawah cut."
ORM mengatakan: "pss, man, saya baru saja menemukan cara untuk mendamaikan dua ideologi yang berbeda - OOP dan DB."
Semuanya jelas di sini.

Saya berbicara tentang hal-hal yang melibatkan tingkat abstraksi maksimum. Contoh:
"Mediator":
orang, jika Anda memiliki banyak objek berbeda, buat satu pusat, sambungkan semua yang lain ke sana.
Programmer hanya akan terlihat aneh ke arahnya, jika dia ramah, dia akan mengatakan "terima kasih, topi!", Dan untuk mata dia akan memanggil tidak lebih dari "bukti kapten".

Hal yang sama berlaku untuk pola lainnya:
"Pabrik":
orang, tahukah Anda bahwa Anda dapat membuat objek menggunakan kelas lain?
"Data mapper":
mengapa Anda tidak menggunakan lapisan abstraksi tambahan untuk menyimpan data?
"Pengamat":
kawan, tapi mari kita cari beberapa antarmuka?
"Strategi":
Apakah Anda tahu apa itu polimorfisme?
Dan terutama SOLID:
S (tanggung jawab tunggal):
satu modul harus melakukan hanya satu tugas, jangan lupakan itu!
I (pemisahan antarmuka):
gunakan antarmuka yang berbeda untuk operasi yang berbeda!
Baik dan sebagainya.

Saya mengarah pada kenyataan bahwa area utama penerapan pola sama sekali tidak terbiasa dengan kode yang baik. Diperlukan pola untuk membahas program yang sudah ditulis oleh seseorang, untuk memformalkan kode yang baik. Sehingga Anda dapat mengatakan ("untuk apa kelas ini?" - "ah, ini adalah bagian dari perantara"). Tetapi tidak untuk memeriksa tulisannya dengan pola uml serangan kejang "aah, pola apa yang berlaku dalam kasus ini?".

Seorang programmer yang fasih dalam beberapa jenis konsep (misalnya, dari atas) akan menulis kode sendiri menggunakan praktik terbaik, bahkan jika dia belum mendengar sepatah kata pun tentang mereka. Dan praktik-praktik terbaik yang sama diperlukan untuk memformalkan hubungan timnya mengarah ke kode-nya - dan pokok di sini, tentu saja, GRASP.

Apa yang ingin saya katakan kepada programmer pemula:

  1. Pelajari konsep, bukan pola. Konsep sangat penting.
  2. jika Anda tiba-tiba sadar bahwa Anda tidak tahu polanya, jangan panik. Ini hanya penting bagi perekrut, tetapi tidak pada kode dan gaya Anda yang baik.

Apa yang ingin saya katakan kepada guru Habr:

  1. Saya mungkin salah. Serius.
  2. Saya mengerti idenya sudah lumrah. Tetapi, bagaimanapun, untuk beberapa alasan saya sering menemukan pendekatan yang sama untuk pemula.
  3. Berdasarkan paragraf 2, artikel serupa mungkin sudah ditulis sebelum saya. Saya tidak tahu.

Dan akhirnya: artikelnya, tentu saja, bersifat subyektif, saya tidak mendesak siapa pun (untuk melawan pabrik) untuk apa pun. Ini hanya pendapat saya :)

Selain itu, saya hanya seorang junior, tetapi pendekatan ini - terlalu banyak perhatian pada rincian - selalu menyesatkan saya.

Semoga harimu menyenangkan!

Source: https://habr.com/ru/post/id468885/


All Articles