インターネットに接続し、そのような接続結果を表示するコードのセグメントがあるとします:
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
オブジェクトを解放しますか?)バグを修正するために、このコードのコピーされたすべてのインスタンスを見つける必要があると想像してください。さて、それをしなければならないのはあなたではなく、そもそもこれらすべてのコピーを作成したのはあなただと知っている狂ったcrazy殺人者だと想像してください。