× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Tái cấu trúc lại mã Python - Lộ diện 6 cách cấu trúc lại mã Python

10/06/2021 01:31

Một trong những lợi ích lớn nhất của lập trình bằng Python là viết mã dễ hiểu, nhưng lại vô cùng ngắn gọn. Trong lập trình với Python, việc viết mã  như vậy được gọi bằng thuật ngữ Pythonic. Tuy nhiên, nhiều lập trình viên thường bỏ qua thuật ngữ này và rơi vào thói xấu khi luôn muốn “ăn xổi” bằng cách tung ra cách tính năng được viết bằng những hàng code lộn xộn. Hiểu được nhu cầu muốn tái cấu trúc mã một cách “pythonic” hơn, T3H đã list ra dưới đây 6 cách để bạn có thể dễ dàng cấu trúc lại mã Python nhanh và hiệu quả nhất!

Tái cấu trúc lại mã Python - Lộ diện 6 cách cấu trúc lại mã Python

 Tái cấu trúc lại mã Python - Hợp nhất hàm lồng điều kiện 

Việc có quá nhiều đoạn code lồng nhau trong chương trình có thể khiến nó trở nên khó hiểu. Đặc biệt là trong Python khi chúng ta không sử dụng dấu ngoặc để phân định cấp độ lồng nhay. Ta có thể cấu trúc lại mã Python này bằng cách giảm mức độ lồng nhau bằng cách kết hợp hai hoặc nhiều điều kiện if với một điều kiện and.

if a:

  if b:

    return c

Có thể dễ dàng được rút gọn lại thành

if a and b:

  return c

Tái cấu trúc lại mã Python- Không nên lặp lại chính mình! Rút các mã lặp ra khỏi điều kiện if

Lập trình viên luôn muốn tránh mã trùng lặp nếu có thể và một trong những vị trí phổ biến nhất mà điều này hay xảy ra là trong điều kiện if. Nếu mã được lặp đi lặp lại trong các nhánh của điều kiện, nó sẽ luôn được thực thi. Để rút gọn mã, ta có thể đưa nó ra khỏi if và chỉ sử dụng nó một lần thay vì lặp đi lặp lại.

Ví dụ:

if sold > DISCOUNT_AMOUNT:

  total = sold * DISCOUNT_PRICE

  label = f'Total: {total}'

else: 

  total = sold * PRICE

  label = f'Total: {total}'

Các đoạn code  label = f'Total: {total}' đang được sử dụng một cách bình thường. Vì vậy, chúng ta chỉ có thể đẩy nó ra khỏi điều kiện hoàn toàn. Khi đó ta sẽ thấy rõ hơn các điều kiện thực sự mà đoạn code này đang thể hiện.

>>> Đọc thêm: Split trong Python - Hé lộ cách sử dụng hàm Split trong Python

Tái cấu trúc lại mã Python - Giảm thiểu vòng lặp loops - Sử dụng () thay vì loops

Chúng ta thường muốn kiểm tra xem điều kiện có giữ các yếu tố trong collection hay không. Thông thường, cách chúng ta thấy mọi người làm cách này là sử dụng vòng lặp for:

found = False 

for thing in things: 

  if thing == other_thing: 

    found = True 

    break

Sử dụng đoạn code như trên sẽ giúp chúng ta kiểm tra được mọi thứ. Nhưng có một cách ngắn gọn hơn nhiều để làm điều đó! Python được tích hợp sẵn  các hàm any()all() có thể dễ dàng kiểm tra xem một phần tử đơn lẻ có đánh giá True hoặc nếu mọi phần tử đều đánh giá True. Vì vậy, chúng ta có thể cấu trúc lại ví dụ này thành:

found = any(thing == other_thing for thing in things)

Giữ các vòng lặp của bạn sạch sẽ - Nâng các câu lệnh ra khỏi vòng lặp for / while

Các vòng lặp hầu như luôn phức tạp và khó tuân theo. Thêm thông tin bổ sung vào một vòng lặp không cần thiết mà chỉ làm cho vòng lặp phức tạp hơn. Vì vậy, đưa nó ra ngoài vòng lặp là một cơ hội tuyệt vời để làm cho mọi thứ trong code của bạn rõ ràng hơn!

for building in buildings: 

  city = 'London' 

  addresses.append(building.street_address, city)

Biến city này được gán trong vòng lặp. Nhưng, nó chỉ được đọc, không bị thay đổi gì cả - vì vậy chúng ta có thể rút nó ra khỏi vòng lặp hoàn toàn.

city = 'London' 

for building in buildings: 

  addresses.append(building.street_address, city)

>>> Đọc thêm: CGI trong Python - Giải mã các kiến thức về CGI trong lập trình với Python

Tái cấu trúc lại mã Python - Sử dụng biểu thức if thay vì câu lệnh if

Một tình huống phổ biến khác mà tất cả chúng ta sẽ giải quyết là đặt một biến thành một trong hai giá trị khác nhau tùy thuộc vào một số trạng thái. Ví dụ:

if condition: 

  x = 1 

else: 

  x = 2

Với biểu thức if, chúng ta có thể cắt nó xuống thành một dòng:

x = 1 if condition else 2

Việc tái cấu trúc lại mã Python này có một số điều kiện vì vài nhà phát triển không tìm thấy các biểu thức if rõ ràng hơn các câu lệnh if. Nhưng nói chung, nếu biểu thức if ngắn và nằm gọn trên một dòng thì đó là một cải tiến rõ ràng.

 Đơn giản hóa việc so sánh trình tự

Trước khi thực hiện thao tác với một danh sách hoặc chuỗi, chúng ta thường muốn kiểm tra xem có bất kỳ phần tử nào ở đó không. Một cách thường được thực hiện là kiểm tra xem độ dài của danh sách có lớn hơn 0 hay không:

 

if len(list_of_hats) > 0: 

  hat_to_wear = choose_hat(list_of_hats)

Nhưng Python tự động đánh giá danh sách và chuỗi để True nếu chúng có bất kỳ yếu tố nào và False nếu chúng không. Chúng ta có thể cấu trúc lại mã này như sau:

if len(list_of_hats): 

  hat_to_wear = choose_hat(list_of_hats)

 

Kết luận: 

Có rất nhiều cách khác nhau để làm cho mã Pythonic trở nên dễ dàng hơn và dễ làm việc hơn, đây chỉ là một số ví dụ phổ biến nhất mà chúng ta hay gặp. hy vọng 6 cách cấu trúc lại mã Python trên sẽ giúp cho bạn lập trình nhanh và hiệu quả hơn. Tìm hiểu thêm về các ngôn ngữ lập trình và các mẹo lập trình qua các bài viết và khóa học lập trình tại Viện công nghệ thông tin T3H bạn nhé!