मान लीजिए कि मेरे पास इंटरनेट से जुड़ने और इसके जैसे कनेक्शन परिणाम दिखाने के लिए कोड का एक खंड है:
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 दोनों डिफ़ॉल्ट रूप से फ्रेमवर्क द्वारा प्रदान किए जाते हैं), और हालांकि कोड सेगमेंट लंबा है, यह सीधा और जटिल नहीं है (यह सिर्फ इसलिए लंबा है क्योंकि इसमें यूआरएल, फॉन्ट साइज ...) जैसी सेटिंग्स के बंडल हैं, और कोड सेगमेंट में वर्ग के बीच बहुत कम बदलाव हैं (जैसे: यूआरएल, अनुरोध डेटा, त्रुटि कोड संभाल मामलों, सामान्य संभाल मामलों ...)
मेरा प्रश्न यह है कि क्या कोड की निर्भरता को कम करने के लिए उन्हें किसी फ़ंक्शन में लपेटने के बजाय लंबे लेकिन सीधे कोड को कॉपी और पेस्ट करना स्वीकार्य है?
Alert
वस्तुओं को मुक्त करता है?) अब कल्पना करें कि बग को ठीक करने के लिए आपको इस कोड की प्रत्येक प्रतिलिपि की गई आवृत्ति को ढूंढना होगा। अब कल्पना करें कि यह आप नहीं हैं जो इसे करना है, बल्कि एक पागल कुल्हाड़ी हत्यारा है जो आपको जानता है कि ये सभी प्रतियां पहले स्थान पर थीं।