পদ্ধতি / ফাংশন প্যারামিটার হিসাবে অনন্য আইডি বনাম অবজেক্ট ব্যবহার করার পক্ষে বা বিপক্ষে কোনও উদ্দেশ্যমূলক যুক্তি রয়েছে কি? (এবং অন্যান্য বস্তুর সদস্য?) বিশেষত স্ট্যাটিকালি টাইপ করা ভাষার প্রেক্ষাপটে (সি # / জাভা / স্কালা)
বস্তু নিজেই পেশাদার:
- আরও টাইপসেফ কল। আইডি সহ আর্গুমেন্টের ভুল অর্ডার দেওয়ার ঝুঁকি থাকে। এটি কেবলমাত্র সেই শ্রেণীর আইডি সঞ্চয় করে এমন প্রতিটি শ্রেণীর জন্য একটি 'মিনি' শ্রেণি রেখে যদিও এটি প্রশমিত করা যায়।
- অধ্যবসায় থেকে একবার পান, আবার পাওয়ার দরকার নেই
- আইডির সাহায্যে আইডি টাইপ পরিবর্তন হলে, আন্তঃ -> দীর্ঘ বলুন, তারপরে ভুল হওয়ার সম্ভাবনা সহ বোর্ড জুড়ে পরিবর্তন প্রয়োজন .. (কোর্টসি: https://softwareengineering.stackexchange.com/a/284734/145808 )
আইডি ব্যবহারের পেশাদার:
- বেশিরভাগ সময় সত্যিকারের অবজেক্টের প্রয়োজন হয় না, কেবল অনন্যই করা হয়, তাই আইডি থাকার ফলে অধ্যবসায় থেকে এটি সময় বাঁচায়।
এই কৌশলগুলির একটি মিশ্রণ, যতদূর আমি দেখতে পাচ্ছি, কেবলমাত্র উভয়েরই পক্ষে এবং উভয়ের পক্ষে ভাল হবে।
প্রদত্ত যে এটি একটি নিবিড়ভাবে সংজ্ঞায়িত সমস্যা, আমি আশা করি এর উদ্দেশ্যমূলক উত্তর রয়েছে এবং "আমার মনে হয়" বা "আমার পছন্দ" প্রকার নয় ... :-)।
সম্পাদনা: একজন মন্তব্যকারীর পরামর্শের প্রসঙ্গে- একমাত্র সীমাবদ্ধতা হ'ল স্থায়ীভাবে টাইপ করা ভাষা। অ্যাপ্লিকেশনটি একটি সাধারণ উদ্দেশ্য অ্যাপ্লিকেশন, যদিও নির্দিষ্ট ব্যবহারের পরিস্থিতিগুলির উপর ভিত্তি করে উত্তর পেতে পেরে খুশি।
সম্পাদনা: আরও কিছু প্রসঙ্গ। বলুন আমার কাছে একটি বই পরিচালনার ব্যবস্থা আছে। আমার মডেলটি হ'ল:
Book: { id: Int, isbn: String, donatedBy: Member, borrowedBy: Member }
Member: {id: Int, name: String}
Table- wishlist: { isbn: String, memberId: Int}
Table- borrows: { id: Int, memberId: Int}
Method:
isInWishList( book: Book, member: Member ) vs isInWishList( bookId: Int, memberId: Int)
handleBorrowRequest( memberId: Int, book: Book ){
//the login system doesn't actually get the entire member structure, only the member id. I don't need the full member yet. can run a query to verify that the memberId has less than max allowed books for borrowing.
}
আমি কেন পুরো সদস্য না রেখে কেবল আইডি রাখতে চাই? বলুন যখন আমি বই সম্পর্কে তথ্য পেয়েছি, কখনই এটি দান করেছে বা ধার করেছে সে সম্পর্কে আমার খুব কমই জানতে হবে। দানযুক্ত বাই এবং ধার করা ক্ষেত্রগুলি স্থাপনের জন্য তাদের সম্পূর্ণ তথ্য প্রাপ্তি একটি ওভারকিল।
অবশ্যই, এগুলি কেবল আমার পয়েন্ট। আমি নিশ্চিত যে আমি জিনিসগুলি মিস করছি তাই পক্ষে / বিপক্ষে পয়েন্টগুলি কী তা জানতে চেয়েছি।