আপনি আগে যেভাবে কাজটি করেছিলেন তার সাথে আমি লাঠি বলব। আপনার উদাহরণে পরামিতিগুলির সংখ্যা খুব বেশি নয়, তবে বিকল্পগুলি আরও ভয়ঙ্কর।
মানচিত্র - আপনি উল্লেখ করেছেন এমন দক্ষতার জিনিসটি এখানে রয়েছে তবে এখানে আরও বড় সমস্যা হ'ল:
কলাররা জানেন না যে আপনাকে কী পাঠাতে হবে অন্য কোনও কিছুর উল্লেখ ছাড়াই ... আপনার কি জাভাদোক রয়েছে যা ঠিক কী কী এবং
মান ব্যবহার করে ? আপনি যদি করেন (যা দুর্দান্ত) তবে প্রচুর পরামিতি থাকা কোনও সমস্যা নয়।
- বিভিন্ন যুক্তির ধরণগুলি গ্রহণ করা খুব কঠিন হয়ে যায়। আপনি হয় ইনপুট প্যারামিটারগুলিকে একটি একক প্রকারের মধ্যে সীমাবদ্ধ করতে পারেন, বা মানচিত্র <স্ট্রিং, অবজেক্ট> ব্যবহার করতে পারেন এবং সমস্ত মান castালাই করতে পারেন। উভয় বিকল্প বেশিরভাগ সময়ই ভয়ঙ্কর।
মোড়ানো বস্তু - এটি কেবল সমস্যাটি সরিয়ে দেয় যেহেতু আপনাকে প্রথমে র্যাপার বস্তুটি পূরণ করতে হবে - সরাসরি আপনার পদ্ধতির পরিবর্তে, এটি প্যারামিটার অবজেক্টের নির্মাতার কাছে হবে। সমস্যাটি সরানো উপযুক্ত কিনা তা নির্ধারণের জন্য উক্ত অবজেক্টটির পুনঃব্যবহারের উপর নির্ভর করে। এই ক্ষেত্রে:
এটি ব্যবহার করবে না: এটি শুধুমাত্র প্রথম কলটিতে একবার ব্যবহার করা হবে, তাই 1 লাইন মোকাবেলায় প্রচুর অতিরিক্ত কোড ...?
{
AnObject h = obj.callMyMethod(a, b, c, d, e, f, g);
SomeObject i = obj2.callAnotherMethod(a, b, c, h);
FinalResult j = obj3.callAFinalMethod(c, e, f, h, i);
}
এটি ব্যবহার করতে পারে: এখানে, এটি আরও কিছু করতে পারে। প্রথমত, এটি 3 পদ্ধতি কলের জন্য পরামিতিগুলি ফ্যাক্টর করতে পারে। এটি নিজেও 2 টি লাইন সম্পাদন করতে পারে ... সুতরাং এটি একটি অর্থে রাষ্ট্র পরিবর্তনশীল হয়ে ওঠে ...
{
AnObject h = obj.callMyMethod(a, b, c, d, e, f, g);
e = h.resultOfSomeTransformation();
SomeObject i = obj2.callAnotherMethod(a, b, c, d, e, f, g);
f = i.somethingElse();
FinalResult j = obj3.callAFinalMethod(a, b, c, d, e, f, g, h, i);
}
- নির্মাতা প্যাটার্ন - এটি আমার দৃষ্টিতে একটি বিরোধী-নিদর্শন। সর্বাধিক কাঙ্ক্ষিত ত্রুটি পরিচালনার পদ্ধতিটি আগে সনাক্ত করা, পরে নয়; তবে বিল্ডার প্যাটার্নের সাথে, নিখোঁজদের সাথে কলগুলি (প্রোগ্রামার এটি অন্তর্ভুক্ত করার কথা চিন্তা করে না) বাধ্যতামূলক পরামিতিগুলি রান করার সময় থেকে সংকলন সময় থেকে সরানো হয়। অবশ্যই যদি প্রোগ্রামারটি ইচ্ছাকৃতভাবে স্লটে নাল বা এগুলি রাখে, এটি রানটাইম হবে, তবে এখনও কিছু ত্রুটিগুলি ধরা প্রোগ্রামাররা তাদের কল করার পদ্ধতিটির পরামিতিগুলির নামগুলি দেখতে অস্বীকারকারী প্রোগ্রামারদের ক্যাটারিংয়ের জন্য অনেক বড় সুবিধা। আমি বিপুল সংখ্যক সাথে ডিল করার সময় এটি উপযুক্ত মনে করি al চ্ছিক প্যারামিটারগুলির এবং তারপরেও, সুবিধাটি সর্বোপরি প্রান্তিক। আমি বিল্ডার "প্যাটার্ন" এর বিপক্ষে খুব বেশি।
লোকেদের যে জিনিসটি বিবেচনা করতে ভুলে যায় তা হ'ল এই সমস্ত ক্ষেত্রে আইডিইয়ের ভূমিকা। যখন পদ্ধতিগুলির পরামিতি থাকে, আইডিইগুলি আপনার জন্য বেশিরভাগ কোড উত্পন্ন করে এবং আপনার কী সরবরাহ করতে হবে / সেট করতে হবে তা স্মরণ করিয়ে দেওয়ার জন্য আপনার লাল রেখাগুলি রয়েছে। বিকল্প 3 ব্যবহার করার সময় ... আপনি এটি পুরোপুরি হারাবেন। এটি সঠিকভাবে অর্জন করার জন্য এটি এখন প্রোগ্রামারের উপর নির্ভর করে, এবং কোডিং এবং সংকলনের সময় কোনও চিহ্ন নেই ... প্রোগ্রামারকে অবশ্যই এটি পরীক্ষা করতে হবে।
তদ্ব্যতীত, অপশন 2 এবং 3, যদি অকারণে বিস্তৃত বিস্তৃতি অবলম্বন করা হয়, তবে এটি বিপুল পরিমাণে সদৃশ কোড উত্পন্ন করার কারণে রক্ষণাবেক্ষণের ক্ষেত্রে দীর্ঘমেয়াদে নেতিবাচক প্রভাব ফেলবে। যত বেশি কোড রয়েছে ততটুকু বজায় রাখতে হবে, এটি বজায় রাখতে আরও সময় এবং অর্থ ব্যয় হবে।