Halo semuanya! Sebagai bagian dari kursus
Pengembang Python kami
, kami melakukan pelajaran terbuka lain tentang topik "Bagaimana Jangan Menulis dengan Python". Pelajaran ini diajarkan oleh guru dan pencipta kursus,
Stanislav Stupnikov , yang memiliki pengalaman luas dalam pengembangan industri dan ilmiah. Antipemrograman pemrograman, praktik buruk dan kejahatan lainnya, yang perlu Anda ketahui dan harus dihindari dalam proses penulisan kode, dipertimbangkan.
Lihat video dan ringkasan untuk detailnya. Peringatan: beberapa contoh kode tidak direkomendasikan untuk dijalankan di komputer Anda!
Selama pelajaran terbuka, guru menunjukkan slide yang dihasilkan dengan Jupyter Notebook.
Jadi mari kita mulai!
Jadi mengapa tidak menulis dengan Python?
Untuk kenyamanan mengirimkan materi, daftar teknik disiapkan yang tidak boleh digunakan dalam proses pemrograman. Setiap contoh disertai dengan contoh kode yang jelas (tersedia untuk dilihat secara gratis dalam video). Kami menjelaskan secara singkat antipattern utama:
- Pola popok. Itu tentang pola yang disebut "popok", yang biasanya berarti terlalu luas coba-kecuali. Misalnya, Anda memanggil fungsi yang merupakan pembungkus untuk sesuatu, misalnya, membungkus lib klien untuk beberapa database. Dalam kasus yang baik (sistemnya kecil) semuanya akan baik-baik saja dalam 99% kasus, tetapi jika sistemnya besar, maka probabilitas masalah tidak dikalikan dengan cara terbaik. Akibatnya, sesuatu terus-menerus jatuh atau pecah.
- Antiglobalisme. Semua orang tahu bahwa variabel global tidak efisien, kecuali dalam beberapa kasus luar biasa. Jauh lebih baik untuk melewatkan segala sesuatu dalam bentuk atribut ke fungsi, dll., Dll., Untuk mencapai hasil yang diinginkan. Namun, beberapa muncul dengan "ide bagus" - untuk menggunakan objek yang bisa berubah. Ini terdiri dari melewatkan bukan variabel global, tetapi objek yang dapat diubah menjadi fungsi, lalu mengubahnya di dalam dan kemudian tidak mengembalikan apa pun kembali. Ini sangat keren!) Bahkan, sepotong template pemrograman dari bahasa C, ditransfer ke dunia Python.
- Stairway to Heaven. Seperti yang mungkin sudah Anda duga, ini adalah "tangga menuju surga". Masalah ini paling baik ditandai dengan gambar sederhana:

- Jutaan. Kesalahan rencana ini sering dilakukan oleh para programmer yang karena satu dan lain alasan beralih dari Java ke Python. Secara alami, mereka datang dengan piagam mereka sendiri, sehingga mereka melanggar aturan pengembangan Python secara massal. Ini adalah tampilan indentasi gila, dan CamelCase, dan keinginan untuk membuat lebih banyak kelas ... Akibatnya, struktur kode menjadi lebih rumit. Di mana skrip dengan ukuran 300 baris dapat disingkirkan, kita melihat 10-20 file.
- Overengineering. Sangat sering, iterasi kedua dari suatu proyek tidak pernah selesai atau dilaksanakan dengan cara yang terlalu rumit. Ini terjadi jika Anda ingin menulis ulang kode yang ada tetapi cacat, menjadikannya ideal. Pada saat yang sama, Anda lupa bahwa yang terbaik adalah musuh dari yang baik. Akibatnya, programmer jatuh ke dalam perangkap rekayasa ulang standar, ketika implementasi menjadi lebih mahal, berat dan rumit dari yang diperlukan untuk menyelesaikan tugas-tugas. Dan faktanya: haruskah sedan keluarga mencapai kecepatan hingga 350 km / jam, dan smartphone, mode yang berubah setiap tahun, bekerja selama 100 tahun?
- Oneliner Masalah mendesak lainnya adalah "garis tunggal". Ini tentang programmer yang mencoba dengan semangat yang patut ditiru untuk mendorong semuanya menjadi satu baris, lima lantai iklan)). Karena kompleksitas kode yang berlebihan dan kekhasan penerapan ekspresi reguler mesin dengan Python, skrip seperti itu terkadang βmenempelβ pada penguraian, jadi Anda harus menggunakan modul khusus untuk memperbaiki masalah.
- Salin saat Dibaca. Ini bukan kesalahan sebagai fitur pemrograman Python. Banyak yang akrab dengan pendekatan Copy-On-Write. Idenya adalah bahwa ketika membaca area data, salinan bersama digunakan, dan ketika mengubah, salinan baru dibuat, yaitu, kita berbicara tentang mengoptimalkan proses kinerja. Jika kita berbicara tentang Python, dalam beberapa kasus kita tidak hanya membaca array elemen, tetapi merujuk ke semua struktur yang ada di dalam memori, yaitu, kita "menulis ulang" memori, mengubahnya. Jadi, alih-alih Copy-On-Write, kita mendapatkan Copy-on-Read ketika kita tampaknya membaca memori, namun, pada kenyataannya, kita harus menyalin informasi ini dari ruang orang tua kepada diri kita sendiri sebagai proses anak, yang membuatnya sedih, karena pendekatan optimasi tidak berfungsi, dan konsumsi meningkat.
- Tidak ada garpu. Fork - kloning munculnya proses baru. Masalahnya terkait dengan spesifik bekerja dengan sistem Unix dan ketidakjelasan beberapa struktur data yang tersembunyi dalam implementasi. Proses "bercabang" adalah proses yang dimulai pada saat ketika utas telah mengambil log dalam antrian untuk memasukkan sesuatu ke dalamnya. Yaitu, proses baru yang muncul juga ingin menulis sesuatu, tetapi untuk ini ia perlu mengambil log dari antrian ini sendiri, tetapi ia tidak dapat melakukan ini, karena log sudah ditangkap. Akibatnya, kami mendapatkan kunci. Semua ini hanya sekali lagi menegaskan bahwa itu tidak layak pemrograman, tidak mengetahui fitur-fitur implementasi lingkungan di mana Anda bekerja dan alat-alat yang Anda gunakan.
Masih ada banyak hal menarik, jadi lebih baik tonton videonya, karena menceritakan kembali masih pendek.
Seperti biasa, kami menunggu pertanyaan, komentar, dan saran di sini atau di
pintu terbuka .