Предположим, у меня есть сегмент кода для подключения к Интернету и отображения результатов подключения, например:
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)
}
}
код длинный и обычно используется, но приведенный выше код не требует каких-либо дополнительных вещей, таких как пользовательские функции и классы (HttpRequest и Alert оба по умолчанию предоставляются framework), и хотя сегмент кода длинный, он простой и не сложный (он длинный только потому, что есть набор настроек, таких как url, размер шрифта ...), и сегмент кода имеет небольшие различия между классами (например: url, данные запроса, случаи с дескриптором кода ошибки, нормальный дескриптор случаи ...)
У меня вопрос: допустимо ли копировать и вставлять длинный, но простой код вместо того, чтобы заключать их в функцию, чтобы уменьшить зависимость кода?
Alert
объекты?) Теперь представьте, что вам нужно найти каждый скопированный экземпляр этого кода, чтобы исправить ошибку. А теперь представьте, что это должен делать не вы, а сумасшедший убийца топоров, который знает, что именно вы создали все эти копии в первую очередь.