假设我有一段代码可以连接到互联网并显示类似的连接结果:
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),尽管代码很长,但是简单,不复杂(很长一段时间,因为有很多设置,例如url,字体大小...),并且代码段在类之间几乎没有变化(例如:url,请求数据,错误代码句柄情况,普通句柄)情况...)
我的问题是,复制并粘贴长而直接的代码,而不是将它们包装在函数中以减少代码的依赖性,这是否可以接受?
Alert
对象吗?)现在想象您必须找到该代码的每个复制实例来修复该错误。现在想象不是必须要做的,而是一个疯狂的斧头杀人犯,他知道您是首先创建所有这些副本的人。