- পদ্ধতি বা ফাংশন কলগুলি যা মূল্যবোধের কিছুই করে না।
অগত্যা খারাপ না। বেস ক্লাসের পদ্ধতিগুলি প্রায়শই খালি পদ্ধতিগুলিকে কল করে যা সাবক্লাসগুলির জন্য ওভাররাইড পয়েন্ট হিসাবে বোঝানো হয়। উদাহরণ: কোকো টাচের ইউআইভিউ-র একটি -didAddSubview:পদ্ধতি রয়েছে যা ডিফল্ট সংস্করণে কিছুই না করে নথিভুক্ত। ইউআইভিউয়ের -addSubview:পদ্ধতিতে কিছু না করা -didAddSubview:সত্ত্বেও কল করতে হবে কারণ সাবক্লাসগুলি এটিকে কিছু করার জন্য প্রয়োগ করতে পারে। যে পদ্ধতিগুলি কিছু না করে এবং সেগুলির কারণগুলি অবশ্যই নথিভুক্ত করা উচিত।
যদি খালি বা অকেজো ফাংশন / পদ্ধতিটি functionতিহাসিক কারণে স্পষ্টতই থাকে, তবে এটি উত্সাহিত করা উচিত। আপনি যদি নিশ্চিত না হন তবে আপনার উত্স কোড ভান্ডারে কোডের পূর্ববর্তী সংস্করণগুলি একবার দেখুন।
- অপ্রয়োজনীয় চেকগুলি পৃথক শ্রেণীর ফাইল, বস্তু বা পদ্ধতিতে সম্পন্ন হয়েছে।
কিছু প্রসঙ্গ ছাড়া ঠিক আছে কিনা তা বলা শক্ত। যদি চেকগুলি একই কারণে স্পষ্টভাবে সম্পন্ন করা হয়, তবে এর অর্থ এই হতে পারে যে দায়িত্বের স্পষ্ট বিভাজন নেই এবং কিছু সংশোধনকারীকে আহ্বান করা হয়েছে, বিশেষত যখন উভয় চেক একই পদক্ষেপ গ্রহণের ফলস্বরূপ গৃহীত হয়। যদি উভয় চেকের ফলে প্রাপ্ত ক্রিয়াটি একই না হয় তবে শর্তটি একই হলেও দুটি চেক সম্ভবত বিভিন্ন কারণে করা হচ্ছে এবং সম্ভবত এটি ঠিক আছে।
- যদি বিবৃতিগুলি সর্বদা সত্যের কাছে মূল্যায়ন করে।
এর মধ্যে একটি বড় পার্থক্য রয়েছে:
if (1) {
// ...
}
এবং:
if (foo() == true) {
// ...
}
যেখানে foo()সর্বদা ফিরে আসে true।
মানুষ ডিবাগ করার সময় প্রথম কেসটি অনেক ঘটে। if (0) {...আপনি যখন কোনও বাগ পৃথকীকরণের চেষ্টা করছেন তখন কোডটির একটি অংশকে সাময়িকভাবে অপসারণ করার জন্য এটিকে ব্যবহার করা সহজ , এবং তারপরে কোডটি পুনরুদ্ধার 0করতে পরিবর্তন করুন 1। ifএকবার আপনি অবশ্যই, কাজ সম্পন্ন হয় সরানো উচিত, কিন্তু এটা যে পদক্ষেপ ভুলে যেতে, অথবা এক বা দুই মিস করতে আপনি বিভিন্ন জায়গায় এটি সম্পন্ন করেছি সহজ। (আপনি পরে অনুসন্ধান করতে পারেন এমন একটি মন্তব্যে এই জাতীয় শর্তসাপেক্ষ চিহ্নিত করা ভাল ধারণা)) ভবিষ্যতে যে বিভ্রান্তি সৃষ্টি হতে পারে তার একমাত্র ক্ষতি; সংকলক যদি সংকলনের সময়ে শর্তের মান নির্ধারণ করতে পারে তবে এটি পুরোপুরি সরিয়ে ফেলবে।
দ্বিতীয় ক্ষেত্রে গ্রহণযোগ্য হতে পারে। যদি foo()কোডটির বেশ কয়েকটি জায়গা থেকে প্রতিনিধিত্ব করা শর্তটি পরীক্ষা করার প্রয়োজন হয় তবে এটিকে একটি পৃথক ফাংশন বা পদ্ধতিতে ফ্যাক্টরিং করা প্রায়শই এখন সঠিক হওয়া সত্ত্বেও সঠিকভাবে foo()করা উচিত। যদি এটি অনুমেয়যোগ্য হয় যা foo()শেষ পর্যন্ত ফিরে আসতে পারে false, তবে কোনও শর্তটি কোনও পদ্ধতিতে বা কার্যক্রমে পৃথক করা কোড সেই সমস্ত জায়গাগুলি চিহ্নিত করার একটি উপায় যা কোডটি সেই শর্তের উপর নির্ভর করে। তবে এটি করার ফলে কিছুটা ঝুঁকি তৈরি হয় যে foo() == falseশর্তটি অদৃশ্য হয়ে যাবে এবং পরে সমস্যা দেখা দিতে পারে; সমাধানটি হ'ল এটি নিশ্চিত করা যে আপনি ইউনিট পরীক্ষা যুক্ত করেছেন যা কেসটি স্পষ্টভাবে পরীক্ষা করে false।
- থ্রেডস যা স্পিন বন্ধ করে এবং কিছুই নোট করে না।
এটি ইতিহাসের নিদর্শনগুলির মতো শোনায় এবং কোনও কোড পর্যালোচনা চলাকালীন বা সফ্টওয়্যারটির পর্যায়ক্রমিক প্রোফাইলের মাধ্যমে সনাক্ত করা যেতে পারে এমন কিছু। আমি মনে করি এটি ইচ্ছাকৃতভাবে তৈরি করা যেতে পারে তবে আমার ধারণা করতে খুব কষ্ট হয়েছে যে কেউ আসলে উদ্দেশ্য করে এটি করবে।
if (false) {...}কোড মন্তব্য করার জন্য ব্লক দুর্দান্ত! </