আমার কি স্বাভাবিক পথ অনুসরণ করা উচিত বা তাড়াতাড়ি ব্যর্থ হওয়া উচিত?


73

কোড সম্পূর্ণ বই থেকে নিম্নলিখিত উদ্ধৃতিটি আসে:

"স্বাভাবিক কেস পরে না করে ifবরং রাখুন else"

যার অর্থ হ'ল মানক পথ থেকে ব্যতিক্রম / বিচ্যুতিগুলি elseক্ষেত্রে রাখা উচিত ।

তবে প্র্যাগমেটিক প্রোগ্রামার আমাদের "দ্রুত ক্রাশ" করতে শেখায় (পৃষ্ঠা 120)।

আমার কোন নিয়ম অনুসরণ করা উচিত?


15
@ সদৃশ না করুন
শে

16
দু'টি পারস্পরিক একচেটিয়া নয়, কোনও দ্বিধা নেই।
20:14

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

14
প্রথম দিকে ক্রাশ, শক্ত ক্রাশ! যদি আপনার ifকোনও শাখা ফিরে আসে তবে প্রথমে এটি ব্যবহার করুন। এবং elseবাকি কোডটি এড়িয়ে চলুন , প্রাক-শর্তগুলি ব্যর্থ হলে আপনি ইতিমধ্যে ফিরে এসেছেন। কোড পড়া সহজ, কম ইনডেন্টেশন ...
কোডএঞ্জ্রি

5
এটি কি কেবলমাত্র যিনি ভাবেন এটির পাঠযোগ্যতার সাথে কোন সম্পর্ক নেই, তবে পরিবর্তে সম্ভবত স্থির শাখার পূর্বাভাসের জন্য অনুকূলকরণের জন্য কেবল একটি বিভ্রান্ত প্রচেষ্টা ছিল?
মেহরদাদ

উত্তর:


189

"ক্র্যাশ তাড়াতাড়ি" কোনও পাঠ্য কোডের কোডটি পাঠ্যের আগে আসে তা নয়। এটি আপনাকে প্রক্রিয়াজাতকরণের প্রাথমিকতম ধাপে ত্রুটিগুলি সনাক্ত করতে বলে , যাতে আপনি অজান্তে ইতিমধ্যে ত্রুটিযুক্ত অবস্থার উপর ভিত্তি করে সিদ্ধান্ত এবং গণনা না করেন।

একটি if/ elseনির্মাণে, কেবল একটি ব্লক কার্যকর করা হয়, তাই উভয়কেই "পূর্ববর্তী" বা "পরে" পদক্ষেপের কথা বলা যায় না। কীভাবে তাদের অর্ডার করবেন তা পঠনযোগ্যতার প্রশ্ন এবং "শীঘ্রই ব্যর্থ" সিদ্ধান্তে প্রবেশ করে না।


2
আপনার সাধারণ বিষয়টি দুর্দান্ত তবে আমি একটি সমস্যা দেখছি। আপনার যদি (যদি / অন্যথায় / অন্যথায়) থাকে তবে "if" বিবৃতিতে অভিব্যক্তি প্রকাশের পরে "অন্যথায় যদি" ​​এর অভিব্যক্তি মূল্যায়ন করা হয়। গুরুত্বপূর্ণ বিট, আপনি উল্লেখ হিসাবে, প্রক্রিয়াকরণের ধারণাগত ইউনিট বনাম পঠনযোগ্যতা। শুধুমাত্র একটি কোড ব্লক কার্যকর করা হয়েছে তবে একাধিক শর্ত মূল্যায়ন করা যেতে পারে।
এনসাইটার

7
@ এনসাইটার, গ্র্যানুলারালিটির সেই স্তরটি সাধারণত "ব্যর্থতার সাথে প্রথম" শব্দটি ব্যবহৃত হয় তখন যা অভিপ্রায় করা হয় তার চেয়ে অনেক ছোট।
রিওয়ালক

