আমি যখন দীর্ঘ প্যারামিটারের তালিকা দেখি, আমার প্রথম প্রশ্নটি এই ফাংশন বা অবজেক্টটি খুব বেশি করছে কিনা। বিবেচনা:
EverythingInTheWorld earth=new EverythingInTheWorld(firstCustomerId,
lastCustomerId,
orderNumber, productCode, lastFileUpdateDate,
employeeOfTheMonthWinnerForLastMarch,
yearMyHometownWasIncorporated, greatGrandmothersBloodType,
planetName, planetSize, percentWater, ... etc ...);
অবশ্যই এই উদাহরণটি ইচ্ছাকৃতভাবে হাস্যকর, তবে আমি উদাহরণগুলি সহ কিছুটা কম হাস্যকর উদাহরণ সহ প্রচুর বাস্তব প্রোগ্রাম দেখেছি, যেখানে এক শ্রেণিতে অনেকগুলি সবে সম্পর্কিত বা সম্পর্কিত সম্পর্কিত বিষয়গুলি ধরে রাখতে ব্যবহৃত হয়, সম্ভবত একই কলিং প্রোগ্রামের জন্য উভয় প্রয়োজন বা কারণ প্রোগ্রামার একই সাথে উভয় ভাবতে হয়েছিল। কখনও কখনও সহজ সমাধানটি হ'ল শ্রেণিকে একাধিক টুকরো টুকরো করে প্রতিটি যার নিজস্ব কাজ করে।
গ্রাহকের অর্ডার এবং গ্রাহক সম্পর্কে সাধারণ তথ্য উভয়ের মতোই যখন কোনও শ্রেণীর কাছে একাধিক যৌক্তিক বিষয়গুলি মোকাবিলা করার প্রয়োজন হয় তখন কিছুটা জটিল হয়। এই ক্ষেত্রে, গ্রাহকের জন্য একটি শ্রেণি ক্রমান করুন এবং অর্ডার দেওয়ার জন্য একটি শ্রেণি করুন, এবং তাদের একে অপরের সাথে প্রয়োজনীয় হিসাবে কথা বলতে দিন। এর পরিবর্তে:
Order order=new Order(customerName, customerAddress, customerCity,
customerState, customerZip,
orderNumber, orderType, orderDate, deliveryDate);
আমাদের থাকতে পারত:
Customer customer=new Customer(customerName, customerAddress,
customerCity, customerState, customerZip);
Order order=new Order(customer, orderNumber, orderType, orderDate, deliveryDate);
অবশ্যই আমি ফাংশনগুলিকে পছন্দ করি যা কেবল 1 বা 2 বা 3 পরামিতি নেয়, কখনও কখনও আমাদের তা গ্রহণ করতে হয়, বাস্তবিকভাবে, এই ফাংশনটি একগুচ্ছ লাগে এবং এটির সংখ্যাটি সত্যই জটিলতা তৈরি করে না। উদাহরণ স্বরূপ:
Employee employee=new Employee(employeeId, firstName, lastName,
socialSecurityNumber,
address, city, state, zip);
হ্যাঁ, এটি ক্ষেত্রগুলির একগুচ্ছ, তবে সম্ভবত আমরা তাদের সাথে যা করতে যাচ্ছি তা হ'ল তাদের একটি ডাটাবেস রেকর্ডে সংরক্ষণ করা বা সেগুলি স্ক্রিনে বা এ জাতীয় কিছুতে ফেলে দেওয়া। এখানে সত্যিই প্রচুর প্রক্রিয়াজাতকরণ হয় নি।
যখন আমার প্যারামিটারের তালিকাগুলি দীর্ঘতর হয়, আমি ক্ষেত্রগুলিকে বিভিন্ন ডেটা ধরণের দিতে পারলে আমি বেশি পছন্দ করি। আমি যখন কোনও ফাংশন দেখতে পাই তখন পছন্দ করুন:
void updateCustomer(String type, String status,
int lastOrderNumber, int pastDue, int deliveryCode, int birthYear,
int addressCode,
boolean newCustomer, boolean taxExempt, boolean creditWatch,
boolean foo, boolean bar);
এবং তারপরে আমি দেখতে পাচ্ছি এটি দিয়ে:
updateCustomer("A", "M", 42, 3, 1492, 1969, -7, true, false, false, true, false);
আমি উদ্বিগ্ন হই কলটির দিকে তাকালে, এই সমস্ত ক্রিপ্টিক নম্বর, কোড এবং পতাকাগুলি কী বোঝায় তা মোটেও পরিষ্কার নয়। এটি কেবল ত্রুটিগুলির জন্য জিজ্ঞাসা করছে। কোনও প্রোগ্রামার প্যারামিটারগুলির ক্রম সম্পর্কে সহজেই বিভ্রান্ত হয়ে পড়তে পারে এবং ঘটনাক্রমে দুটি স্যুইচ করে এবং যদি তারা একই ডেটা টাইপ হয় তবে সংকলকটি কেবল এটি গ্রহণ করবে। এর পরিবর্তে আমার একটি স্বাক্ষর থাকতে হবে যেখানে এই সমস্ত জিনিস এনাম, তাই কল "এ" এর পরিবর্তে টাইপ করুন এবং "মিথ্যা" এর পরিবর্তে ক্রেডিটওয়াচ.নো ইত্যাদির মতো জিনিসগুলিতে চলে