কেএন্ডআর এবং ওয়ান ট্রু ব্রেস স্টাইল (1 টিবিএস) শৈলীর মধ্যে পার্থক্য কী?


48

আমি ইনডেন্ট স্টাইলগুলিতে উইকিপিডিয়া নিবন্ধটি পড়েছি , তবে আমি এখনও বুঝতে পারি না। কেএন্ডআর এবং 1 টিবিএসের মধ্যে পার্থক্য কী?


আমি কোথাও পড়েছি যে কেএন্ডআর-তে স্টাইলটি স্থান বিবেচনার দ্বারা পরিচালিত হয়েছিল - অর্থাৎ কোডটি বইটিতে উল্লম্ব স্থানটি হ্রাস করতে।
ক্রিসএফ

@ ক্রিসফ এটি স্ক্রিনে উল্লম্ব স্থান হ্রাস করে। যখন আমাদের 80 টি কর্ণ এক্স 25 লাইন টার্মিনাল ছিল এটি মূল্য ছিল!
মার্টিন বেকেট

7
অ্যাপলের "গেটো ব্যর্থ" একটি গুরুতর বাগের একটি দুর্দান্ত উদাহরণ যা অবশ্যই 1 টিবিএস ব্যবহার করে প্রতিরোধ করা যেতে পারে: imperialviolet.org/2014/02/22/applebug.html

4
কোনও একক লাইনে স্টেটমেন্ট রেখে, প্রুফরিডিং, ডেড কোড চেকার ব্যবহার করে বা ইনডেন্ট-সংবেদনশীল ভাষা ব্যবহার করে অ্যাপলের বাগটিও প্রতিরোধ করা যেতে পারে।
সিইস টিমারম্যান

1
@ চিজটিম্মারম্যান, .. বা পরীক্ষা হচ্ছে ...
thoni56

উত্তর:


76

কে & R ও ওয়ান মুক্ত বন্ধনী স্টাইল (1TBS) মধ্যে সবচেয়ে বড় পার্থক্য হল যে 1TBS, সব হয় if, else, while, এবং forএমনকি যদি তারা প্রয়োজন হয় না, বিবৃতি খোলার এবং বন্ধ ধনুর্বন্ধনী আছে। উদ্দেশ্যটি হ'ল নতুন বিবৃতি .োকানো সহজ করা এবং সেগুলি কীভাবে গোষ্ঠীভুক্ত করা হবে তা ঠিক জানা।

উদাহরণ হিসাবে:

কে & R এর:

int i;
for (i = 0; i < 10; i++)
  printf("Hi.");

1TBS:

int i;
for (i = 0; i < 10; i++) {
  printf("Hi");
}

20

কে অ্যান্ড আর এর মতো:

if (x) 
    a();
else {
    b();
    c();
}

এটি হ'ল: প্রয়োজনীয় যেখানেই প্রয়োজন ব্রেসগুলি ব্যবহার করা হয়, নিয়মিত স্টেটমেন্ট হিসাবে একই লাইনে ব্রেস খোলার, নিজের লাইনে বন্ধনী বন্ধ করে দেওয়া হয়।

"একটি সত্য ব্রেস স্টাইল" (1 টিবিএস বা ওটিবিএস) একটি একক নিয়ন্ত্রিত বিবৃতিটিকে বন্ধনী দ্বারা আবদ্ধ করে যৌগিক বিবৃতিতে রূপান্তরিত করে:

if (x) {
    a();
} else {
    b();
    c();
}

অলম্যান স্টাইলটি 1 টিবিএসের চেয়ে কিছুটা এগিয়ে যায় এবং খোলার ব্রেসকে নিজেই একটি লাইনে রেখে খাড়া স্পেসিংকে বাধ্য করে:

if (x) 
{
    a();
}
else 
{
    b();
    c();
}

সম্পাদনা:

আমি এখনও ঠিক কীভাবে "অভিমানী" হিসাবে এটি বলার যোগ্যতা অর্জন করার চেষ্টা করছি "ডেনিস রিচি একজন অত্যন্ত স্মার্ট লোক যিনি কেবল একটি ভাল ভাষা আবিষ্কার করেননি, তবে এর জন্য সত্যই একটি ভাল ব্রেস স্টাইলও নিয়ে এসেছিলেন।"

যাঁরা দৃ ins়ভাবে দাবি করেন যে এটি যাই হোক না কেন অহঙ্কারী, তাদের জন্য এখানে একটি সামান্য চ্যালেঞ্জ: সোর্সফোর্জে, গিথুব (ইত্যাদি) এ যান এবং কে অ্যান্ড আর ব্রেস শৈলী ব্যবহার করে প্রকল্পগুলি বেছে নিন। তাদের বাগ এবং প্রতিশ্রুতি রেকর্ডে যান এবং তাদের ব্যবহার করা বন্ধনী শৈলীর কারণে ঘটে এমন একটি একক বাগ খোঁজার চেষ্টা করুন ।

আপনি যদি এত বেশি কাজ করতে না চান তবে একটি সাধারণ পরিসংখ্যান বিশ্লেষণ করার চেষ্টা করুন। বিভিন্ন ধনুর্বন্ধনী শৈলী ব্যবহার করে প্রকল্পগুলির তুলনা করুন, এবং দেখুন যে আপনি "দ্বিপদশীলতা" প্রদর্শন করতে পারেন - বাগ সংখ্যার (তীব্রতা ইত্যাদি) মধ্যে একটি পরিসংখ্যানগতভাবে উল্লেখযোগ্য পার্থক্য যা বন্ধনী শৈলীর সাথে সম্পর্কিত।