2
@ এনকায়েটার এটি প্রোগ্রামিংয়ের শিল্প। একাধিক চেকের মুখোমুখি হওয়ার সময়, ধারণাটি হ'ল প্রথমে সত্য হওয়ার সম্ভাব্য একটিটিকে চেষ্টা করা। যাইহোক, তথ্যটি নকশা সময় নয় তবে অপ্টিমাইজেশনের পর্যায়ে জানা থাকতে পারে তবে অকালীন অপ্টিমাইজেশান থেকে সাবধান থাকুন।
বিপিউউ

সুষ্ঠু মন্তব্য। এটি একটি ভাল উত্তর ছিল এবং আমি কেবল ভবিষ্যতের রেফারেন্সের জন্য এটি আরও উন্নত করতে সহায়তা করার চেষ্টা করতে চেয়েছিলাম
এনকেইটার

জাভাস্ক্রিপ্ট, পাইথন, পারল, পিএইচপি, ব্যাশ ইত্যাদির মতো স্ক্রিপ্টিং ভাষাগুলি ব্যতিক্রম কারণ এগুলি রৈখিকভাবে ব্যাখ্যা করা হয়েছে। ছোট if/elseকনস্ট্রাক্টসে এটি সম্ভবত কিছু যায় আসে না। তবে লুপে ডাকা বা প্রতিটি ব্লকে অনেক স্টেটমেন্ট সহ বলা হয় প্রথমে সবচেয়ে সাধারণ অবস্থার সাথে দ্রুত চলতে পারে।
ডকসালভেজার 21

116

যদি আপনার elseবিবৃতিতে কেবলমাত্র ব্যর্থতার কোড থাকে তবে সম্ভবত, এটি থাকা উচিত নয়।

এটি করার পরিবর্তে:

if file.exists() :
  if validate(file) :
    # do stuff with file...
  else :
    throw foodAtMummy
else :
  throw toysOutOfPram

এটা কর

if not file.exists() :
  throw toysOutOfPram

if not validate(file) :
  throw foodAtMummy

# do stuff with file...

ত্রুটি পরীক্ষা করা অন্তর্ভুক্ত করার জন্য আপনি আপনার কোডটি গভীরভাবে বাসাতে চান না।

এবং, যেমন প্রত্যেকে ইতিমধ্যে জানিয়েছে, পরামর্শের দুটি অংশ বিপরীত নয়। একটি হ'ল এক্সিকিউশন অর্ডার সম্পর্কে , অন্যটি কোড অর্ডার সম্পর্কে ।


4
স্পষ্টভাবে উল্লেখযোগ্য যে ব্লকের পরে ব্লকটিতে সাধারণ প্রবাহ স্থাপন করার পরামর্শ দেওয়া হয় এবং ব্লকটিতে ifব্যতিক্রমী প্রবাহের পরে elseপ্রয়োগ না হয় তবে আপনার যদি তা না থাকে else! বেশিরভাগ কোডিং শৈলীতে ত্রুটির শর্তাদি পরিচালনা করার জন্য এর মতো গার্ড স্টেটমেন্টগুলি পছন্দসই ফর্ম।
জুলাই

+1 এটি একটি ভাল পয়েন্ট এবং ত্রুটি শর্তের সাথে কীভাবে স্টাফ অর্ডার করতে হবে তার প্রকৃত প্রশ্নের উত্তরে আসলে কিছু উত্তর দেয়।
ashes999

অবশ্যই অনেক পরিষ্কার এবং বজায় রাখা সহজ। এইভাবে আমি এটি করতে পছন্দ করি।
জন

27

আপনি উভয় অনুসরণ করা উচিত।

"তাড়াতাড়ি ক্রাশ" / প্রাথমিক পরামর্শ ব্যর্থ হওয়ার অর্থ হ'ল যত তাড়াতাড়ি সম্ভব ত্রুটিগুলির জন্য আপনার ইনপুটগুলি পরীক্ষা করা উচিত।
উদাহরণস্বরূপ, যদি আপনার পদ্ধতিটি এমন কোনও আকার বা গণনা গ্রহণ করে যা ইতিবাচক (> 0) বলে মনে করা হয়, তবে ব্যর্থ প্রাথমিক পরামর্শের অর্থ আপনি অ্যালগরিদম তৈরির জন্য অ্যালগরিদম অপেক্ষা না করে বরং আপনার পদ্ধতির শুরুতে সেই অবস্থার জন্য পরীক্ষা করেন that ফলাফল নেই।

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


