Làm cách nào để cải thiện mã Python của tôi?

Thành thật mà nói, bạn đã bao giờ mở một kịch bản, dành 30 giây để cố hiểu nó, rồi bỏ đi vì không hiểu chuyện gì đang xảy ra chưa?

Bây giờ hãy trung thực một cách tàn nhẫn, bạn có phải là tác giả ban đầu của kịch bản đó không?

Mỗi ngày trong các nhóm trên khắp thế giới, các thành viên trong nhóm đang tạo lại mã đã tồn tại

Có RẤT NHIỀU bài viết phác thảo “Các phương pháp mã hóa Python tốt nhất” được nhắm mục tiêu tới các phương pháp thực hành ứng dụng/dự án Python. Nhưng những điều này thường yêu cầu bạn dành thời gian đầu tư vào các kỹ năng phải mất nhiều năm để thành thạo

Bài viết này sẽ phác thảo 8 điều đơn giản mà những người không phải là nhà phát triển có thể làm để cải thiện ngay lập tức các tập lệnh Python

lời khuyên của chúng tôi là

1. Phân biệt tập lệnh của bạn với ứng dụng của bạn

Trong Python, không có ranh giới rõ ràng giữa Tập lệnh và Ứng dụng, nhưng việc xác định những khác biệt đó trong nội bộ là rất quan trọng. Các tập lệnh dễ dàng hơn, đơn giản hơn và rẻ hơn để tạo và duy trì so với các ứng dụng. Nếu không xác định sự khác biệt bên trong, bạn sẽ gặp rủi ro khi sử dụng nhiều nỗ lực của ứng dụng cho một tập lệnh đơn giản

Theo nguyên tắc chung, các tập lệnh được tạo bởi các lập trình viên dành cho các lập trình viên. Các kịch bản thường khó về mặt kỹ thuật và cần được đào tạo để hiểu. Tuy nhiên, điều đó không có nghĩa là các tập lệnh hoàn thành các thao tác khó về mặt kỹ thuật. Các tập lệnh có thể làm một việc đơn giản như mở một cổng hoặc đặt máy tính ở chế độ ngủ.   

Các ứng dụng được tạo bởi các nhà phát triển cho người dùng cuối và thường đi kèm với một số loại giao diện đồ họa. Các ứng dụng thường phải tuân theo các quy trình kinh doanh và kỹ thuật, đồng thời thường trải qua quá trình kiểm tra, QA, đánh giá nghiêm ngặt và nghiêm ngặt hơn nhiều. trước khi chúng có sẵn để sử dụng

Sự khác biệt lớn nhất là người sử dụng chúng và tâm lý đằng sau việc tạo ra chúng

2. Tách tập lệnh của bạn lên

Cách đầu tiên để cải thiện các phương pháp mã hóa của bạn ngay lập tức là ngừng sử dụng kỹ thuật quá mức đối với các tập lệnh của bạn. Nếu có lúc nào đó bạn nghĩ “Ồ, đây có thể là hai kịch bản riêng biệt” thì có lẽ đó phải là hai kịch bản riêng biệt. Bạn càng thêm nhiều "tính năng" vào tập lệnh, thì nó càng có nhiều rủi ro khi thay đổi - và nó càng trở nên gần gũi với ứng dụng hơn.

Cải thiện mã Python của bạn không phải là tạo một đoạn mã không có lỗi hoặc tối ưu hóa thứ gì đó đến giới hạn của nó. Đó là về việc viết một kịch bản mà tất cả các thành viên trong nhóm của bạn có thể hiểu, chạy và sửa đổi. Việc áp dụng tâm lý này cho phép các thành viên trong nhóm [hôm nay và ngày mai] dễ dàng thay đổi và phát triển cùng với nhu cầu của nhóm và tổ chức của bạn

Bạn có thể là tác giả ban đầu của một kịch bản, nhưng bạn không sở hữu nó. Công ty của bạn sở hữu các tập lệnh của bạn và công ty của bạn cần phải là người lưu giữ chúng. Tôi sẽ nói lại một lần nữa cho những người ở phía sau, bạn không thể là người duy nhất chịu trách nhiệm hiểu cách thức/tại sao bạn tạo tập lệnh của mình và cách thức/thời điểm sử dụng chúng

