Saya memiliki modul yang tujuannya adalah untuk mendefinisikan kelas yang disebut "nib". (dan beberapa kelas terkait juga.) Bagaimana saya harus memanggil modul itu sendiri? "ujung pena"? "nibmodule"? Ada yang lain?
python
naming-conventions
Ram Rachum
sumber
sumber
Client
, dan dapat dimengerti bahwa saya sering membuat contoh yang ingin saya hubungiclient
. Tetapi menurut konvensi Anda, nama modulnya adalahclient
, jadi saya selalu harus memberi nama instance saya dengan sesuatu yang tidak wajarclient_instance
. Apa pendapat Anda tentang masalah ini?Client
, maka itu akan bentrok dengan nama kelasClient
. Karena hanya ada 3 kemungkinan varian penamaan (client
,Client
atauCLIENT
) akan selalu ada bentrokan antara dua instance, kelas, modul, atau konstanta. Saya percaya ada lebih sedikit kali Anda memberi nama modul Anda sama sebagai instance atau konstanta daripada kelas, dan oleh karena itu konvensi penamaan yang lebih baik dari kemungkinan lainnya. Ini juga akan membuat pengimporan dari modul lebih mudah dibaca karena Anda biasanya mengimpor kelas dan konstanta daripada variabel.Saya akan menyebutnya nib.py. Dan saya juga akan menamai kelas Nib.
Dalam proyek python yang lebih besar yang saya kerjakan, kami memiliki banyak modul yang pada dasarnya mendefinisikan satu kelas penting. Nama kelas dimulai dengan huruf kapital. Modul diberi nama seperti kelas dalam huruf kecil. Ini mengarah ke impor seperti berikut:
Ini seperti meniru cara Java. Satu kelas per file. Tetapi dengan fleksibilitas tambahan, Anda selalu dapat menambahkan kelas lain ke satu file jika itu masuk akal.
sumber
Saya tahu solusi saya tidak terlalu populer dari sudut pandang pythonic, tetapi saya lebih suka menggunakan pendekatan Java dari satu modul-> satu kelas, dengan modul yang dinamai sebagai kelas. Saya mengerti alasan di balik gaya python, tetapi saya tidak terlalu suka memiliki file yang sangat besar yang berisi banyak kelas. Saya merasa sulit untuk menjelajah, meski terlipat.
Alasan lainnya adalah kontrol versi: memiliki file besar berarti komitmen Anda cenderung berkonsentrasi pada file itu. Hal ini berpotensi menyebabkan lebih banyak konflik yang harus diselesaikan. Anda juga kehilangan informasi log tambahan yang komit Anda mengubah file tertentu (karena itu melibatkan kelas tertentu). Sebagai gantinya Anda melihat modifikasi pada file modul, dengan hanya komentar komit untuk memahami modifikasi apa yang telah dilakukan.
Kesimpulannya, jika Anda lebih suka filosofi python, carilah saran dari posting lain. Jika Anda lebih memilih filosofi seperti java, buat Nib.py yang berisi kelas Nib.
sumber
spyder
atau editor serupa untuk melihat ringkasan kelas Anda untuk membantu navigasi, dan dua panel dengan file yang sama terbuka pada keduanya. Baca juga PEP8. Python untuk menulis Python, dan Java untuk Java, tetapi Python bukan untuk menulis Java.ujung pena baik-baik saja. Jika ragu, lihat panduan gaya Python.
Dari PEP 8 :
sumber
Dari PEP-8: Nama Paket dan Modul :
sumber
Modul foo di python akan sama dengan file kelas Foo di Java
atau
Modul foobar di python akan sama dengan file kelas FooBar di Java
sumber