Suponha que eu tenha um segmento de código para conectar-se à Internet e mostrar os resultados da conexão como ele:
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)
}
}
o código é longo e é comumente usado, mas o código acima não exige itens extras, como função e classe personalizadas (HttpRequest e Alert são fornecidos por estrutura por padrão) e, embora o segmento de código seja longo, é simples e não complexo (é longo apenas porque existem pacotes de configurações como url, tamanho da fonte ...) e o segmento de código tem pequenas variações entre as classes (por exemplo: url, dados de solicitação, casos de manipulação de código de erro, manipulação normal casos ...)
Minha pergunta é: é aceitável copiar e colar códigos longos, mas diretos, em vez de agrupá-los em uma função para reduzir a dependência do código?
Alert
objetos?) Agora imagine que você precisa encontrar todas as instâncias copiadas desse código para corrigir o erro. Agora imagine que não é você quem deve fazer isso, mas um assassino maluco que sabe que você foi quem criou todas essas cópias em primeiro lugar.