Tôi có một mô-đun có mục đích là xác định một lớp được gọi là "nib". (và một số lớp liên quan nữa.) Tôi nên gọi chính mô-đun như thế nào? "ngòi"? "nibmodule"? Còn gì nữa không?
Tôi có một mô-đun có mục đích là xác định một lớp được gọi là "nib". (và một số lớp liên quan nữa.) Tôi nên gọi chính mô-đun như thế nào? "ngòi"? "nibmodule"? Còn gì nữa không?
Câu trả lời:
Chỉ cần ngòi. Đặt tên lớp là Nib, viết hoa N. Để biết thêm về quy ước đặt tên và các lời khuyên về kiểu khác, hãy xem PEP 8 , hướng dẫn về kiểu Python.
Client
, và dễ hiểu là tôi thường tạo các phiên bản của nó mà tôi muốn gọi client
. Nhưng theo quy ước của bạn, tên mô-đun sẽ là client
, và vì vậy tôi luôn phải đặt tên cho các phiên bản của mình một cái gì đó không tự nhiên client_instance
. Bạn nghĩ gì về vấn đề này?
Client
, thì nó sẽ xung đột với tên lớp Client
. Vì chỉ có 3 khả năng đặt tên biến thể ( client
, Client
hoặc CLIENT
) có sẽ luôn có một cuộc đụng độ giữa hai trong số các trường hợp, các lớp học, mô-đun hoặc hằng số. Tôi tin rằng có ít lần bạn đặt tên mô-đun của mình giống với một thể hiện hoặc hằng số hơn so với lớp, và do đó là quy ước đặt tên tốt hơn cho các khả năng khác. Nó cũng sẽ làm cho việc nhập từ các mô-đun dễ đọc hơn vì bạn thường nhập các lớp và hằng hơn là các biến.
Tôi sẽ gọi nó là nib.py. Và tôi cũng sẽ đặt tên cho lớp là Nib.
Trong một dự án python lớn hơn mà tôi đang thực hiện, chúng tôi có rất nhiều mô-đun xác định về cơ bản một lớp quan trọng. Các lớp được đặt tên bắt đầu bằng một chữ cái viết hoa. Các mô-đun được đặt tên giống như lớp bằng chữ thường. Điều này dẫn đến nhập khẩu như sau:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
Nó hơi giống như mô phỏng theo cách Java. Một lớp cho mỗi tệp. Nhưng với sự linh hoạt được bổ sung, bạn luôn có thể thêm một lớp khác vào một tệp duy nhất nếu nó phù hợp.
Tôi biết giải pháp của tôi không phổ biến lắm theo quan điểm của pythonic, nhưng tôi thích sử dụng cách tiếp cận Java của một mô-đun-> một lớp, với mô-đun được đặt tên là lớp. Tôi hiểu lý do đằng sau kiểu python, nhưng tôi không quá thích có một tệp rất lớn chứa rất nhiều lớp. Tôi cảm thấy khó duyệt, mặc dù gấp.
Một lý do khác là kiểm soát phiên bản: có một tệp lớn có nghĩa là các cam kết của bạn có xu hướng tập trung vào tệp đó. Điều này có thể dẫn đến một số lượng lớn các xung đột cần được giải quyết. Bạn cũng mất thông tin nhật ký bổ sung mà cam kết của bạn sửa đổi các tệp cụ thể (do đó liên quan đến các lớp cụ thể). Thay vào đó, bạn thấy một sửa đổi đối với tệp mô-đun, chỉ với nhận xét cam kết để hiểu sửa đổi nào đã được thực hiện.
Tóm lại, nếu bạn thích triết lý python, hãy xem các đề xuất của các bài viết khác. Thay vào đó, nếu bạn thích triết lý giống java, hãy tạo một Nib.py chứa lớp Nib.
spyder
hoặc một trình chỉnh sửa tương tự để xem tóm tắt các lớp của bạn nhằm hỗ trợ điều hướng và hai ngăn có cùng tệp mở trên cả hai. Ngoài ra, vui lòng đọc PEP8. Python là để viết Python và Java cho Java, nhưng Python không phải để viết Java.
ngòi ổn. Nếu nghi ngờ, hãy tham khảo hướng dẫn kiểu Python.
Từ PEP 8 :
Tên gói và tên mô-đun Mô-đun phải có tên ngắn, toàn chữ thường. Dấu gạch dưới có thể được sử dụng trong tên mô-đun nếu nó cải thiện khả năng đọc. Các gói Python cũng nên có tên ngắn, toàn chữ thường, mặc dù không khuyến khích sử dụng dấu gạch dưới.
Vì tên mô-đun được ánh xạ tới tên tệp và một số hệ thống tệp không phân biệt chữ hoa chữ thường và cắt ngắn các tên dài, điều quan trọng là tên mô-đun phải được chọn khá ngắn - đây sẽ không phải là vấn đề trên Unix, nhưng nó có thể là một sự cố khi mã được chuyển đến các phiên bản Mac hoặc Windows cũ hơn hoặc DOS.
Khi mô-đun mở rộng được viết bằng C hoặc C ++ có mô-đun Python đi kèm cung cấp giao diện cấp cao hơn (ví dụ: hướng đối tượng hơn), mô-đun C / C ++ có dấu gạch dưới ở đầu (ví dụ: _socket).
Mô-đun phải có tên ngắn, toàn chữ thường. Dấu gạch dưới có thể được sử dụng trong tên mô-đun nếu nó cải thiện khả năng đọc.
Các gói Python cũng nên có tên ngắn, toàn chữ thường, mặc dù không khuyến khích sử dụng dấu gạch dưới.
Khi mô-đun mở rộng được viết bằng C hoặc C ++ có mô-đun Python đi kèm cung cấp giao diện cấp cao hơn (ví dụ: hướng đối tượng hơn), mô-đun C / C ++ có dấu gạch dưới ở đầu (ví dụ: _socket).
mô-đun foo trong python sẽ tương đương với tệp lớp Foo trong Java
hoặc là
mô-đun foobar trong python sẽ tương đương với tệp lớp FooBar trong Java