অন্যান্য সমস্ত উত্তর আপনার প্রভাষকের নিয়ম 3 রক্ষা করে।
আমাকে বলতে দাও যে আমি আপনার সাথে একমত: নিয়মটি অতিরিক্ত কাজ এবং আমি এটির পরামর্শ দেব না। এটা সত্য যে এটা তাত্ত্বিক ত্রুটি বাধা দেয় যদি আপনি সবসময় কোঁকড়া বন্ধনী যোগ করুন। অন্যদিকে, আমি বাস্তব জীবনে কখনও এই সমস্যার মুখোমুখি হইনি : অন্য উত্তরগুলির দ্বারা বোঝানো হয়েছে, কোঁকড়া বন্ধনীগুলি প্রয়োজনীয় হয়ে উঠলে আমি একবার যুক্ত করতে ভুলিনি। আপনি যদি সঠিক ইনডেন্টেশন ব্যবহার করেন তবে তা অবিলম্বে সুস্পষ্ট হয়ে যায় যে একবারে একাধিক বক্তব্য ইন্টেন্ট করা থাকলে আপনাকে কোঁকড়া বন্ধনী যুক্ত করতে হবে।
"উপাদান 10" এর উত্তর আসলে একমাত্র অনুমেয় কেসকে হাইলাইট করে যেখানে এটি সত্যই কোনও ত্রুটির দিকে নিয়ে যেতে পারে। তবে অন্যদিকে, নিয়মিত প্রকাশের মাধ্যমে কোডটি প্রতিস্থাপন করা সর্বদা যাইহোক বিপুল যত্নের সতর্ক করে।
এখন পদকটির অন্য দিকটি দেখুন: সর্বদা কোঁকড়ানো বন্ধনী ব্যবহার করার কোনও অসুবিধা আছে কি? অন্যান্য উত্তরগুলি কেবল এই বিষয়টিকে উপেক্ষা করে। কিন্তু হয় একটি অসুবিধা: এটা উল্লম্ব পর্দা স্থান অনেক লাগে, এবং এই ঘুরে আপনার কোড অপাঠ্য করতে পারবেন না কারণ এটা মানে প্রয়োজনীয় তুলনায় আরো স্ক্রল করতে হবে।
শুরুতে প্রচুর গার্ডের ধারা সহ একটি ফাংশন বিবেচনা করুন (এবং হ্যাঁ, নীচে সি সি ++ কোডটি খারাপ তবে অন্যান্য ভাষায় এটি বেশ সাধারণ পরিস্থিতি হবে):
void some_method(obj* a, obj* b)
{
if (a == nullptr)
{
throw null_ptr_error("a");
}
if (b == nullptr)
{
throw null_ptr_error("b");
}
if (a == b)
{
throw logic_error("Cannot do method on identical objects");
}
if (not a->precondition_met())
{
throw logic_error("Precondition for a not met");
}
a->do_something_with(b);
}
এটি ভয়াবহ কোড, এবং আমি দৃ strongly়ভাবে তর্ক করছি যে নিম্নলিখিতটি আরও বেশি পাঠযোগ্য:
void some_method(obj* a, obj* b)
{
if (a == nullptr)
throw null_ptr_error("a");
if (b == nullptr)
throw null_ptr_error("b");
if (a == b)
throw logic_error("Cannot do method on identical objects");
if (not a->precondition_met())
throw logic_error("Precondition for a not met");
a->do_something_with(b);
}
একইভাবে, সংক্ষিপ্ত নেস্টেড লুপগুলি কোঁকড়া বন্ধনী বাদ দেওয়ার মাধ্যমে উপকার করে:
matrix operator +(matrix const& a, matrix const& b) {
matrix c(a.w(), a.h());
for (auto i = 0; i < a.w(); ++i)
for (auto j = 0; j < a.h(); ++j)
c(i, j) = a(i, j) + b(i, j);
return c;
}
তুলনা করা:
matrix operator +(matrix const& a, matrix const& b) {
matrix c(a.w(), a.h());
for (auto i = 0; i < a.w(); ++i)
{
for (auto j = 0; j < a.h(); ++j)
{
c(i, j) = a(i, j) + b(i, j);
}
}
return c;
}
প্রথম কোডটি সংক্ষিপ্ত; দ্বিতীয় কোডটি ফুলে যায়।
এবং হ্যাঁ, পূর্ববর্তী লাইনে খোলার ব্রেস লাগিয়ে কিছুটা হলেও এটি প্রশমিত করা যেতে পারে । কিন্তু যে হবে এখনও কোন কোঁকড়া বন্ধনী ছাড়া কোড কম পাঠযোগ্য হবে।
সংক্ষেপে: অপ্রয়োজনীয় কোড লিখবেন না যা স্ক্রিনের জায়গা নেয়।