>>> import this
The Zen of Python, by Tim Peters
1. Beautiful is better than ugly.
2. Explicit is better than implicit.
3. Simple is better than complex.
4. Complex is better than complicated.
5. Flat is better than nested.
6. Sparse is better than dense.
7. Readability counts.
8. Special cases aren't special enough to break the rules.
9. Although practicality beats purity.
10. Errors should never pass silently.
11. Unless explicitly silenced.
12. In the face of ambiguity, refuse the temptation to guess.
13. There should be one-- and preferably only one --obvious way to do it.[a]
14. Although that way may not be obvious at first unless you're Dutch.
15. Now is better than never.
16. Although never is often better than right now.[b]
17. If the implementation is hard to explain, it's a bad idea.
18. If the implementation is easy to explain, it may be a good idea.
19. Namespaces are one honking great idea – let's do more of those!
1. Beautiful is better than ugly
Code nên nice, dễ đọc, được tổ chức gọn gàng sạch sẽ → dễ hiểu, dễ maintain.
Eg:
Đặt tên biến dễ hiểu.
Breaking long blocks to smaller.
Tách nhỏ thành các hàm, có ý nghĩa riêng
2. Explicit is better than implicit
Code nên rõ ràng, tường minh, không mập mờ / ẩn logic.
Eg:
Sử dụng keyword args trong functions calls thay vì dựa vào vị trí của arguments.
3. Simple is better than complex
Thẳng thắn, đi vào thẳng vấn đề. Complex code có thể gây khó khăn cho việc đọc/ debug, dẫn tới các dependencies không cần thiết, và lỗi tiềm ẩn.
Eg:
Sử dụng simple loop để duyệt list thường dễ hơn là các cách viết comprehension hoặc complex construct.
4. Complex is better than complicated
Đi khi code cần complex, nhưng không nhất thiết phải quá phức tạp.
Eg:
Sử dụng advanced algorithm / data structures để giải quyết vấn đề có thể hơi complex, nhưng vẫn có thể dễ hiểu và maitain.
5. Flat is better than nested
Code nên được tổ chức flat, tránh việc nesting nhiều, hoặc indentation nhiều.
Eg:
Sử dụng returns hoặc guard clauses sớm để tránh nesting in functions.
6. Sparse is better than dense
Viết thông thoáng dễ nhìn =)) Sử dụng whitespace để làm code trông dễ đọc hơn. Tránh việc nhồi nhét quá nhiều code trên 1 dòng.
Eg:
Breaking long lines of code into multiple lines can make the code more readable.
8. Special cases aren’t special enough to break the rules
Code nên follow conventions và best practices, ngay cả trong các trường hợp “đặc biệt”.
Eg:
Sử dụng standard lib để parse date string thay vì viết custom parse, ngay cả trong TH input có unusual.
9. Although practicality beats purity
Trong 1 vài TH, nên ưu tiên tính thực tế và hiệu quả hơn là follow theo lý thuyết.
Eg:
Sử dụng lib của bên thứ 3 để giải quyết vấn đề sẽ thực tế hơn là việc tự viết giải pháp từ đầu, ngay cả khi lib của bên thứ 3 có add thêm 1 it phức tạp.
10. Errors should never pass silently
Khi có lỗi xảy ra, nó nên được raise và handle in code, thay vì ignored hoặc silenced.
Eg:
Sử dụng try except else block để handle errors and print errors.
11. Unless explicitly silenced
Nên raise lỗi, trừ khi lỗi đó được chỉ định cụ thể là sẽ không làm gì.
12. In the face of ambiguity, refuse the temptation to guess
Không nên đoán/ giả định. Cố gắng làm mọi thứ thật rõ ràng.
13. There should be one - and preferably only one - obvious way to do it
Luôn có 1 cách đơn giản để làm task này với Python. - PYTHONIC way.
Eg:
Cho 1 mảng, tìm phần tử lớn nhất. Thì Python sẽ cung cấp hàm max()
14. Although that way may not be obvious at first unless you’re Dutch
Just a joke. Ý là cái principles trên kia, luôn có 1 cách ngắn gọn rõ ràng để làm tasks đó. Nhưng không phải ai cũng nhìn thấy nó ngay lập tức :v
15. Now is better than never
Write code, thay vì chờ đợi “perfect” moment.
16. Although never is often better than right now
Đôi lúc cũng nên suy nghĩ 1 chút =))
17. If the implementation is hard to explain, it’s a bad idea
Code mà khó để giải thích cho người khác, thì code này là code lởm.
18. If the implementation is easy to explain, it may be a good idea
Ngược lại với số 17
19. Namespaces are one honking great idea – let’s do more of those!
Namespace rất quan trọng trong việc tổ chức code và loại bỏ việc conflict naming giữa biến và functions.