Tôi đang tạo trình quản lý lỗi cho API mà tôi đang thực hiện. Ý tưởng là nó cung cấp một cửa hàng mã lỗi có thể được trả lại từ API, đảm bảo rằng cùng một lỗi trong các cuộc gọi khác nhau được xử lý theo cùng một cách (ví dụ: giá trị bắt buộc bị thiếu trong yêu cầu).Tránh các số ma thuật mà không tạo phụ thuộc
cách tiếp cận ban đầu của tôi là dọc theo dòng:
$this->_errorManager->setError(ErrorCodes::REQUIRED_FIELD);
Tuy nhiên điều này tạo ra một sự phụ thuộc vào các lớp mã lỗi bất cứ nơi nào tôi muốn thiết lập một lỗi.
Cách khác là:
$this->_errorManager->setError(100);
Nhưng bây giờ tôi đã có một số ngồi ở giữa mã của tôi có nghĩa là không có gì.
Trong khi tôi có thể nghĩ về các giải pháp cho vấn đề cụ thể này, sẽ có những tình huống khác mà tôi muốn sử dụng 'enum' và tôi không thể nghĩ ra giải pháp không kết hợp chặt chẽ các lớp.
Có cách nào tốt hơn để thực hiện điều này hay cách tiếp cận khác mà tôi có thể thực hiện để xóa số ma thuật? Hoặc là một cái gì đó khớp nối chặt chẽ tôi chỉ phải chấp nhận và xem xét trên cơ sở từng trường hợp?
Tôi sẽ không thực sự gọi đây là "khớp nối", vì 'ErrorCodes' không có bất kỳ hành vi * nào *. Đó là thực hành tốt, và chắc chắn không xứng đáng với ý nghĩa tiêu cực của thuật ngữ. Bạn có thể nghĩ về nó như là "một thực thể hợp lý được thực hiện như hai lớp vật lý" chứ không phải là "hai thực thể hợp lý cùng nhau". – Jon