আমি এটি করার জন্যও একটি শালীন উপায় খুঁজতে লড়াই করে যাচ্ছি, সুতরাং আমি কেবল একটি ধারণা নিয়ে এসেছি (রূপালী বুলেট নয়, যেহেতু এটি মূলত স্বাদের বিষয়)।
if bool(condition1 and
condition2 and
...
conditionN):
foo()
bar()
আমি অন্যদের সাথে দেখেছি এর তুলনায় এই সমাধানটিতে আমি কিছু গুণাবলীর সন্ধান পেয়েছি, যেমন, আপনি ঠিক অতিরিক্ত একটি অতিরিক্ত 4 স্পেস ইনডেন্টেশন (বুল) পান, যা সমস্ত শর্তকে উল্লম্বভাবে সীমাবদ্ধ করে দেয়, এবং যদি বিবৃতিটির শৃঙ্খলে প্রবেশ করতে পারে একটি পরিষ্কার (ish) উপায়। এটি বুলিয়ান অপারেটরগুলির শর্ট সার্কিট মূল্যায়নের সুবিধাগুলিও রাখে, তবে অবশ্যই কোনও ফাংশন কলের ওভারহেড যুক্ত করে যা মূলত কিছুই করে না। আপনি তর্ক করতে পারেন (যথাযথভাবে) যে কোনও যুক্তি তার যুক্তি ফিরিয়ে আনতে এখানে বুলের পরিবর্তে ব্যবহার করা যেতে পারে তবে আমি যেমন বলেছিলাম এটি কেবল একটি ধারণা এবং এটি শেষ পর্যন্ত স্বাদের বিষয়।
যথেষ্ট মজাদার, আমি যখন এটি লিখছিলাম এবং "সমস্যা" সম্পর্কে ভাবছিলাম তখন আমি আরও একটি ধারণা নিয়ে এসেছি , যা একটি ফাংশন কলের ওভারহেড সরিয়ে দেয়। আমরা অতিরিক্ত জোড়া বন্ধনী ব্যবহার করে একটি জটিল অবস্থার মধ্যে প্রবেশ করতে যাচ্ছি তা কেন বোঝাবেন না? যদি, আরও 2 বলুন, if স্টেটমেন্টের বডিটির সাথে সম্পর্কিত সাব-কন্ডিশনের একটি দুর্দান্ত 2 স্পেস ইন্ডেন্ট দিতে। উদাহরণ:
if (((foo and
bar and
frob and
ninja_bear))):
do_stuff()
আমি এরকম একটি কারণ কারণ আপনি যখন এটি দেখুন, তখনই আপনার মাথায় একটি ঘণ্টা বেজে উঠল "আরে, এখানে একটি জটিল জিনিস চলছে!" । হ্যাঁ, আমি জানি যে বন্ধনীগুলি পাঠযোগ্যতার পক্ষে সহায়তা করে না, তবে এই শর্তগুলি খুব কমই উপস্থিত হওয়া উচিত, এবং যখন তারা প্রদর্শিত হয়, আপনি যেভাবেই হোক না কেন তাদের যত্নহীনভাবে বন্ধ করতে এবং পড়তে হবে (কারণ তারা জটিল )।
যাইহোক, আরও দুটি প্রস্তাব যা আমি এখানে দেখিনি। আশা করি এটি কাউকে সাহায্য করবে :)
pep8
pep8