Supponiamo che io abbia un segmento di codice per connettermi a Internet e mostrare i risultati della connessione in questo modo:
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)
}
}
il codice è lungo e viene comunemente utilizzato, ma il codice sopra riportato non richiede elementi aggiuntivi come la funzione e la classe personalizzate (HttpRequest e Alert sono entrambi forniti dal framework per impostazione predefinita) e sebbene il segmento di codice sia lungo, è semplice e non complesso (è lungo solo perché ci sono fasci di impostazioni come url, dimensione del carattere ...) e il segmento di codice presenta piccole variazioni tra le classi (ad esempio: url, dati di richiesta, casi di handle di codice di errore, handle normale casi ...)
La mia domanda è: è accettabile copiare e incollare codice lungo ma semplice invece di racchiuderli in una funzione per ridurre la dipendenza del codice?
Alert
oggetti?) Ora immagina di dover trovare ogni istanza copiata di questo codice per correggere il bug. Ora immagina che non sei tu che devi farlo, ma un pazzo assassino di ascia che sa che sei stato tu a creare tutte queste copie in primo luogo.