1
আপনি শাখার পূর্বাভাস অংশটি বিস্তারিতভাবে বলতে পারেন? আমি কোডটি প্রত্যাশা করবো না যা কোডের চেয়ে দ্রুত চালিত হওয়ার ক্ষেত্রে যদি অন্য ক্ষেত্রে যাওয়ার সম্ভাবনা বেশি থাকে তবে ক্ষেত্রে যদি যাওয়ার সম্ভাবনা বেশি থাকে। মানে, এটিই শাখার পূর্বাভাসের পুরো পয়েন্ট, তাই না?
রোমান রেইনার

@ ব্যবহারকারী 136712: আধুনিক (দ্রুত) প্রসেসরগুলিতে, পূর্ববর্তী নির্দেশাবলী প্রক্রিয়াটি শেষ করার আগে নির্দেশাবলী আনা হয় fet শর্ত পূর্বাভাস শর্তসাপেক্ষ শাখা চালনার সময় প্রাপ্ত নির্দেশনাগুলি কার্যকর করার জন্য সঠিক নির্দেশাবলীর সম্ভাবনা বাড়াতে ব্যবহৃত হয়।
বার্ট ভ্যান ইনজেন শেেনা

2
আমি জানি শাখার পূর্বাভাস কী। আমি যদি আপনার পোস্টটি সঠিকভাবে পড়ে থাকি তবে আপনি বলবেন যে শাখার পূর্বাভাসের if(cond){/*more likely code*/}else{/*less likely code*/}চেয়ে দ্রুত চলে if(!cond){/*less likely code*/}else{/*more likely code*/}। আমি ভাবব যে শাখার পূর্বাভাস ifবা elseবিবৃতি উভয়ের পক্ষপাতদুষ্ট নয় এবং কেবল ইতিহাসকে বিবেচনায় নেয়। সুতরাং যদি elseবেশি হওয়ার সম্ভাবনা থাকে তবে এটি ঠিক ঠিক হিসাবে অনুমান করতে সক্ষম হওয়া উচিত। এই ধারণা কি মিথ্যা?
রোমান রেইনার

18

আমি মনে করি @ জ্যাকএইডলি ইতিমধ্যে এর সূচনাটি বলেছিলেন , তবে আমাকে এটি এইভাবে তৈরি করতে দিন:

ব্যতিক্রম ছাড়া (যেমন সি)

নিয়মিত কোড প্রবাহে আপনার কাছে:

if (condition) {
    statement;
} else if (less_likely_condition) {
    less_likely_statement;
} else {
    least_likely_statement;
}
more_statements;

"প্রারম্ভিক ত্রুটি" ক্ষেত্রে, আপনার কোডটি হঠাৎ করে পড়ে:

/* demonstration example, do NOT code like this */
if (condition) {
    statement;
} else {
    error_handling;
    return;
}

যদি আপনি এই প্যাটার্নটি সনাক্ত করেন - একটি returnএকটি else(বা এমনকি if) ব্লকে, এটি অবিলম্বে পুনরায় কাজ করুন যাতে প্রশ্নে কোডটির কোনও ব্লক না থাকে else:

/* only code like this at University, to please structured programming professors */
function foo {
    if (condition) {
        lots_of_statements;
    }
    return;
}

বাস্তব জগতে…

/* code like this instead */
if (!condition) {
    error_handling;
    return;
}
lots_of_statements;

এটি খুব গভীর নীড় বাঁধতে এড়িয়ে যায় এবং "তাড়াতাড়ি বিরতি" কেসটি পূরণ করে (মনকে - এবং কোড প্রবাহকে - পরিষ্কার রাখতে সহায়তা করে) এবং "সম্ভবত আরও বেশি ifঅংশটিকে" অংশে লঙ্ঘন করে না কারণ কেবল কোনও elseঅংশ নেই ।

