2010-12-05 33 views
7

Nói chung, tôi đang sử dụng cách đặt tên tiêu chuẩn được nêu trong PEP-8 cho các biến. Giống như:Chữ viết tắt nào chúng ta nên sử dụng cho tên biến python?

delete_projects 
connect_server 

Tuy nhiên đôi khi tôi không thể tìm thấy bất kỳ tên tốt và cái tên chỉ mở rộng đến một dài một:

project_name_to_be_deleted 

tôi có thể sử dụng pr_nm_del, nhưng điều này làm cho mã đọc được. Tôi thực sự đang tìm kiếm các tên biến tốt cho các hàm. Bất cứ khi nào tôi bắt đầu viết một chức năng mới, tôi chỉ dành thời gian để tìm một tên biến tốt.

Có bất kỳ tiêu chuẩn nào để chọn một số chữ viết tắt nhất định cho các tên biến nổi tiếng như, delete,project,configuration, etc. không? Làm thế nào để bạn chọn tên biến ngắn nhưng tốt và dễ đọc?

Câu hỏi này có thể không phụ thuộc trực tiếp vào Python, nhưng khi các ngôn ngữ lập trình khác nhau sử dụng định dạng tên biến khác nhau, tôi nghĩ tôi giới hạn câu hỏi này thành Chỉ Python.

+8

Ah, 'đặt tên-quy ước' ... như họ nói, hai vấn đề khó khăn trong khoa học máy tính là không hợp lệ bộ nhớ cache, đặt tên và lỗi off-by-one;) – delnan

+0

Tại sao không sử dụng các dạng ngắn tiêu chuẩn như: del cho xóa, cnfg cho cấu hình và như vậy? – user225312

+0

@sukhbir, đó là vấn đề. Là một newbie mà không làm việc cho bất kỳ dự án khác trước đây, nó chỉ là khó khăn những gì để lựa chọn. Ví dụ với PEP-8 tôi biết rằng tôi nên sử dụng các biến như 'name_variable' nhưng tôi không biết nên chọn những biến ngắn hoặc từ viết tắt nào. Tôi có nghĩa là có bất kỳ tài liệu hoặc tiêu chuẩn nào cho điều đó? Tôi không thể tìm thấy bất cứ điều gì liên quan đến điều này. –

Trả lời

5

pr_nm_del? Bạn cũng có thể để một con mèo đặt tên cho nó. Tôi tin rằng viết tắt nên tránh bằng mọi giá, ngoại trừ những cái nổi tiếng/rõ ràng (như del, như được đề cập trong các nhận xét - đó là một từ khóa thậm chí là một từ khóa ngôn ngữ!) Tiết kiệm được rất nhiều đánh máy.

Nhưng điều đó không có nghĩa là số nhận dạng quá dài dòng. Cũng như bối cảnh là quan trọng để hiểu các câu lệnh bằng ngôn ngữ tự nhiên, các mã định danh thường có thể được giữ ngắn hơn nhiều (và dễ hiểu) bằng cách tham khảo ngữ cảnh. Trong ví dụ của bạn, project_name hoàn toàn ổn - thủ tục đã được gọi là delete_project, vì vậy project_name rõ ràng là đề cập đến tên của dự án sẽ bị xóa. Ngay cả name cũng có thể không sao. Không cần phải nói lại điều đó bằng cách gắn thêm _to_be_deleted.

+1

Nếu bạn thực sự phải đặt tên cho dự án cần xóa, tại sao không gọi nó là 'obsolete_project_name'? –

+2

Tôi sẽ tìm 'doomed_project_name'. –

0

Tôi nghĩ tên dài được chấp nhận miễn là chúng có tính mô tả. Với một trình soạn thảo/IDE tốt, tên ngắn không thể lưu gõ, trong khi tên dài nhưng mô tả có thể tiết kiệm thời gian đọc mã của bạn. Vì vậy, độ dài của thời gian đọc của tên là quan trọng hơn nhiều so với độ dài thực tế của tên.

Ví dụ: project_name_to_be_deleted của bạn là tốt. Nếu bạn muốn rút ngắn nó, tôi sẽ đề nghị sử dụng project_name_to_del kể từ del là một từ viết tắt nổi tiếng cho delete (bạn thậm chí có thể tìm thấy điều này trong bàn phím của bạn). Và việc sử dụng confconfiguration cũng rất phổ biến. Nhưng đừng đi xa hơn. Ví dụ: proj2del không phải là một ý tưởng hay.

Ngoài ra, đối với những thứ nội bộ/địa phương, bạn nên sử dụng các tên ngắn không mang tính mô tả.

0

Trong ví dụ của bạn, bạn có một hàm gọi là delete_project. Tự hỏi những gì để gọi biến mà các cửa hàng dự án sẽ bị xóa? Chỉ cần 'dự án'!

def delete_project(self, project): 
    del self.projects[project] 

Đơn giản.

Tên biến không cần phải mô tả đầy đủ. Bối cảnh có thể cho vay rất nhiều cách chúng ta hiểu một tên cụ thể tại một thời điểm cụ thể. Không cần phải nói "đây là dự án sẽ bị xóa" khi thảo luận về một hàm xóa dự án.

Nếu bạn thấy tên hàm quá dài, có thể chúng đang làm quá nhiều.Nếu bạn tìm thấy tên biến đang trở nên quá dài, hãy nghĩ về mục đích của chúng trong bối cảnh hiện tại và xem liệu một phần của tên có thể được ngụ ý hay không.

1

Đây là một vấn đề mà loại giải quyết chính nó khi bạn đang làm OOP. Đối tượng (project, configuration) là lớp và động từ (delete, etc) là tên phương pháp ví dụ:

class Workspace(object): 

    def delete_project(self, project): 
     log.info("Deleting", project.name) 
     ... 
0

Rất ít tên có chữ viết tắt "tiêu chuẩn". Những gì bạn nghĩ là "phổ biến" hoặc "tiêu chuẩn" là không giống nhau cho người khác. Thời gian thiết lập một tên tốt được đầu tư tốt, vì mã được đọc thường xuyên hơn nhiều so với nó được viết. Như một ví dụ, tôi đã nhìn thấy "cấu hình" viết tắt là "config" "cnfg" "cfg" "CNF" ... do đó, bài học là - không viết tắt, trừ khi có một rất viết tắt nổi tiếng của nó!

Các vấn đề liên quan