3. Giảm thiểu mức sử dụng gói

Đặc biệt đối với các thành viên cấp dưới trong nhóm của bạn, các tập lệnh cần giúp họ bắt kịp tốc độ của bạn chứ không cản trở tiến trình của họ. Dành ít thời gian hơn để cố gắng hiểu một kịch bản có nghĩa là dành nhiều thời gian hơn cho việc học hỏi và phát triển mang tính xây dựng

Hiện có rất nhiều gói PyPI tuyệt vời, nhưng bạn càng sử dụng nhiều thì người khác sẽ càng mất nhiều thời gian để tìm hiểu và hiểu tập lệnh của bạn

Làm thế nào để bạn giữ cho mọi thứ đơn giản? . Các gói như Colorama và JMESPath rất tiện lợi và bổ sung chức năng cho Python, nhưng ngày càng ít có khả năng các kỹ sư mới vào nghề biết cách chúng hoạt động

Lời khuyên của chúng tôi? . Hãy ghi nhớ, tài liệu gói càng tốt thì càng dễ đào tạo.   

Khi sử dụng thư viện của bên thứ ba, quản lý môi trường [i. e. gói và phiên bản nào được cài đặt] trở nên quan trọng. Rất nhiều gói có nghĩa là rất nhiều quản lý môi trường. Mặc dù có thể đóng gói tất cả các tập lệnh và phần phụ thuộc và triển khai nó, nhưng điều đó thực sự rất gần với một ứng dụng và có nguy cơ trở nên phức tạp nhanh chóng

4. Sử dụng kiểm soát phiên bản

Nếu bạn chưa theo dõi nó, nhóm của bạn cần áp dụng kiểm soát phiên bản cho tập lệnh của bạn

Điều này không có nghĩa là bạn cần chuyển sang kiểm soát nguồn dựa trên Git. Hiện có nhiều công cụ đơn giản hơn và có thể bạn đã sử dụng chúng. SharePoint, OneDrive và Dropbox đều là những tùy chọn tốt để bắt đầu. Chúng tốt hơn nhiều so với ổ đĩa mạng được sao lưu theo thời gian.

Kiểm soát phiên bản có thể được sử dụng để khôi phục các thay đổi nếu xảy ra sự cố và ai đó thực hiện chỉnh sửa không tốt. Nó cũng lưu trữ kiểm tra xem ai đã thực hiện các thay đổi và khi nào, và nếu bạn sử dụng các công cụ cơ bản này, nó sẽ xảy ra mỗi khi tệp được lưu

5. Sử dụng tiêu đề bình luận

Tập lệnh là tài sản của công ty, vì vậy chúng cần được duy trì càng lâu càng tốt. Nếu bạn liên tục dành thời gian viết các kịch bản mới, bạn cũng có thể không sử dụng tự động hóa và vẫn làm mọi thứ bằng tay

Viết những nhận xét tuyệt vời chắc chắn giúp duy trì tập lệnh, nhưng cũng giống như viết mã tuyệt vời, có thể mất cả đời để thành thạo. Có một cách nhanh hơn, đơn giản hơn để tạo một kịch bản hay hơn. tiêu đề bình luận. Đây là một ví dụ nhanh về nội dung của tiêu đề nhận xét

Tập lệnh này tận dụng RESTCONF để cập nhật địa chỉ IP trên giao diện.

Đối số.
   tên_giao diện [chuỗi]. tên của giao diện cần cập nhật
   ip_address [chuỗi]. địa chỉ IP mới
   ip_netmask [chuỗi]. mặt nạ mạng IP mới

Ví dụ.
   Đặt IP cho hai bộ điều hợp sau khi đặt biến môi trường
   cho tên người dùng/mật khẩu

   $ export XEUSER=antprash
   $ export XEPASS=ssp0i0y10
   $ py restconf_setip.py GigabitEthernet1 172.23.4.28 255.255.251.0
   $ py restconf_setip. py GigabitEthernet2 172. 23. 4. 29 255. 255. 251. 0

