สมมติว่าฉันมีส่วนของรหัสเพื่อเชื่อมต่อกับอินเทอร์เน็ตและแสดงผลลัพธ์การเชื่อมต่อเช่น:
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
วัตถุเป็นอิสระหรือไม่) ตอนนี้จินตนาการว่าคุณต้องค้นหาทุกตัวอย่างที่ถูกคัดลอกของรหัสนี้เพื่อแก้ไขข้อบกพร่อง ตอนนี้คิดว่าไม่ใช่คุณที่ต้องทำ แต่เป็นฆาตกรขวานที่รู้ว่าคุณคือคนที่สร้างสำเนาทั้งหมดนี้ตั้งแต่แรก