আমি এই দু'টি কয়েক বছর আগেই করেছি এবং একটিও বাগ খুঁজে পেলাম না যা আমি ব্র্যাকিং শৈলীর সাথে দায়ী করতে পারি এবং না উভয়ের মধ্যে একটি পরিসংখ্যানগতভাবে উল্লেখযোগ্য পারস্পরিক যোগাযোগের কাছে পৌঁছতে পারি anything গড়ে, সেই কে & R এর সম্বন্ধ ব্যবহার সামান্য কম বাগ ছিল, কিন্তু পার্থক্য ছিল অনেক খুব পরিসংখ্যানগত ভাবে উল্লেখযোগ্য হিসেবে যোগ্য হয়ে ছোট।

যেহেতু এটি উত্থাপিত হয়েছিল, আমি মাল্টি-স্টেটমেন্ট ম্যাক্রোগুলির সাথে পরিস্থিতি সম্পর্কে মন্তব্য করব। একটি ম্যাক্রো যাতে একাধিক বিবৃতি অন্তর্ভুক্ত থাকে তবে সেগুলি ব্রেসগুলি দিয়ে ঘিরে না, একটি বাগ রয়েছে। আমার কাজটি সেই কোডটি লেখা নয় যা এই বাগটি জুড়ে .েকে দেয়। বিপরীতে, আমার কাজটি হ'ল bu বাগটি যত তাড়াতাড়ি সম্ভব খুঁজে বের করা এবং মুছে ফেলা।

কোডগুলি এর ব্যাক কভার করার আশায় লিখিতকরণ যাতে তারা নির্বিঘ্ন থাকে এবং অ-স্থির থাকে তা সরল মন্দ। আপনি যদি পছন্দ করেন তবে অহঙ্কারীকে কল করুন, তবে আমি এটিকে আলোচনা সাপেক্ষে খুব কাছে দেখতে পাচ্ছি না। বাগগুলি খুঁজে পাওয়া উচিত এবং স্থির করা উচিত, আবৃত নয়। যত বেশি অস্তিত্ব রয়েছে, ততই সম্ভবত তারা ঠিক করা আরও বেশি কঠিন এবং ব্যয়বহুল হয়ে উঠবে।


1
ঝগড়া ও শব্দ করতে করতে সমস্ত মন্তব্য মুছে ফেলা হয়েছে। আপনার যদি বৈধ পয়েন্ট থাকে তবে উত্তর হিসাবে পোস্ট করুন। আপনি যদি আলোচনা চান তবে এটিকে চ্যাটে নিয়ে যান
ক্রিসএফ

8
1tbs একটি} এবং অন্য এক লাইনে রাখে না? বিস্ময়কর সুন্দর প্রতিসাম্য সংরক্ষণ করার সময় উল্লম্ব স্থান সংরক্ষণ করা মূল বিষয়!
মার্টিন বেকেট

4
@ জেরি - ভাল কোনও পবিত্র যুদ্ধের জন্য কয়েকটি বিদ্যা দরকার ;-)
মার্টিন বেকেট

6
যেতে ব্যর্থ; যেতে ব্যর্থ;
জ্যামি পেট

9
হ্যাঁ @ জ্যামিপেটের মন্তব্যটি অনুসরণ করতে এটি হ'ল অ্যাপল এসএসএল বাগ যা এখানে বিশ্লেষণ করা হয়েছে । এর ifপরে ইন্টেন্টেড স্টেটমেন্ট সহ একটি বিবৃতি রয়েছে, যাতে দেখা যায় যে তারা উভয় শর্তাধীন কার্যকর করা হয়েছে। কিন্তু কোন ধনুর্বন্ধনী আছে! দ্বিতীয় বিবৃতিটি সত্যই ছাড়িয়ে গেছে ifএবং সর্বদা কার্যকর করা হবে, এভাবে বাগটি।
কলিন ডি বেনেট

9

কেআর ব্রেস শৈলীর সাথে সাধারণভাবে সমস্যাটি কোড রিফ্যাক্টরিংয়ের হয়। কোডটির চারপাশে যখন চলমান কোডটি সহজেই মিস করা যায় যে কোনও কিছুর চারপাশে কোনও ধনুর্বন্ধনী নেই, এটি ভুলভাবে সরান (বা এটি শর্তাধীন কার্যকর করা হয়েছে এমন ভেবে কিছুটা সরান) এবং তারপরে হয় কোনও কিছু যখন কাজ করে না তখন আপনার মাথাটি স্ক্র্যাচ করুন, বা দুর্ভাগ্যজনক হন এবং এতে থাকুন একটি কোড অঞ্চলটি ভালভাবে পরীক্ষা করা হয়নি এবং একটি কালো টুপি ব্যবহার করার উপায় খুঁজে না পাওয়া পর্যন্ত বাগটি নজরে না যায়। আপনি যদি এটি লক্ষ্য করেন তবে সহজেই ডিবাগারে একটি দ্রুত ভ্রমণ সমস্যার সন্ধান করতে পারে তবে আপনি যদি তা না পান ...


2
এই নিছক পুনরাবৃত্তি বিন্দু তৈরি এবং পূর্বে উত্তর ব্যাখ্যা বলে মনে হয়
মশা

1
আমি মনে করি না যে অন্যান্য উত্তরগুলি দৈনন্দিন কোডে সমস্যাটি কীভাবে উত্থিত হয় ঠিক ঠিক ব্যাখ্যা করে। ওটিবি কী তা তারা ব্যাখ্যা করে তবে এটি কেন গুরুত্বপূর্ণ তা নয়। মন্তব্যগুলি এটিকে সম্বোধন করতে পারে, তবে উত্তরগুলি নয়।
জাস্টিন সোয়ানহার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.