Giả sử tôi có một đoạn mã để kết nối với internet và hiển thị kết quả kết nối như thế này:
HttpRequest* httpRequest=new HttpRequest();
httpRequest->setUrl("(some domain .com)");
httpRequest->setRequestType(HttpRequest::Type::POST);
httpRequest->setRequestData("(something like name=?&age=30&...)");
httpRequest->setResponseCallback([=](HttpClient* client, HttpResponse* response){
string responseString=response->getResponseDataString();
if(response->getErrorCode()!=200){
if(response->getErrorCode()==404){
Alert* alert=new Alert();
alert->setFontSize(30);
alert->setFontColor(255,255,255);
alert->setPosition(Screen.MIDDLE);
alert->show("Connection Error","Not Found");
}else if((some other different cases)){
(some other alert)
}else
Alert* alert=new Alert();
alert->setFontSize(30);
alert->setPosition(Screen.MIDDLE);
alert->setFontColor(255,255,255);
alert->show("Connection Error","unknown error");
}
}else{
(other handle methods depend on different URL)
}
}
mã này dài và được sử dụng phổ biến, nhưng mã ở trên không yêu cầu thêm bất kỳ thứ gì như chức năng và lớp tùy chỉnh (cả HTTPRequest và Alert đều được cung cấp theo khung theo mặc định) và mặc dù đoạn mã dài, nhưng nó là Đơn giản và không phức tạp (lâu nay chỉ vì có các gói cài đặt như url, cỡ chữ ...) và phân đoạn mã có ít biến thể giữa các lớp (ví dụ: url, dữ liệu yêu cầu, trường hợp xử lý mã lỗi, xử lý thông thường các trường hợp...)
Câu hỏi của tôi là, có thể chấp nhận sao chép và dán mã dài nhưng đơn giản thay vì gói chúng trong một hàm để giảm sự phụ thuộc của mã không?
Alert
đối tượng không?) Bây giờ hãy tưởng tượng bạn phải tìm mọi phiên bản được sao chép của mã này để sửa lỗi. Bây giờ hãy tưởng tượng không phải bạn là người phải làm điều đó, mà là một kẻ giết người rìu điên rồ, người biết bạn là người đã tạo ra tất cả những bản sao này ngay từ đầu.