Tiêu chuẩn mã hóa Python / các phương pháp hay nhất [đã đóng]


116

Trong python, bạn có thường sử dụng PEP 8 - Hướng dẫn kiểu cho mã Python làm tiêu chuẩn / hướng dẫn mã hóa của mình không? Có bất kỳ tiêu chuẩn chính thức hóa nào khác mà bạn thích không?


1
//, Việc lôi kéo "sở thích của khán giả" thoạt đầu có vẻ vô hại, nhưng nó biến stackoverflow thành một cơ chế thăm dò, một kiểu dân chủ biến thái của một số ít chống lại nhiều người. "Có ________ nào khác mà bạn thích không?" theo nghĩa đen, là yêu cầu họ cho một sở thích, không phải là một sự thật.
Nathan Basanese

Câu trả lời:


150

"Trong python, bạn thường sử dụng PEP 8 - Hướng dẫn kiểu cho Mã Python làm tiêu chuẩn / hướng dẫn mã hóa của mình? Có bất kỳ tiêu chuẩn chính thức hóa nào khác mà bạn thích không?"

Như đã đề cập, bạn làm theo PEP 8 cho văn bản chính và PEP 257 cho quy ước docstring

Cùng với Hướng dẫn kiểu Python, tôi khuyên bạn nên tham khảo những điều sau:

  1. Code Like a Pythonista: Idiomatic Python
  2. Những lỗi thường gặp và mụn cóc
  3. Cách không viết mã Python
  4. Python gotcha


8

Tôi rất chặt chẽ với PEP-8.

Có ba điều cụ thể mà tôi không thể bận tâm khi chuyển sang PEP-8.

  • Tránh khoảng trắng không liên quan ngay bên trong dấu ngoặc đơn, dấu ngoặc đơn hoặc dấu ngoặc nhọn.

    Đề xuất: spam(ham[1], {eggs: 2})

    Tôi vẫn làm điều này: spam( ham[ 1 ], { eggs: 2 } )

    Tại sao? Hơn 30 năm có thói quen ăn sâu là bám sát các tên hàm hoặc từ khóa câu lệnh (trong C). Bắt đầu với Fortran IV vào những năm 70.

  • Sử dụng dấu cách xung quanh các toán tử số học:

    Đề xuất: x = x * 2 - 1

    Tôi vẫn làm điều này: x= x * 2 - 1

    Tại sao? Khoa học lập trình của Gries đề xuất điều này như một cách để nhấn mạnh mối liên hệ giữa nhiệm vụ và biến trạng thái của người đang được thay đổi.

    Nó không hoạt động tốt cho nhiều bài tập hoặc bài tập tăng cường, vì tôi sử dụng nhiều khoảng trắng.

  • Đối với tên hàm, tên phương thức và tên biến phiên bản

    Đề xuất: chữ thường, với các từ được phân tách bằng dấu gạch dưới khi cần thiết để cải thiện khả năng đọc.

    Tôi vẫn làm điều này: camelCase

    Tại sao? Hơn 20 năm có thói quen ăn sâu vào camelCase, bắt đầu với Pascal vào những năm 80.


1
Đó là nội dung tuyệt vời! codingstyleguide.com hoặc codereview.stackexchange.com sẽ là một nơi tuyệt vời để có những hướng dẫn tuyệt vời này.
Pompeyo

5

PEP 8 là tốt, điều duy nhất mà tôi ước nó trở nên khó khăn hơn là cuộc thánh chiến Tabs-vs-Spaces.

Về cơ bản, nếu bạn đang bắt đầu một dự án trong python, bạn cần chọn Tabs hoặc Spaces và sau đó bắn tất cả những kẻ vi phạm trong tầm mắt.


4
Tab hoặc Dấu cách? Từ PEP8: Dấu cách là phương pháp thụt lề ưu tiên. Các tab chỉ nên được sử dụng để duy trì nhất quán với mã đã được thụt lề với các tab.
The Demz

//, PEP8 khá rõ ràng rằng dấu cách là phương pháp thụt lề ưu tiên, Ryan. Bị phản đối. Tuy nhiên, bạn sẽ cập nhật câu trả lời chứ?
Nathan Basanese

5

Để thêm vào danh sách các hướng dẫn thành ngữ của bhadra :

Kiểm tra bài thuyết trình của Anthony Baxter về Lập trình Python hiệu quả (từ OSON 2005).

Một đoạn trích:

# dict's setdefault method turns this:
if key in dictobj:
    dictobj[key].append(val)
else:
    dictobj[key] = [val]
# into this:
dictobj.setdefault(key,[]).append(val)

4

Tôi tuân theo nó cực kỳ nghiêm ngặt. Vị thần duy nhất trước PEP-8 là các cơ sở mã hiện có.


1
và tôi xin lưu ý rằng PEP-8 thậm chí còn tính đến các cơ sở mã hiện có.
John Mulder

2

Vâng, tôi cố gắng theo dõi nó chặt chẽ nhất có thể.

Tôi không tuân theo bất kỳ tiêu chuẩn mã hóa nào khác.


1

Tôi làm theo PEP8, nó là một phần tuyệt vời của phong cách mã hóa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.