C এবং পরিষ্কার

অনুরূপ প্রশ্নের উত্তরে অনুপ্রাণিত হয়ে (যা এটি ভুল পেয়েছে), আপনি সিটির সাথে কীভাবে ক্লিনআপ করবেন তা এখানে আপনি এক বা দুটি বহির্গমন পয়েন্ট ব্যবহার করতে পারেন, এখানে দুটি বহির্গমন পয়েন্টের জন্য একটি রয়েছে:

struct foo *
alloc_and_init(size_t arg1, int arg2)
{
    struct foo *res;

    if (!(res = calloc(sizeof(struct foo), 1)))
        return (NULL);

    if (foo_init1(res, arg1))
        goto err;
    res.arg1_inited = true;
    if (foo_init2(&(res->blah), arg2))
        goto err;
    foo_init_complete(res);
    return (res);

 err:
    /* safe because we use calloc and false == 0 */
    if (res.arg1_inited)
        foo_dispose1(res);
    free(res);
    return (NULL);
}

যদি খুব কম পরিচ্ছন্নতার কাজ করতে হয় তবে আপনি সেগুলি একটি প্রস্থানস্থলে পরিণত করতে পারেন:

char *
NULL_safe_strdup(const char *arg)
{
    char *res = NULL;

    if (arg == NULL)
        goto out;

    /* imagine more lines here */
    res = strdup(arg);

 out:
    return (res);
}

এই ব্যবহারটি gotoপুরোপুরি ঠিক আছে, যদি আপনি এটির সাথে ডিল করতে পারেন; ব্যবহার বন্ধ রাখার পরামর্শটি gotoএমন লোকদের নির্দেশিত যারা কোনও ব্যবহার ভাল, গ্রহণযোগ্য, খারাপ, স্প্যাগেটি কোড বা অন্য কিছু কিনা তা এখনও নিজেরাই সিদ্ধান্ত নিতে পারেন না।

ব্যতিক্রমসমূহ

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

<igli> exceptions: a truly awful implementation of quite a nice idea.
<igli> just about the worst way you could do something like that, afaic.
<igli> it's like anti-design.
<mirabilos> that too… may I quote you on that?
<igli> sure, tho i doubt anyone will listen ;)

তবে এখানে একটি পরামর্শ রয়েছে আপনি কীভাবে ব্যতিক্রমহীন ভাষায় এটি ভাল করতে পারেন এবং আপনি যখন এগুলি ভালভাবে ব্যবহার করতে চান:

ব্যতিক্রম মুখে ত্রুটি ফিরে

আপনি returnব্যতিক্রম নিক্ষেপের সাথে শুরুর বেশিরভাগটি প্রতিস্থাপন করতে পারেন । তবে , আপনার সাধারণ প্রোগ্রাম প্রবাহ, অর্থাত্ কোনও কোড প্রবাহ যাতে প্রোগ্রামটির মুখোমুখি হয় নি, ভাল, একটি ব্যতিক্রম… একটি ত্রুটির শর্ত বা সামসু, কোনও ব্যতিক্রম বাড়াবে না

এই যে মানে…

# this page is only available to logged-in users
if not isLoggedIn():
    # this is Python 2.5 style; insert your favourite raise/throw here
    raise "eh?"

… ঠিক আছে, তবে…

/* do not code like this! */
try {
    openFile(xyz, "rw");
} catch (LockedException e) {
    return "file is locked";
}
closeFile(xyz);
return "file is not locked";

… এটি না. মূলত, একটি ব্যতিক্রম একটি নিয়ন্ত্রণ প্রবাহ উপাদান নয় । এটি অপারেশনগুলিকেও আপনার কাছে অদ্ভুত দেখায় ("সেই সমস্ত জাভা ™ প্রোগ্রামাররা সর্বদা আমাদের জানান যে এই ব্যতিক্রমগুলি সাধারণ” ") এবং ডিবাগিংয়ের ক্ষেত্রে বাধা সৃষ্টি করতে পারে (যেমন আইডিইটিকে কেবল কোনও ব্যতিক্রম ভাঙার জন্য বলুন)। ব্যতিক্রমগুলির জন্য প্রায়শই রান-টাইম পরিবেশটি ট্রেসব্যাকগুলি তৈরি করার জন্য স্ট্যাকটি খুলে ফেলা প্রয়োজন etc. এটির বিরুদ্ধে সম্ভবত আরও কিছু কারণ রয়েছে।

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

