İnternete bağlanmak ve bunun gibi bağlantı sonuçlarını göstermek için bir kod parçam olduğunu varsayalım:
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 uzundur ve yaygın olarak kullanılır, ancak yukarıdaki kod özel işlev ve sınıf gibi herhangi bir ekstra şey gerektirmez (HttpRequest ve Alert, her ikisi de varsayılan olarak çerçeve tarafından sağlanır) ve kod kesimi uzun olsa da, basit ve karmaşık değil (url, font boyutu ... gibi bir dizi ayar grubu olduğu için uzun sürüyor) ve kod segmentinin sınıf arasında çok az farklılıkları var (örneğin: url, istek verileri, hata kodu tanıtıcı durumları, normal tanıtıcı) vakalar ...)
Sorum şu ki, kodun bağımlılığını azaltacak bir fonksiyona sarmak yerine uzun ama basit kodu kopyalayıp yapıştırmak kabul edilebilir mi?
Alert
nesneler serbest mi?) Şimdi hatayı düzeltmek için bu kodun kopyalanan her örneğini bulmanız gerektiğini hayal edin. Şimdi, bunu yapmak zorunda olanın sen olmadığını hayal et, ama tüm bu kopyaları ilk başta senin yaptığını bilen çılgın bir balta katili.