params
কীওয়ার্ড সহ একটি বিপদ হ'ল, যদি পদ্ধতিতে কলগুলি কোড করার পরে থাকে ,
- কেউ দুর্ঘটনাক্রমে / ইচ্ছাকৃতভাবে পদ্ধতি স্বাক্ষর থেকে এক / আরও প্রয়োজনীয় প্যারামিটারগুলি সরিয়ে দেয় এবং
- স্বাক্ষর পরিবর্তনের আগে প্যারামিটারের সাথে সাথে এক / আরও প্রয়োজনীয় প্যারামিটারগুলি প্যারামিটারের সাথে
params
টাইপ-সামঞ্জস্যপূর্ণ ছিল params
,
এই কলগুলি প্রয়োজনীয় পরামিতিগুলি alচ্ছিক প্যারামিটার হিসাবে বিবেচিত হওয়ার পূর্বে উদ্দেশ্যে করা এক / একাধিক এক্সপ্রেশন দিয়ে সংকলন চালিয়ে যাবে params
। আমি কেবল params
এটির মধ্যে সবচেয়ে খারাপ অবস্থাতেই ছুটেছি : প্যারামিটারটি টাইপের ছিল object[]
।
এই উল্লেখযোগ্য কারণ ডেভেলপারদের কম্পাইলার অনেক, আরো অনেক সাধারণ দৃশ্যকল্প যেখানে পরামিতি সব একটি পদ্ধতি থেকে সরিয়ে ফেলা হয় তাদের কবজি slapping করতে ব্যবহৃত হয় প্রয়োজনীয় পরামিতি (প্যারামিটার # প্রত্যাশিত কারণ পরিবর্তন হবে)।
আমার জন্য, এটি শর্টকাটের মূল্য নয়। (Type)[]
ছাড়া params
প্যারামিটার অনন্ত # 0 সঙ্গে ইচ্ছার কাজ অগ্রাহ্য করা ছাড়াই। সবচেয়ে খারাপ ক্ষেত্রে হ'ল আপনাকে যেসব , new (Type) [] {}
কল প্রয়োগ হয় না সেখানে একটি যুক্ত করতে হবে।
বিটিডব্লিউ, ইমো, সবচেয়ে নিরাপদ (এবং সর্বাধিক পঠনযোগ্য অনুশীলন) হ'ল:
নামযুক্ত পরামিতি মাধ্যমে পাস (যা আমরা এখন কি করতে পারি এমনকি 2 C # ~ দশক আমরা ভিবি মধ্যে পারা পর; p) (কারণ:
1.1। প্যারামিটার অর্ডার, সামঞ্জস্যপূর্ণ-টাইপ এবং / অথবা কল কোড করার পরে গণনা পরিবর্তনের পরে প্যারামিটারগুলিতে অনিচ্ছাকৃত মানগুলি প্রতিরোধের গ্যারান্টি দেয় এটিই একমাত্র উপায় ,
1.2। এটি প্যারামিটার অর্থ পরিবর্তনের পরে সেই সম্ভাবনাগুলি হ্রাস করে, কারণ নতুন অর্থের প্রতিফলিত সম্ভবত নতুন সনাক্তকারী নামটি যে মানটি দেওয়া হচ্ছে তার ঠিক পাশেই,
1.3। এটি প্যারামিটারের জন্য কী প্রকাশ করা হচ্ছে তা দেখার জন্য কমাগুলি গণনা করা এবং কল থেকে স্বাক্ষরে ফিরে এবং পিছনে ঝাঁপ দাও এবং
1.3.1। যাইহোক, একা এই কারণটি প্রচুর পরিমাণে হওয়া উচিত (ডিআরওয়াই নীতিমালার ঘন ঘন ত্রুটি-প্রবণতা লঙ্ঘন এড়ানোর পরিপ্রেক্ষিতে কেবল কোডটি পড়তে না উল্লেখ করে এটি পরিবর্তনও করা উচিত নয়), তবে এই কারণগুলি যদি এক / থেকে থাকে তবে তা তাত্পর্যপূর্ণভাবে আরও গুরুত্বপূর্ণ হতে পারে আরও প্রকাশিত হয়েছে যে তাদের মধ্যে কমা রয়েছে, অর্থাত্ মাল্টি-ডাইমেনশনাল অ্যারে রেফ বা মাল্টি-প্যারামিটার ফাংশন কল। যে ক্ষেত্রে, আপনি এমনকি ব্যবহার করতে পারেনি (যা এমনকি যদি আপনি এখনও একটি অতিরিক্ত পদক্ষেপ যুক্ত হবে পারে প্রতি প্যারামিটার প্রতি আপনার সম্পাদকে পদ্ধতি কল) একটি সকল সংঘটন খুঁজুন একটি নির্বাচন বৈশিষ্ট্য আপনার জন্য কমা দ্বারা কাউন্টিং স্বয়ংক্রিয়।
1.4। যদি আপনাকে অবশ্যই ptionচ্ছিক প্যারামিটারগুলি ব্যবহার করতে হয় ( params
বা না), এটি আপনাকে একটি নির্দিষ্ট ptionচ্ছিক প্যারামিটারটি পাস করার জন্য কলগুলি অনুসন্ধান করার অনুমতি দেয় (এবং সম্ভবত, সম্ভবত সম্ভবত ডিফল্ট মান না হওয়ার সম্ভাবনা রয়েছে),
(দ্রষ্টব্য: 1.2 কারণসমূহ এবং 1.3। প্রারম্ভিক কলগুলি কোডিং করার সময়ও কলগুলি কখন পড়তে হবে এবং / বা পরিবর্তন করতে হবে তা উল্লেখ না করার পরেও ত্রুটির সম্ভাবনা কমিয়ে আনা এবং হ্রাস করতে পারে))
এবং
আরও ভাল পাঠযোগ্যতার জন্য এক - খেলোয়াড় - পার - লাইন
2.1। এটি কম বিশৃঙ্খল, এবং
2.2। এটি ডান এবং পিছনে বামে স্ক্রোল করা এড়ানো যায় না (এবং এটি করার জন্য পের - লাইন, যেহেতু বেশিরভাগ প্রাণীরা একাধিক লাইনের বাম অংশটি পড়তে পারে না, ডানদিকে স্ক্রোল করে এবং ডান অংশটি পড়তে পারে)।
2.3। এটি "সেরা অনুশীলন" এর সাথে সামঞ্জস্যপূর্ণ আমরা ইতিমধ্যে অ্যাসাইনমেন্ট স্টেটমেন্টগুলির জন্য বিকাশ করেছি, কারণ প্রতিটি পরামিতি উত্তীর্ণ হয়ে থাকে একটি অ্যাসাইনমেন্ট স্টেটমেন্ট (স্থানীয় ভেরিয়েবলের জন্য একটি মান বা রেফারেন্স নির্ধারণ করে)। কোডিং স্টাইলে যারা সর্বশেষ "সেরা অনুশীলন" অনুসরণ করেন তারা ঠিক একইভাবে প্রতি লাইনে একাধিক অ্যাসাইনমেন্ট স্টেটমেন্টগুলি কোডিংয়ের স্বপ্ন দেখেননি , সম্ভবত আমাদের উচিত হবে না (এবং একবার "সেরা অনুশীলন" আমার "প্রতিভা" পর্যন্ত ধরা দেয় না; পি) ) পরামিতিগুলি পাস করার সময় এটি করুন।
দ্রষ্টব্য :
ভেরিয়েবলগুলিতে পাস করা যাদের নামগুলি প্যারামিটারগুলি আয়না করে 'কখন সাহায্য করে না:
1.1। আপনি লিটারাল কনস্ট্যান্টগুলিতে (যেমন একটি সাধারণ 0/1, মিথ্যা / সত্য বা নাল যা "" সেরা অনুশীলনগুলি "" এমনকি আপনার জন্য নামযুক্ত কনস্ট্যান্ট ব্যবহারের প্রয়োজন হতে পারে না এবং তাদের উদ্দেশ্যটি মেথডের নাম থেকে সহজেই অনুমান করা যায় না can't ),
1.2। পদ্ধতিটি কলারের তুলনায় উল্লেখযোগ্যভাবে নিম্ন-স্তরের / আরও জেনেরিক যে আপনি চান না / আপনার ভেরিয়েবলগুলির নাম একই / পরামিতিগুলির অনুরূপ (বা বিপরীতে) রাখতে সক্ষম হবেন, বা
1.3। আপনি স্বাক্ষরে প্যারামিটারগুলি পুনরায় অর্ডার / প্রতিস্থাপন করছেন যা পূর্ববর্তী কলগুলি এখনও সংকলন করতে পারে কারণ প্রকারগুলি এখনও সামঞ্জস্যপূর্ণ হতে পারে।
ভিএস এর মতো অটো-র্যাপ বৈশিষ্ট্য থাকা আমার উপরের যে 8 টি কারণ দিয়েছে তার মধ্যে কেবল একটি (# 2.2) মুছে ফেলা হয়। ভিএস 2015 এর শেষের দিকে, এটি অটো-ইনডেন্ট হয়নি (!? সত্যই, এমএস?!) যা তীব্রতা বাড়িয়ে তোলে # 2.1।
ভিএস-এর একটি বিকল্প থাকা উচিত যা নামকৃত প্যারামিটারগুলির সাথে মেথড কল স্নিপেট তৈরি করে (অবশ্যই প্রতিটি লাইনে একটি; পি) এবং একটি সংকলক বিকল্প যার জন্য নামকরণকৃত প্যারামিটারগুলি প্রয়োজন (ভিবিতে অপশন স্পষ্টরূপে অনুরূপ যা, বিটিডব্লিউ, একবারের প্রয়োজনটি ভেবেছিল সমানভাবে আপত্তিজনক তবে এখন "'সেরা অনুশীলনগুলি" "দ্বারা প্রিল প্রয়োজন required আসলে, " আমার ফিরেদিন ";), 1991 সালে আমার কেরিয়ারের ঠিক কয়েক মাস আগে, আমি নামকরণকৃত প্যারামিটারগুলির সাথে একটি ভাষা ব্যবহার করার আগে (বা এমনকি দেখেওছি), আমার কাছে অ্যান্টি-ভেস্টেল /" কেবল আপনি কিউজ করতে পারেন, মানে এই নয় যে আপনার উচিত " / অন্ধভাবে "রোস্টের প্রান্তগুলি কাটা" অর্থে এটির অনুকরণ করার পক্ষে যথেষ্ট নয় (ইন-লাইন মন্তব্য ব্যবহার করে) কাউকে এমনটি না দেখায় Para "নাম্বার প্যারামিটারগুলি ব্যবহার করতে হবে না (পাশাপাশি অন্যান্য সিনট্যাক্স যা" "মূল্যবান" সংরক্ষণ করে " সোর্স কোড কীস্ট্রোক) পাঞ্চ কার্ডের যুগের একটি প্রতীক, যখন এর বেশিরভাগ বাক্য গঠন শুরু হয়েছিল modern আধুনিক হার্ডওয়্যার এবং আইডিই এবং আরও জটিল সফ্টওয়্যার সহ এর জন্য কোনও অজুহাত নেই যেখানে পাঠযোগ্যতা অনেক বেশি, অনেক, অনেকবেশি গুরুত্বপূর্ণ. "কোড লেখার চেয়ে অনেক বেশি সময় পঠিত হয়"। যতক্ষণ না আপনি অ-অটো-আপডেট হওয়া কোডটির নকল করছেন না, ততক্ষণ কেউ (এমনকি নিজেও) পরে এটি পড়ার চেষ্টা করলে সংরক্ষণ করা প্রতিটি কীস্ট্রোকের তাত্পর্যপূর্ণভাবে আরও বেশি ব্যয় হতে পারে।