সাধারণ পরামর্শ ব্যতিক্রমসমূহ

প্রথমে পুরো দেব দলের দ্বারা সম্মত ব্যতিক্রমগুলির সমস্ত ইন-প্রোগ্রাম ব্যবহারের চেষ্টা করার চেষ্টা করুন। মূলত, তাদের পরিকল্পনা করুন। এগুলিকে প্রচুর পরিমাণে ব্যবহার করবেন না। কখনও কখনও, এমনকি সি ++, জাভা ™, পাইথন-এও একটি ত্রুটি রিটার্ন ভাল। কখনও কখনও এটি হয় না; তাদের চিন্তার সাথে ব্যবহার করুন।


সাধারণভাবে, আমি প্রাথমিক গতিতে কোডের গন্ধ হিসাবে দেখি। পরিবর্তে আমি একটি ব্যতিক্রম ছুঁড়ে ফেলি, যদি নিম্নলিখিত শর্তটি ব্যর্থ হয় তবে পূর্ব শর্ত পূরণ হয়নি। শুধু বলুন '
ড্যানম্যান

1
@ ড্যানমন: আমার নিবন্ধটি সি-র সাথে মাথায় রেখে লেখা হয়েছিল… আমি সাধারণত ব্যতিক্রম ব্যবহার করি না। তবে আমি নিবন্ধটি প্রসারিত করেছি (ওফস, এটি বরং দীর্ঘ হয়েছে) পরামর্শের কব্জি দিয়ে। ব্যতিক্রমসমূহ; ঘটনাক্রমে, গতকাল আমাদের সংস্থার অভ্যন্তরীণ
ডেভেলিং

এছাড়াও, এক-লাইনের ifs এবং fors এ এমনকি বন্ধনী ব্যবহার করুন। আপনি goto fail;পরিচয় গোপন করতে চান না ।
ব্রুনো কিম

1
@ ব্রুনো কিম: আপনি যে প্রকল্পটির সাথে কাজ করছেন এটি স্টাইল / কোডিং কনভেনশনের উপর এটি সম্পূর্ণরূপে নির্ভর করে। আমি BSD এর সাথে কাজ করি, যেখানে এটি ভ্রান্ত হয় (আরও অপটিক বিশৃঙ্খলা এবং উল্লম্ব স্থান হ্রাস); job দিনজবসে যাইহোক আমি তাদেরকে যেমন রাখি আমরা রাখি (নবাবিদের পক্ষে কম অসুবিধা, ত্রুটির সম্ভাবনা কম ইত্যাদি) যেমনটি আপনি বলেছেন।
মীরাবিলোস 25'14

3

আমার মতে 'গার্ড কন্ডিশন' কোড পাঠযোগ্যযোগ্য করার অন্যতম সেরা এবং সহজ উপায়। আমি ifপদ্ধতির শুরুতে যখন দেখি তখন সত্যিই আমি ঘৃণা করি এবং elseকোডটি স্ক্রিন বন্ধ থাকায় দেখতে পাচ্ছি না । আমাকে দেখতে কেবল নীচে স্ক্রোল করতে হবে throw new Exception

শুরুতে চেকগুলি রাখুন যাতে কোনও ব্যক্তি পড়তে কোড পড়তে না পারে তবে তার পরিবর্তে সর্বদা এটি উপরে থেকে নীচে স্ক্যান করে।


2

(@ মিরাবিলোসের উত্তরটি দুর্দান্ত, তবে একই সিদ্ধান্তে পৌঁছতে আমি প্রশ্নটি সম্পর্কে কীভাবে ভাবছি তা এখানে :)

