Hướng dẫn câu điều kiện php
Đây là bài viết của một bác kỹ sưngười nhật chuyên về React Native và PHP (tức là vừa code được cả BE và FE, thật ngưỡng mộ!!) Mình thấy hay nên dịch lại nhé Show Là một kỹ sư, khi tạo ra một sản phẩm bạn phải quan tâm đến cả chất lượng bên trong và chất lượng bên ngoài của sản phẩm đó. Chất lượng bên trong (Internal Quaiity) và chất lượng bên ngoài (External Quality) là gì? Tham khảo ở đây để biết thêm định nghĩa về Internal Quality và External Quality nhé. Và một trong những cách (có thể nói là hiệu quả nhất) để cải thiện External Quality chính là nâng cao Internal Quality. Vì sao mình lại chọn chủ đề này? Khoảng 2~3 năm trước, mình nhớ có 1 bạn kỹ sư người Việt khi gửi source code cho phía Nhật review thì bị claim là "Mày viết câu điều kiện phân tầng nhiều quá. Đọc rối hết cả đầu". Và bác ấy ra hẳn 1 cái rule " 1 cái xử lý if else của chúng mày tối đa chỉ được 4 tầng thôi. Trên 4 tầng thì ta reject hết". Lúc ấy chưa biết gì về code nên có lỡ nói xấu sau lưng bác người Nhật người gì mà khó tính. Giờ thì hiểu chuyện rồi mọi người ạ. Vào vấn đề chính thôi. Có 2 tiêu chuẩn mà bác người Nhật dựa vào để đưa ra 7 phương pháp.
1. Guard clauseSử dụng return/continue ngay đầu function để giới hạn điều kiện xử lý Bad Example:
Good Example:
2. BooleanNhiều bạn thường hay phân nhánh điều kiện thừa khi nhận định true/false. Bad Example:
Cơ bản khi muốn lấy true/false thì chỉ cần trả về biến số với giá trị là điều kiện của true là được rồi.
3. Sử dụng arrayTiếp theo là cách sử dụng mảng để giảm phân nhánh câu điều kiện. Cách này thường tiện lợi khi bạn muốn get data từ DB để hiển thị text lên màn hình. Ví dụ:
Ví dụ ở trên cũng không hẳn là bad example, nhưng bạn có thể viết gọn nó lại thành như thế này:
Hoặc nếu bạn muốn define thêm giá trị default thay vì để null thì có thể dùng thêm toán tử liên kết.
4. Phân chia methodĐể giảm mức độ phức tạp của 1 method, bạn có thể chia nó thành nhiều method nhỏ hơn cho đỡ rối mắt. Ví dụ bạn có 1 method thế này,
Thay vì gộp chung vào 1 method như vậy, bạn có thể chia câu lệnh If thành một method riêng cho dễ đọc.
Thật ra ví dụ ở trên cũng khá khó hiểu. Nhưng nếu bạn áp dụng phương pháp này trong trường hợp "phân chia xử lý dựa vào kết quả điều kiện là true/false" thì sẽ hiệu quả hơn.
Đây không hẳn là là một phương pháp để giảm thiểu phân nhánh điều kiện, mà là cách để module hóa xử lý. Nhưng thấy hay nên đưa vào luôn. 5. Sử dụng toán tử ternarySử dụng toán tử cũng là 1 cách hay để giảm phân tầng trong câu điều kiện. Hãy cùng xem đoạn code ví dụ dưới đây: 0Nếu sử dụng toán tử ternary bạn chỉ cần viết đơn giản thế này thôi. 1Tuy nhiên, đối với nhiều người thì toán tử ternary khá khó đọc, vì thế bạn không nên sử dụng phương pháp này để viết những xử lý phức tạp. 6. Khai báo type khi implementThay vì khai báo 1 biến rồi dùng câu điều kiện để check type của nó thì bạn có thể khai báo type cho biến đó ngay từ đầu. |