এটি অন্যান্য উত্তরগুলির দ্বারা বেশ কভার করা হয়েছে, তবে "এটি একটি অভিব্যক্তি" সত্যিই ব্যাখ্যা করে না যে এটি এত দরকারী কেন ...
সি ++ এবং সি # এর মতো ভাষাগুলিতে আপনি স্থানীয় পঠনক্ষেত্র ক্ষেত্রগুলি (একটি পদ্ধতির অংশের মধ্যে) সংজ্ঞায়িত করতে পারেন। প্রচলিত যদি / তবে বিবৃতি দিয়ে এটি সম্ভব হয় না কারণ কেবলমাত্র এক বিবৃতিতে কেবল পাঠযোগ্য ক্ষেত্রের মান নির্ধারণ করতে হয়:
readonly int speed = (shiftKeyDown) ? 10 : 1;
যেমনটি হয় না:
readonly int speed;
if (shifKeyDown)
speed = 10; // error - can't assign to a readonly
else
speed = 1; // error
একইভাবে আপনি অন্যান্য কোডে একটি স্তরীয় এক্সপ্রেশন এম্বেড করতে পারেন। উত্স কোডটি আরও কমপ্যাক্ট করার পাশাপাশি (এবং কিছু ক্ষেত্রে ফলস্বরূপ আরও পাঠযোগ্য) এটি উত্পন্ন মেশিন কোডটিকে আরও কমপ্যাক্ট এবং দক্ষ করে তুলতে পারে:
MoveCar((shiftKeyDown) ? 10 : 1);
... একই পদ্ধতিতে দু'বার কল করার চেয়ে কম কোড তৈরি করতে পারে:
if (shiftKeyDown)
MoveCar(10);
else
MoveCar(1);
অবশ্যই এটি একটি আরও সুবিধাজনক এবং সংক্ষিপ্ত ফর্ম (কম টাইপিং, কম পুনরাবৃত্তি, এবং যদি আপনার / অন্যথায় কোডের কিছু অংশের নকল করতে হয় তবে ত্রুটির সম্ভাবনা হ্রাস করতে পারে)। পরিষ্কার "সাধারণ প্যাটার্ন" ক্ষেত্রে এর মতো:
object thing = (reference == null) ? null : reference.Thing;
... লম্বা বাতাসযুক্ত / অন্য সমতুল্য হওয়ার চেয়ে পড়ার / পার্স করা / বোঝার (একবার আপনি এটি ব্যবহার করার পরে) কেবল দ্রুততর হয়, সুতরাং এটি আপনাকে কোড 'দ্রুত' ছাঁটাইতে সহায়তা করতে পারে।
অবশ্যই, এটি দরকারী কারণ এর অর্থ এই নয় যে এটি প্রতিটি ক্ষেত্রে ব্যবহার করা সবচেয়ে ভাল জিনিস । আমি কেবল কোডের সংক্ষিপ্ত বিটগুলির জন্য এটি ব্যবহার করার পরামর্শ দিচ্ছি যেখানে অর্থটি স্পষ্ট (বা আরও স্পষ্ট করা হয়েছে) ব্যবহার করে ?:
- আপনি যদি এটি আরও জটিল কোডে ব্যবহার করেন, বা একে অপরের মধ্যে নীড় টার্নারি অপারেটরগুলি কোডকে মারাত্মকভাবে পড়তে অসুবিধে করতে পারে ।