Mặc dù không có tiêu chuẩn thực sự cho những thứ này trông như thế nào, nhưng ở mức TỐI THIỂU TUYỆT ĐỐI, bạn cần bao gồm mô tả và đối số để chạy tập lệnh. Các ví dụ cũng thực sự hữu ích

Bạn không cần phải đi quá đà. chỉ cần bắt đầu bằng cách viết một hoặc hai câu mô tả mục đích của kịch bản của bạn. Sau đó thêm phần này dưới dạng nhận xét vào tiêu đề nhận xét. Chỉ cần cố gắng ghi nhớ khán giả của bạn và những gì họ muốn và cần để hiểu đúng và sử dụng kịch bản của bạn

  • người chạy. những người đọc kịch bản trước khi họ chạy nó
  • Biên tập viên. những người chịu trách nhiệm điều chỉnh và duy trì kịch bản của bạn

Hầu hết các tập lệnh tồn tại lâu hơn những người tạo ra chúng trong một tổ chức và một tập lệnh tuyệt vời là tập lệnh có thể thay đổi và rõ ràng cách thay đổi nó

 

6. Sử dụng Nhận xét kiểu Docstring

Thay vì sử dụng "#" cho tất cả các bình luận của bạn, bạn nên chuyển sang docstrings [i. e. """] cho tiêu đề bình luận, chức năng và định nghĩa. Đó là một thay đổi nhỏ nhưng bạn và các thành viên trong nhóm tương lai của bạn sẽ đánh giá cao sau này

Lợi ích rõ ràng nhất ngay lập tức là bạn nhận được nhận xét nhiều dòng và không cần bắt đầu mỗi dòng bằng ký hiệu "#". Nhưng quan trọng hơn, các chuỗi tài liệu cung cấp một cách rất dễ dàng và thuận tiện để liên kết tài liệu với các mô-đun, hàm, lớp và phương thức Python. Và trên hết, khi được định dạng đúng, người dùng có thể dễ dàng truy cập trợ giúp nội bộ bằng cách gọi hàm `help`.

Ví dụ: đây là nhận xét "tiêu chuẩn" trông như thế nào

# Tập lệnh này tận dụng RESTCONF để cập nhật địa chỉ IP trên giao diện.

# Đối số.

#   tên_giao diện [chuỗi]. tên của giao diện cần cập nhật
#   ip_address [chuỗi]. địa chỉ IP mới
#   ip_netmask [chuỗi]. mặt nạ mạng IP mới

Và đây là phiên bản docstring

"""
Tập lệnh này tận dụng RESTCONF để cập nhật địa chỉ IP trên giao diện.
 
 Args.

   tên_giao diện [chuỗi]. tên của giao diện cần cập nhật
   ip_address [chuỗi]. địa chỉ IP mới
   ip_netmask [chuỗi]. mặt nạ mạng IP mới
"""

Và đó là nó

Như một phần thưởng bổ sung, nếu bạn định dạng nhận xét chuỗi tài liệu của mình theo các quy ước phổ biến như Hướng dẫn về kiểu dáng của Google dành cho tiêu đề chuỗi tài liệu , các công cụ khác như Otter có thể . Điều này có nghĩa là bạn có thể sử dụng các nhận xét đó để tạo GUI được cá nhân hóa, được tạo tự động.

7. Sử dụng ghi nhật ký không in

Mặc dù bạn có thể tìm thấy một số tranh luận trực tuyến, nhưng chúng tôi tin chắc rằng các nhóm nên chọn ghi nhật ký thay vì in

Tính năng ghi nhật ký cho phép người dùng dễ dàng xem cuộc gọi ghi nhật ký được thực hiện từ đâu và khi nào và bạn có thể phân loại ghi nhật ký của mình dựa trên bốn mức độ nghiêm trọng. In không cung cấp bất kỳ chức năng bổ sung hoặc khả năng sử dụng nào ngoài việc đưa các từ lên màn hình. Đó là một thay đổi nhỏ đối với cách bạn viết mã, nhưng nó là yếu tố thay đổi cuộc chơi cho cơ sở mã Python của bạn

print ["An error occurred. Missing Input"]
-- vs. --
logging.error ["Missing Input"]

Giống như sử dụng print[], logging[] sẽ giúp bạn khắc phục sự cố tập lệnh. Nhưng không giống như print[], việc ghi nhật ký sẽ hiển thị cho bạn một cuộc gọi ghi nhật ký được thực hiện từ đâu và khi nào. Việc ghi nhật ký cho phép bạn kiểm soát mức độ nghiêm trọng nào sẽ hiển thị trên bảng điều khiển, mức độ nghiêm trọng nào sẽ được lưu trong tệp văn bản hoặc thực hiện cả hai.

Các mô-đun Python khác cũng sử dụng ghi nhật ký và bạn có thể phân loại dựa trên việc thông báo đến từ mô-đun, tập lệnh của bạn hay mô-đun của bên thứ ba

Không phải là bạn sẽ bắt đầu thực hiện bất kỳ điều gì trong số đó ngay lập tức, nhưng khi bạn có nhiều kinh nghiệm và nâng cao hơn trong các phương pháp viết tập lệnh của mình, bạn sẽ đánh giá cao rằng các tập lệnh cũ của bạn đã được sử dụng để ghi nhật ký.

Một phần thưởng bổ sung của việc ghi nhật ký là các công cụ quản lý Cơ sở hạ tầng bên ngoài, như Otter, có thể đọc và thu thập các luồng đầu ra khác nhau từ Python để tạo các bản ghi vĩnh viễn có thể được sử dụng để phân tích các tập lệnh hiệu quả hơn thay vì chỉ cuộn qua hàng trăm dòng đầu ra

8. Cải thiện việc xử lý lỗi của bạn

Viết mã kịch bản của bạn với câu thần chú này trong tâm trí. “Mọi thứ tôi viết sẽ thất bại. ” Thất bại có thể đơn giản như việc không thể tìm thấy “những chú rái cá dễ thương. jpg” hoặc điều gì đó nghiêm trọng hơn một chút, chẳng hạn như cài đặt không áp dụng chính xác, dẫn đến một loạt máy chủ bị định cấu hình sai

Python hỗ trợ một câu lệnh Try/Exception đơn giản nhưng mạnh mẽ sẽ cố gắng thực thi một lệnh và bắt bất kỳ lỗi nào xảy ra. Ví dụ

Lợi ích lớn nhất bạn sẽ nhận được khi sử dụng tính năng này ngay hôm nay là khả năng ghi lại thông tin bổ sung về lỗi hoặc thậm chí tiếp tục nếu sự cố có thể khắc phục được

Một cải tiến khác mà bạn có thể bắt đầu ngay hôm nay là. Nó hoạt động gần giống như in một số tin nhắn và sau đó sử dụng khi có sự cố

print ["Error: The .BAML file had an unexpected format."]
sys.exit[-1]

-- vs --

raise Exception[
"The .BAML file had an unexpected format."]

Tuy nhiên, câu lệnh raise sẽ giúp xử lý lỗi dễ dàng hơn bằng try/except - đặc biệt nếu bạn đang có một cuộc gọi tập lệnh . Nó cũng làm cho tập lệnh dễ đọc hơn nhiều bằng cách xác định rõ ràng điều gì sẽ xảy ra trong các tình huống cụ thể.

Cải thiện chất lượng mã thông qua thực tiễn tốt hơn

Mã đơn giản là mã tốt hơn. Bắt đầu đơn giản hóa mã của bạn bằng cách chia nhỏ các tập lệnh hiện tại của bạn và thực hành nhận xét của bạn. Thực sự cải thiện và đại tu cơ sở mã Python của bạn sẽ mất nhiều năm để thành công, nhưng bằng cách sử dụng 8 thủ thuật đơn giản này, bạn có thể ngay lập tức cải thiện các tập lệnh Python của mình.  

Những thủ thuật này chỉ là bước khởi đầu để trở thành bậc thầy Python. Để tìm hiểu thêm, hãy đăng ký hướng dẫn của chúng tôi

Chủ Đề