আমি নিজের সম্পর্কে (বা অন্য কেউ) পরে আমার ফাংশনটির কোডটি পড়ার বিষয়ে ভাবছি। যখন আমি প্রথম লাইনটি পড়ি, তখন আমি আমার ইনপুট সম্পর্কে কোনও অনুমান করতে পারি না (সেগুলি ব্যতীত যা আমি যাইহোক চেক করব না)। সুতরাং আমার চিন্তাভাবনাটি হ'ল "ঠিক আছে, আমি জানি আমি আমার যুক্তি দিয়ে কাজগুলি করতে যাচ্ছি but তবে প্রথমে আসুন 'সেগুলি পরিষ্কার করুন" - অর্থাৎ নিয়ন্ত্রণের পথগুলি মেরে ফেলুন যেখানে তারা আমার পছন্দ মতো নয় "" তবে একই সাথে , আমি সাধারণ কেসটিকে শর্তযুক্ত কিছু হিসাবে দেখি না; আমি এটির স্বাভাবিক হওয়াতে জোর দিতে চাই Thus সুতরাং,

int foo(int* bar, int baz) {

   if (bar == NULL) /* I don't like you, leave me alone */;
   if (baz < 0) /* go away */;

   /* there, now I can do the work I came into this function to do,
      and I can safely forget about those if's above and make all 
      the assumptions I like. */

   /* etc. */
}

-3

এই ধরণের শর্তের অর্ডারিং প্রশ্নের অধীনে কোড বিভাগের গুরুতরতা এবং ব্যবহার করা যেতে পারে এমন ডিফল্ট রয়েছে কিনা তার উপর নির্ভর করে।

অন্য কথায়:

উ: সমালোচনা বিভাগ এবং কোনও ডিফল্ট নয় => প্রথমদিকে ব্যর্থ

বি অ-সমালোচনা বিভাগ এবং ডিফল্ট => অন্য অংশে ডিফল্ট ব্যবহার করুন

সি-মধ্যে-মধ্যে ক্ষেত্রে => প্রয়োজন অনুযায়ী কেস স্থির করুন decide


এটি কি কেবল আপনার মতামত বা আপনি কোনওভাবে ব্যাখ্যা / ব্যাক আপ করতে পারেন?
gnat

এটি ঠিক কীভাবে ব্যাক আপ হয় না, যেমন প্রতিটি বিকল্প ব্যাখ্যা করে (আসলে অনেক শব্দ ছাড়াই) কেন এটি ব্যবহৃত হয়?
নিকস এম।

আমি এটি বলতে চাই না, তবে (আমার) উত্তরটি নিম্নোক্তরা প্রসঙ্গত নয়) :) এটিই ওপি জিজ্ঞাসা করা প্রশ্ন, আপনার বিকল্প উত্তর পুরোপুরি অন্য বিষয় কিনা
নিকোস এম

আমি এখানে স্পষ্টভাবে ব্যাখ্যা দেখতে ব্যর্থ। বলুন, যদি কেউ "মতামতপূর্ণ বিভাগ এবং কোনও ডিফল্ট => প্রথমদিকে ব্যর্থ হয় না" এর মতো অন্য মতামত লিখেন , তবে এই উত্তরটি কীভাবে পাঠককে দুটি বিপরীত মতামত বেছে নিতে সহায়তা করবে? কীভাবে উত্তর দেবেন নির্দেশিকা মাপসই করার জন্য এটি আরও ভাল আকারে যুক্ত করা বিবেচনা করুন
gnat

ঠিক আছে আমি দেখি, এই সত্যিই আরেকটি ব্যাখ্যা হতে পারে, কিন্তু অন্তত আপনি শব্দ "সমালোচনামূলক ধারা" এবং "কোনো ডিফল্ট" যা বুঝো করতে একটি কৌশল পরোক্ষভাবে গোড়ার দিকে ব্যর্থ করা এবং এই প্রকৃতপক্ষে যদিও একটি minimalistic এক একটি expanation হয়
নিকোস এম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.