Lưu tên mới trong python là gì
Ở bài viết trước, PEP8 - Chuẩn Kết Nối Toàn Cầu Của Python Dev (Phần 1) chúng ta đã cùng nhau tìm hiểu về tầm quan trọng của chuẩn PEP-8 và một số chỉ dẫn liên quan đến "Trình bày các đoạn mã nguồn" (có cả lý thuyết và thực hành). Bài viết tiếp theo này, chúng ta sẽ cùng nhau tìm hiểu về các chỉ dẫn liên quan đến đặt tên (naming) được nêu trong PEP-8. Show Bài viết này sẽ nhấn mạnh vào hai vấn đến: Nói về đặt tên trong các chương trình phần mềm, điều đầu tiên cần phải nhấn mạnh (với tất cả các ngôn ngữ lập trình, không riêng gì python) đó là đặt tên có ý nghĩa, liên quan đến mục đích xuất hiện của biến dữ liệu, function, class,... Tránh việc đặt tên vô nghĩa để người khác đọc code và lại phải mất thời gian tìm hiểu mục đích sử dụng trong ngữ cảnh hiện tại (trừ trường hợp cố tình thực hiện làm "rối" code). Các bạn có thể tìm đọc "Chapter 2 - Meaningful Names - cuốn sách Clean Code của Uncle Bod". Naming - Các quy ước chung cho việc đặt tên trong Python.PEP-8 gợi ý các kiểu đặt tên các biến (python được gọi là
Ngoài các cách trên, còn một số cách đặt tên khác nhưng ít được dùng (không được khuyên dùng):
Trong quá trình làm việc, để gom nhóm theo mục đích sử dụng, các lập trình có thể tiền tố và phía trước biến, function, ... nhưng vẫn theo quy tắc đặt tên chung trên. Ví dụ: gom các attributes thuộc dữ liệu trả về trong os.start(): st_mode, st_ino, st_dev, ... (tham khảo: https://docs.python.org/2/library/os.html#os.stat) Có một số lưu ý cần nhớ trong quy tắc đặt tên, tôi đã nêu trong bài viết gần đây: 3 Lỗi Thường Gặp Khi Mới Làm Quen Với Python. Các bạn có thể tham khảo tại mục "1. Đặt trùng tên biến và function với keyword" Ngoài ra ra còn có một số lưu ý nhỏ khác như: Từ các quy ước chung trên, PEP-8 đưa ra các đề xuất liên quan đến đặt tên cụ thể cho các trường hợp. 1. Đặt tên cho các module/packageTrong python, mỗi file được coi là một module, mỗi folder là một package. Quy tắc đặt tên của module và package là viết thường tất cả các ký tự, nếu có nhiều từ trong tên, dùng ký tự
Một số module được kế thừa từ C/C++, có thể đặt tên với ký tự _ ở phía trước. Lưu ý: Khi đặt tên module, package hãy cố gắng đừng đặt trùng tên với các module/package đã có sẵn của hệ thống. Như ở ví dụ trên, tôi đã đặt package là random_package để phân biệt được với module random đã có sẵn. Nếu dev đặt tên module/package là random, khi thực hiện 0 trình thông dịch của Python sẽ khó phân biệt cần import module random có của python hay import module random do dev viết ra (thường thì sẽ import được theo ngữ cảnh/vị trí sắp xếp structure) và đôi khi kết quả của phần mềm không được như ý muốn.2. Đặt tên cho các biến dữ liệu (variable/name), function:Tên của các functions, variables được đặt tên ở định dạng chữ viết thường, nếu có nhiều từ, sẽ nối với nhau bởi ký tự underscore: Ví dụ: 1 2Biến dữ liệu được đặt là constants value (các dữ liệu không thay đổi), thường được viết hoa toàn bộ các ký tự và có dấu _ nối giữa các từ ví dụ: 3 4Đôi lúc trong quá trình khai báo và sử dụng biến, có những biến dữ liệu không dùng để làm gì sẽ được khai báo là dấu ví dụ: 6 7 83. Đặt tên cho class và attribute/function trong class:Các class trong Python được đặt tên theo định dạng CapitalizedWord (hoặc CamelCase). Ví dụ:
Một số class đặc biệt trong Python được kết thúc bằng một từ khóa đặc biệt, ví dụ: Error cho các class thuộc phân lớp Exception: ValueError, NameError,... Quy ước đặt tên với attribute/function trong class:
Quy ước khai báo tham số truyền vào function trong class:
Ví dụ:
Tổng kếtNgoài việc mang ý nghĩa về "meaningful names", việc đặt tên trong Python còn mang ý nghĩa về "ngữ pháp" (syntax) của chương trình thông qua việc sử dụng các ký tự Hy vọng, thông qua bài viết ngắn này, các bạn sẽ các có "từ khóa" để tiếp tục tìm hiểu về việc đặt tên sao cho hiệu quả (clean-code) và tự tin với việc sử dụng OOP trong Python (đón chờ bài viết tiếp theo của tôi về chủ đề OOP trong Python nhé). Cảm ơn các bạn đã đọc bài viết. |