Saya browsing proyek github dan menemukan modul ini yang memiliki lebih dari 10 ribu baris.
Apakah praktek umum untuk memiliki banyak kode dalam satu modul?
Menurut saya ini harus dibagi beberapa modul. Mungkin satu untuk setiap mesin db.
Apa manfaat yang didapat pengembang dari membuat satu modul besar seperti ini (selain "memiliki semuanya di satu tempat") atau kerugian apa yang ada dari membaginya (selain "kompleksitas")?
python
code-quality
modules
Mahmoud Hossam
sumber
sumber
Jawaban:
Apa yang Anda temui adalah apa yang disebut " objek Dewa ", karena ia melakukan semua atau tahu semua. Lari darinya (jika bisa).
Tidak ada jumlah pasti LOC per modul, tetapi harus menjadi sesuatu yang membuatnya mudah untuk menelusuri kode dan dengan mudah memahami apa yang dilakukan metode. Dari pengalaman pribadi saya, jika modul Anda melampaui 1k baris * , Anda melakukan sesuatu yang salah.
* Bahkan modul garis 1k sangat besar.
sumber
Ini tampaknya merupakan modul di mana batas ukuran tipikal mungkin tidak berlaku. Mayoritas fungsi ada di baris 2k pertama dari kode dan komentar. Sisa file tampaknya banyak kelas adaptor dan kelas dukungan lainnya yang tampaknya tergabung erat dengan modul. Dalam bahasa lain, kelas-kelas akan berada dalam file terpisah dengan ukuran yang masuk akal.
Beberapa string dokumen lain mungkin berguna, tetapi mereka akan menambah ukuran modul yang sudah besar. Kode ini jelas dan cukup jelas dengan komentar yang sesuai jika diperlukan.
sumber
Tentu saja "batas" aktual bervariasi menurut proyek Anda dan banyak faktor.
Tapi saya berpadu dengan aturan praktis: 200 baris Python yang layak. Artinya, tidak ada kode C atau Java yang ditulis dalam Python, tetapi Python yang baik dalam Python.
sumber
Wow.
Saya kira saya tidak tahu jawaban lengkap untuk yang satu ini, tapi saya suka berpikir sebagai jawaban untuk pertanyaan judul "Seberapa besar seharusnya modul Python?" sebagai konsep Parnas, menyembunyikan rahasia. Dalam hal ini modul tampaknya melakukan itu dengan benar (dan itu rahasia besar yang disembunyikannya).
Saya telah menggali ke dalam makalah kemudian yang banyak berbicara tentang kopling dan kohesi. Mungkin memiliki banyak modul db akan memaksa terlalu banyak panggilan antar modul sehingga meningkatkan apa yang dianggap praktik buruk, yaitu, kohesi yang lebih rendah dan kopling yang lebih tinggi?
Saya telah melihat data eksperimental berbicara tentang pemrogram memutuskan untuk mengorbankan praktik yang baik demi kesederhanaan dan pemahaman meskipun apa pun praktik yang baik menentukan. Bahkan, mungkin ada konflik antara praktik yang baik juga. Katakanlah, kinerja biasanya tidak membuat orang yang melakukan pemeliharaan bahagia nanti. Saya tidak begitu yakin bagaimana keterbacaan akan ditingkatkan dalam hal ini dengan modul sebesar itu.
Hal lain yang saya perhatikan adalah bahwa bagian dari kode dinyatakan sebagai generik dan sisa dbs diperluas darinya. Saya bukan programmer python, tapi mungkin ini bisa membenarkan sesuatu?
Jadi, saya tidak punya jawaban final, tapi saya harap seseorang juga menyoroti poin-poin ini!
sumber