Załóżmy, że mam segment kodu do połączenia z Internetem i pokazania wyników takiego połączenia:
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)
}
}
kod jest długi i jest powszechnie używany, ale powyższy kod nie wymaga żadnych dodatkowych rzeczy, takich jak niestandardowa funkcja i klasa (HttpRequest i Alert są domyślnie dostarczane przez framework), i chociaż segment kodu jest długi, to jest proste i nieskomplikowane (jest długie tylko dlatego, że istnieją pakiety ustawień, takie jak adres URL, rozmiar czcionki ...), a segment kodu ma niewielkie różnice między klasami (np .: adres URL, dane żądania, przypadki obsługi kodu błędu, normalny uchwyt skrzynie ...)
Moje pytanie brzmi: czy dopuszczalne jest kopiowanie i wklejanie długiego, ale prostego kodu zamiast zawijania ich w funkcji w celu zmniejszenia zależności kodu?
Alert
obiekty?) Teraz wyobraź sobie, że musisz znaleźć każdą skopiowaną instancję tego kodu, aby naprawić błąd. Teraz wyobraź sobie, że to nie ty musisz to zrobić, ale szalony morderca siekierą, który wie, że to ty stworzyłeś wszystkie te kopie.