Hầu hết những mùi này chỉ là gợi ý về điều gì đó có thể không ổn. Do đó, bản thân chúng không bắt buộc phải sửa… (Tuy nhiên, bạn nên xem xét nó.)
Bạn có thể tìm thấy tất cả các mùi mã trước đó (Phần i - XXXI) tại đây .
Chúng tôi học nếu/khác vào ngày lập trình đầu tiên của chúng tôi. Sau đó, chúng tôi quên đi những người khác.
TL; DR: Hãy rõ ràng. Ngay cả với Khác.
Sau đó, chúng tôi loại bỏ IF và sử dụng tính đa hình.
function carBrandImplicit(model) { if (model === 'A4') { return 'audi'; } return 'Mercedes-Benz'; }
function carBrandExplicit(model) { if (model === 'A4') { return 'audi'; } if (model === 'AMG') { return 'Mercedes-Benz'; } // Fail Fast throw new Exception('Model not found); }
Loại mùi này gây ra rất nhiều tranh cãi và ghét bỏ của công chúng.
Mã Mùi 36 - Câu lệnh switch/case/else if/else/if
Làm thế nào để thoát khỏi IF khó chịu mãi mãi
Vấn đề lớn nhất đối với các nhóm phần mềm là đảm bảo mọi người hiểu những gì người khác đang làm.
Martin Fowler
Hôm nay, tôi mong đợi một khoản thanh toán trong ví của mình. Số dư là 0. Tôi hoảng sợ.
TL; DR: Null không phải là 0. Lỗi không phải là 0. chỉ 0 là 0.
""" Below code is automatically generated by code-davinci-002 on GTP3 Codex 1. check balance with blockchain 2. If blockchain is unreachable show 0 as the balance """ import requests import json def get_balance(address): url = "//blockchain.info/q/addressbalance/" + address response = requests.get(url) if response.status_code == 200: return response.text else: return 0
""" Below code is automatically generated by code-davinci-002 on GTP3 Codex 1. check balance with blockchain 2. If blockchain is unreachable throw an error """ import requests import json def get_balance(address): url = "//blockchain.info/q/addressbalance/" + address response = requests.get(url) if response.status_code == 200: return response.text else: raise BlockchainNotReachableError("Error reaching blockchain")
Chúng tôi có thể tìm thấy các mẫu khi một ngoại lệ hoặc mã trả về được đưa ra và che dấu bằng 0.
Mã Mùi 139 - Mã Doanh Nghiệp Trong Giao Diện Người Dùng
Mã Mùi 73 - Những Trường Hợp Ngoại Lệ
Mùi mã chỉ là ý kiến của tôi.
Lời chỉ trích thực sự của tôi với Null là nó mang lại tất cả sự đau đớn một cách không cần thiết khi phải chọn chạy chương trình của bạn nhanh mà không kiểm tra hay chạy chương trình chậm khi kiểm tra.
Tony Hoare (Nhà phát minh Null)
Báo giá tuyệt vời về kỹ thuật phần mềm
Bạn gán một giá trị cho một biến và sử dụng nó nhưng không bao giờ thay đổi nó.
TL; DR: Hãy tuyên bố về tính đột biến.
Tái cấu trúc 003 - Trích xuất hằng số
Đôi khi chúng tôi đoán rằng một giá trị có thể thay đổi với MAPPER .
Điều này cũng sẽ tránh được Magic Constants .
<?php function configureUser() { $password = '123456'; // Setting a password on a variable is another vulnerability // And Code Smell $user = new User($password); // Notice Variable doesn't change }
<?php define("USER_PASSWORD", '123456') function configureUser() { $user = new User(USER_PASSWORD); } // or function configureUser() { $user = new User(userPassword()); } function userPassword() : string { return '123456'; } // Case is an oversimplification as usual
Chúng ta phải thử thách bản thân và cấu trúc lại khi phạm vi biến rõ ràng và chúng ta tìm hiểu thêm về các thuộc tính và khả năng thay đổi của nó.
Mã Mùi 116 - Các Biến Được Khai Báo Với 'var'
Mã Mùi 02 - Hằng Số Và Những Con Số Kỳ Diệu
Mùi mã chỉ là ý kiến của tôi.
Một hệ thống phức tạp hoạt động được luôn luôn phát triển từ một hệ thống đơn giản hoạt động.
John Gall
Sự phát triển nghiêm túc được thực hiện bởi nhiều người khác nhau. Chúng ta phải bắt đầu đồng ý.
TL; DR: Không trộn lẫn các chuyển đổi trường hợp khác nhau
{ "id": 2, "userId": 666, "accountNumber": "12345-12345-12345", "UPDATED_AT": "2023-01-07T02:23:41.305Z", "created_at": "2020-01-07T02:23:41.305Z", "deleted at": "2023-01-07T02:23:41.305Z" }
{ "id": 2, "userId": 666, "accountNumber": "12345-12345-12345", "updatedAt": "2023-01-07T02:23:41.305Z", "createdAt": "2020-01-07T02:23:41.305Z", "deletedAt": "2023-01-07T02:23:41.305Z" // This doesn't mean THIS standard is the right one }
Chúng tôi có thể nói với những người nói dối của mình về các tiêu chuẩn đặt tên rộng rãi của công ty chúng tôi và thực thi chúng.
Tên chính xác là gì - Phần I Nhiệm vụ
Mùi mã chỉ là ý kiến của tôi.
Nếu bạn có quá nhiều trường hợp đặc biệt, bạn đang làm sai.
Craig Zerouni
Maxint là một số rất tốt cho một ID không hợp lệ. Chúng tôi sẽ không bao giờ đạt được nó.
TL; DR: Đừng ghép ID thực với ID không hợp lệ. Trên thực tế: Tránh ID.
Sau đó, chúng tôi đã phát minh ra Sai lầm tỷ đô .
#include "stdio.h" #include "stdlib.h" #include "stdbool.h" #define INVALID_VALUE 999 int main(void) { int id = get_value(); if (id==INVALID_VALUE) { return EXIT_FAILURE; // id is a flag and also a valid domain value } return id; } int get_value() { // something bad happened return INVALID_VALUE; } // returns EXIT_FAILURE (1)
#include "stdio.h" #include "stdlib.h" #include "stdbool.h" // No INVALID_VALUE defined int main(void) { int id; id = get_value(); if (!id) { return EXIT_FAILURE; // Sadly, C Programming Language has no exceptions } return id; } get_value() { // something bad happened return false; } // returns EXIT_FAILURE (1)
Y2K22 - Sai Lầm Làm Chúng Ta Xấu hổ
Mùi mã chỉ là ý kiến của tôi.
Lỗi ẩn nấp trong các góc và tụ tập tại các ranh giới.
Boris Béizer