জাভাস্ক্রিপ্টে এক-লাইন স্টেটমেন্টে বন্ধনীগুলি প্রয়োজনীয়?


162

আমি একবার শুনেছি যে একক-লাইন বিবৃতিতে কোঁকড়া ধনুর্বন্ধনী ছেড়ে যাওয়া জাভাস্ক্রিপ্টে ক্ষতিকারক হতে পারে। আমি আর যুক্তি মনে রাখছি না এবং একটি গুগল অনুসন্ধান খুব একটা সহায়তা করে নি।

জাভাস্ক্রিপ্টের কোঁকড়ানো ধনুর্বন্ধনী মধ্যে সমস্ত বিবৃতি ঘিরে এটি একটি ভাল ধারণা তৈরি করে যে কিছু আছে?

আমি জিজ্ঞাসা করছি, কারণ সবাই মনে হয় এটি করে।


5
দ্রষ্টব্য: শুধুমাত্র প্রথম বিবৃতিটি সুযোগটি ধরে নিয়েছে, যদিও আপনার এক লাইনে বেশ কয়েকটি বক্তব্য রয়েছে, সুতরাং এটি "একটি লাইনের বিবৃতি" নয় বরং একক বিবৃতি
ক্রিস ইভানোভ


@ ব্লগারবার্ড: না, আমি আসলে এই উত্তরটির কিছুক্ষণ আগে জবাব দিয়েছি।
টাওয়ার

হাহ, তাই আমি দেখছি। কিছু মনে করবেন না :)
ব্লগবার্ড

আপনার উত্তরটি এখানে: मध्यम.com
@

উত্তর:


203

না

তবে তাদের সুপারিশ করা হয়। আপনি যদি কখনও বিবৃতিটি প্রসারিত করেন তবে আপনার এগুলির প্রয়োজন হবে।

এটি পুরোপুরি বৈধ

if (cond) 
    alert("Condition met!")
else
    alert("Condition not met!")

তবে এটি সর্বদা সুপারিশ করা হয় আপনি সর্বদা ধনুর্বন্ধনী ব্যবহার করুন কারণ যদি আপনি (বা অন্য কেউ) বিবৃতিটি কখনও প্রসারিত করেন তবে এটি প্রয়োজন হবে।

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

if (cond) 
{
    alert("Condition met!")
}
else
{
    alert("Condition not met!")
}

28
+1, তথ্যমূলক উত্তর। ব্যক্তিগতভাবে যদিও, আমি এই "প্রস্তাবিত" জিনিসটি কখনও কার্যকর করতে পাইনি। আমি অজগরকে কখনও কোড করি নি, তাই আমি কেবল জিনিসগুলি সন্নিবেশ করি না এবং ইন্ডেন্টেশনটি গুরুত্বপূর্ণ বলে আশা করি না। আমি যদি একটি বিবৃতি যোগ করি তবে আমি ব্রেসগুলিও যুক্ত করি add সর্বদা. একবারে মনে পড়ছে না আমাকে বিট দেয়। সি তে নয়, সি # তেও নয় জাভাস্ক্রিপ্টে।
জাকোব

16
@ কার্ক: ডগলাস ক্রকফোর্ড এটির প্রস্তাব দিয়েছেন। আমি একমত যে এটি একটি বিষয়গত ব্যক্তিগত সিদ্ধান্ত is তবে কোনও গোষ্ঠীতে কাজ করার সময় ধনুর্বন্ধনী টাইপ করা সহজ।
জোশ কে

10
@ জোশ, ওহ, ক্রোকফোর্ড এটি বলেছেন। এটি অবশ্যই চূড়ান্ত শব্দ। ;) (খালি মজা করা) সমস্যাটি হল এই পয়েন্টটির সাবজেক্টিভিটি সমস্ত সি-জাতীয় ভাষায় প্রসারিত এবং দৃ strong় মতামতগুলি (উভয় অবস্থানের জন্য) জুড়ে পাওয়া যাবে।
কર્ક ভোল

11
আমার ব্যক্তিগত অভিজ্ঞতা দেখায় যে দলে কাজ করার সময় ব্রেসার না লাগানো বড় স্ক্রু আপগুলিতে নিয়ে যেতে পারে।
সিরস

4
ব্রেসেস always always সর্বদা ব্যবহার করা ভাল অভ্যাস} @ আরক্স যেমন বলেছিল, ত্রুটি থাকার আরও অনেক জায়গা রয়েছে যদি আপনি এগুলি ছেড়ে দেন। এমনকি অ্যাপল আইওএসের এসএসএল /
টিএলএসে

94

একটি পঠনযোগ্যতার দিক রয়েছে - এতে যখন আপনার যৌগিক বক্তব্য থাকে তা খুব বিভ্রান্তি পেতে পারে। ইনডেন্টিং সহায়তা করে তবে সংকলক / দোভাষীর কাছে কিছু বোঝায় না।

var a;
var b;
var c;

//Indenting is clear
if (a===true)
  alert(a); //Only on IF
alert(b); //Always

//Indenting is bad
if (a===true)
  alert(a); //Only on IF
  alert(b); //Always but expected?

//Nested indenting is clear
if (a===true)
  if (b===true)
    alert(a); //Only on if-if
alert (b); //Always

//Nested indenting is misleading
if (a===true)
  if (b===true)
    alert(a); //Only on if-if
  alert (b); //Always but expected as part of first if?

//Compound line is misleading
//b will always alert, but suggests it's part of if
if (a===true) alert(a);alert(b); 
else alert(c); //Error, else isn't attached

এবং তারপরে একটি এক্সটেনসিবিলিটি দিক রয়েছে:

//Problematic
if (a===true)
  alert(a);
  alert(b); //We're assuming this will happen with the if but it'll happen always
else       //This else is not connected to an if anymore - error
  alert(c);

//Obvious
if (a===true) {
  alert(a); //on if
  alert(b); //on if
} else {
  alert(c); //on !if
} 

ভাবনাটি এই যে আপনার যদি সর্বদা বন্ধনী থাকে তবে আপনি সেই ব্লকের ভিতরে অন্য বিবৃতি inোকাতে জানেন।


4
এটা কেন আমরা সবসময় এক-লাইনের হিসাবে এটি ব্যবহার করা উচিৎ: if (a===true) alert(a);। এখন এটা পরিষ্কার!
জোও পিমেন্টেল

1
কোঁকড়ানো-বাম-বন্ধনী এবং কোঁকড়ানো-ডান-বন্ধনী ব্যবহার শর্তাবলী পরিষ্কার করে তোলে। আমাদের মধ্যে স্বপ্নদর্শীদের জন্য, এছাড়াও বাম এবং ডান উড়ন্ত পাখি হিসাবে উল্লেখ করা হয়।
হাফমেনস

61

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

উদাহরণস্বরূপ, প্রশ্ন জিজ্ঞাসা করে যে এটি ঠিক আছে কিনা:

 if (condition) statement;

এটি ঠিক আছে কিনা তা জিজ্ঞাসা করে না:

 if (condition)
   statement;

আমি মনে করি বন্ধনীগুলি ছেড়ে যাওয়া পছন্দনীয় কারণ এটি কম অতিরিক্ত অতিরিক্ত সিনট্যাক্স সহ কোডটিকে আরও পঠনযোগ্য করে তোলে।

আমার কোডিং শৈলী হ'ল কোডটি ব্লক না হলে কখনও বন্ধনী ব্যবহার করা উচিত নয়। এবং কোনও একক লাইনে একাধিক স্টেটমেন্ট কখনই ব্যবহার না করা (সেমিকোলন দ্বারা পৃথক)। আমি এটি সহজেই পড়তে এবং পরিষ্কার করতে পারি এবং 'যদি' বিবৃতিতে কখনও স্কোপিংয়ের সমস্যা থাকে না। ফলস্বরূপ, কন্ডিশনের বিবৃতিতে একটি এককতে বন্ধনী ব্যবহারের জন্য 3 টি লাইনের প্রয়োজন হবে। এটার মত:

 if (condition) {
   statement;
 }

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

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


1
আমি সর্বদা অনুভব করি যে একজনের সর্বদা ব্রেস অন্তর্ভুক্ত করা উচিত ... তবে আমি এখন এটি পুনর্বিবেচনা করছি। আপনার কাছে Airbnb আপনার দিকে শৈলী গাইড!
প্রেরক

1
তবুও আপনি ভুলে গেছেন যে বেশিরভাগ কোড বিন্যাসকগুলি এটি 2-লাইনের বিন্যাসে পরিবর্তন করে এবং আপনি সমস্যাযুক্ত কোডে ফিরে এসেছেন। উল্লম্ব স্থান আর্গুমেন্ট কেবল নির্বোধ। পঠনযোগ্যতা সর্বদা জয়ী হয় এবং আজকের পর্দা বিশাল।
কিম

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

@ সেন্ডারেল এটি নিয়ন্ত্রণের এসলিন্ট নিয়মটি এখানে পাওয়া যাবে: eslint.org/docs/rules/curly#multi /*eslint curly: ["error", "multi"]*/
সিল্কফায়ার

15

প্রযুক্তিগতভাবে না তবে অন্যথায় একেবারে হ্যাঁ !!!

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

যুক্তি: "এটি ব্যক্তিগত পছন্দ"

না এটা না. আপনি যদি এক জন দল না হন তবে মঙ্গলবারে না। বেশিরভাগ সময় অন্যান্য লোকেরা আপনার কোডটি পড়ছেন / সংশোধন করবেন। কোনও গুরুতর কোডিং দলে এটি প্রস্তাবিত উপায় হবে, সুতরাং এটি 'ব্যক্তিগত পছন্দ' নয়।

যুক্তি: "কোডটি ঠিক ঠিক চলবে"

স্প্যাগেটি কোডটি কি তাই করে! এর অর্থ কি এটি তৈরি করা ঠিক আছে?

যুক্তি: "এটি আমার পক্ষে ভাল কাজ করেছে"

আমার ক্যারিয়ারে আমি এই সমস্যার কারণে অনেকগুলি বাগ তৈরি দেখেছি। আপনি সম্ভবত মনে করতে পারেন না যে আপনি কতবার মন্তব্য করেছিলেন 'DoSomething()'এবং কেন 'SomethingElse()'ডাকা হয় তা নিয়ে বিচলিত হন :

if (condition) 
    DoSomething();
SomethingElse();

অথবা 'সামথিংমোর' যুক্ত করেছেন এবং লক্ষ্য করেছেন না যে এটি বলা হবে না (যদিও ইন্ডেন্টেশনটি অন্যথায় বোঝায়):

if (condition)
  DoSomething();
  SomethingMore();

এখানে আমার কাছে বাস্তব জীবনের উদাহরণ রয়েছে। কেউ সমস্ত লগিং চালু করতে চেয়েছিল যাতে তারা অনুসন্ধান ও প্রতিস্থাপন "console.log"=> চালিয়ে যান //"console.log":

if (condition) 
   console.log("something");
SomethingElse();

সমস্যা দেখুন?

আপনি যদি ভাবেনও, "এগুলি এত তুচ্ছ, আমি কখনই তা করতাম না"; মনে রাখবেন যে আপনার চেয়ে নিকৃষ্ট প্রোগ্রামিং দক্ষতা সহ সর্বদা একজন দলের সদস্য থাকবেন (আশা করি আপনি দলে সবচেয়ে খারাপ নন!)

যুক্তি: "এটি আরও পাঠযোগ্য"

আমি যদি প্রোগ্রামিং সম্পর্কে কিছু শিখেছি, তবে সাধারণ জিনিসগুলি খুব দ্রুত জটিল হয়ে যায়। এটি খুব সাধারণ যে এটি:

if (condition) 
    DoSomething();

এটি বিভিন্ন ব্রাউজার / পরিবেশ / ব্যবহারের ক্ষেত্রে বা নতুন বৈশিষ্ট্য যুক্ত হওয়ার পরে পরীক্ষা করার পরে নিম্নলিখিতগুলিতে পরিণত হয়:

if (a != null)
   if (condition) 
      DoSomething();
   else
      DoSomethingElse(); 
      DoSomethingMore();
else 
    if (b == null)
         alert("error b");
    else 
         alert("error a");

এবং এর সাথে এটির তুলনা করুন:

 if (a != null) {
    if (condition) { 
       DoSomething();
    }
    else {
       DoSomethingElse();
       DoSomethingMore();
    }
 } else if (b == null) {
    alert("error b");
 } else {
    alert("error a");
 }

PS: উপরের উদাহরণে বোনাস পয়েন্টগুলি কে লক্ষ্য করেছে।


2
সুস্পষ্ট বাগটি হ'ল ডোসোমিংথিংমোর (); তবে আরও একটি বাগ রয়েছে। যদি একটি নাল হয় এবং খ নাল হয়, আপনি কেবল "ত্রুটি বি" পান, আপনি কখনই "ত্রুটি এ" পাবেন না।
রকেটসারেস্ট

আপনার উদাহরণ অনুসারে, আপনার উন্নয়ন দল কীভাবে কোডিং করতে পারে তা জানে না, ধনুর্বন্ধনী তাদের সাহায্য করবে না ...
কার্লোস এবিএস

উদাহরণগুলির কয়েকটি
হ'ল

13

কোনও রক্ষণাবেক্ষণের সমস্যা নেই!

আপনার সবার সাথে সমস্যা হ'ল আপনি যে কোনও জায়গায় সেমিকোলন রেখেছেন। একাধিক বিবৃতি জন্য আপনার কোঁকড়া ধনুর্বন্ধনী প্রয়োজন নেই। আপনি যদি কোনও বিবৃতি যুক্ত করতে চান তবে কেবল কমা ব্যবহার করুন।

if (a > 1)
 alert("foo"),
 alert("bar"),
 alert("lorem"),
 alert("ipsum");
else
 alert("blah");

এটি বৈধ কোড যা আপনার প্রত্যাশা মতো চলবে!


2
আপনি কি এটি বলতে না if, elseএবং alertএবং If, Elseএবং Alert?
আনিস গুপ্তা

বাহ, আমি এটি জানতাম না, আমাকে জানানোর জন্য আপনাকে ধন্যবাদ! বেশিরভাগ লোকেরা এই গুরুত্বপূর্ণ বিবরণটি ছাড়েন বলে মনে হয়।
হেন্ডেকা

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

14
এটা ভয়াবহ। কাউকে একটি কমা মধ্যে সেমিকোলন চালু করার জন্য একটি বিবৃতি এবং ভুলে যায় যোগ তাহলে এখন দ্বিতীয় ব্লক গত বিবৃতি জন্য, আপনাকে একটি বাগ যে হতে পারেন সত্যিই কারণ লাইন বর্ণন উপায় শেষে কমা এবং সেমিকোলন খুব স্পট কঠিন অনুরূপ.
ইনগো বার্ক

1
আমি একটি "হেমিংওয়েয়ান" পদ্ধতির পছন্দ করি : খুব পরিষ্কার। আর মধ্যে স্থান ছাড়া ifএবং (মত,if(true) doSomething();
victorf

8

এক লাইনের বিবৃতিতে কোঁকড়া ধনুর্বন্ধনী ব্যবহার করার কোনও প্রোগ্রামিং কারণ নেই।

এটি কেবল কোডার পছন্দ এবং পাঠযোগ্যতার জন্যই নেমে আসে।

আপনার কোড এর কারণে ভঙ্গ হবে না।


7

@ জোশ কে (যা জাভা, সি ইত্যাদি ক্ষেত্রেও প্রযোজ্য) উল্লিখিত কারণ ছাড়াও, জাভাস্ক্রিপ্টের একটি বিশেষ সমস্যা হ'ল স্বয়ংক্রিয় সেমিকোলন সন্নিবেশ । উইকিপিডিয়া উদাহরণ থেকে:

return
a + b;

// Returns undefined. Treated as:
//   return;
//   a + b;

সুতরাং, এটি অপ্রত্যাশিত ফলাফলও পেতে পারে, যদি এটির মতো ব্যবহার করা হয়:

if (x)
   return
   a + b;

এটি লেখার চেয়ে বেশি ভাল নয়

if (x) {
   return
   a + b;
}

তবে সম্ভবত এখানে ত্রুটিটি সনাক্ত করা কিছুটা সহজ (?)


এই সমস্ত উদাহরণ আমার কাছে ভয়ঙ্কর বলে মনে হয়, যদি না লেখকরা অস্থায়ী হয়ে থাকেন এবং লাইনের দ্বারা প্রদান করা হয় বা এটি কাজ না করা হয়।
সিইস টিমারম্যান


4

প্রচুর ভাল উত্তর আছে, তাই আমি আমার পুনরায় বলব না, কেবলমাত্র "নিয়ম" না বলি যখন বন্ধনীগুলি বাদ দেওয়া যায়: এমন পরিস্থিতিতে যে 'রিটার্ন' বা 'নিক্ষেপ' (উদাঃ) তাদের একমাত্র বিবৃতি হিসাবে । এক্ষেত্রে ফ্লো-কন্ট্রোল ইতিমধ্যে পরিষ্কার হয়ে গেছে যে এটি শেষ হচ্ছে:

এমনকি "খারাপ কেস" দ্রুত চিহ্নিতকরণ (এবং স্থির) হয়ে যায় সমাপ্তি প্রবাহ-নিয়ন্ত্রণের কারণে। এই ধারণা / কাঠামো "নিয়ম" এছাড়াও বেশ কয়েকটি ভাষার ক্ষেত্রে প্রযোজ্য।

if (x)
    return y;
    always();

অবশ্যই, এই কারণেই কেউ একটি লিটার ব্যবহার করতে পারে ..


3

কেন এটি সুপারিশ করা হয় এখানে

যাক আমি লিখি

if(someVal)
    alert("True");

তারপরে পরবর্তী বিকাশকারী এসে বললেন "ওহ, আমাকে অন্য কিছু করা দরকার", সুতরাং তারা লেখেন

if(someVal)
    alert("True");
    alert("AlsoTrue");

এখন আপনি দেখতে পাচ্ছেন "এছাড়াও" এছাড়াও সর্বদা সত্য হবে, কারণ প্রথম বিকাশকারী ব্রেস ব্যবহার করেন নি।


এটি সঠিক নয়, আপনি 'অন্য'টি মিস করছেন: যদি (কিছু কিছু) সতর্কতা ("সত্য"); অন্য সতর্কতা ("এছাড়াওTrue"); সঠিক হবে। আমি এটি ব্যবহার করব না কারণ আমার পছন্দ}} কারণ এটি আরও ভাল পাঠযোগ্য।
জেরিট বি

1
তাই না? আমার অন্য কোনও বক্তব্য ছিল না। আমি বলছিলাম যে কোঁকড়ানো ধনুর্বন্ধনী پرته, কেউ নতুন লাইন যুক্ত করলে এটি বাগের দিকে নিয়ে যেতে পারে। আমি মনে করি আপনি আমার বক্তব্য বুঝতে পারেন নি।
আমির রামিনফার

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

3

আমি বর্তমানে একটি মিনিফায়ার নিয়ে কাজ করছি। এখনও আমি এটি দুটি বিশাল স্ক্রিপ্টে পরীক্ষা করে দেখছি। পরীক্ষামূলকভাবে আমি জানতে পেরেছি: আপনি কোঁকড়া ধনুর্বন্ধনী ';', 'রিটার্ন', 'জন্য', 'যদি', 'অন্য' এর জন্য অন্তর্ভুক্ত না করে আপনি যদি কোঁকড়ানো ধনুর্বন্ধনীগুলি পিছনে কোঁকড়া ধনুর্বন্ধনীগুলি সরিয়ে ফেলতে পারেন, 'যখন', 'না', 'ফাংশন'। নির্বিশেষে লাইন বিরতি।

function a(b){if(c){d}else{e}} //ok  
function a(b){if(c)d;else e}   //ok

অন্য বন্ধনী বন্ধনী দ্বারা অনুসরণ না করা হলে অবশ্যই আপনাকে সেমিকোলন দিয়ে ক্লোজিং ব্রেসটি প্রতিস্থাপন করতে হবে।

একটি ফাংশন অবশ্যই কমাতে শেষ হবে না।

var a,b=function()c;  //ok *but not in Chrome
var b=function()c,a;  //error  

Chrome এবং FF এ পরীক্ষিত।


2

সর্বদা এটি খুঁজে

if(valid) return;

আমার চোখের চেয়ে সহজ

if(valid) {
  return;
}

শর্তসাপেক্ষ যেমন

(valid) ? ifTrue() : ifFalse();

বরং পড়ার চেয়ে সহজ (আমার ব্যক্তিগত মতামত)

if(valid) {
  ifTrue();
} else {
  ifFalse();
}

তবে আমার ধারণা এটি কোডিং শৈলীতে নেমে আসে


2

প্রশ্নের সরাসরি জবাব দিচ্ছে না, তবে এক লাইনে শর্ত থাকলে নীচে একটি সংক্ষিপ্ত বাক্য গঠন রয়েছে

উদা:

var i=true;
if(i){
  dosomething();
}

এভাবে লেখা যেতে পারে:

var i=true;
i && dosomething();

1

জাভাস্ক্রিপ্টে অনেক সমস্যা আছে। কটাক্ষপাত এটি সম্পর্কে কথা বলা জাভাস্ক্রিপ্ট স্থপতি ডগলাস Crockford যদি বিবৃতি জরিমানা মনে করা হয় কিন্তু ফিরতি বিবৃতি একটি সমস্যা পরিচয় করিয়ে দিতে পারে।

return
{
    ok:false;
}
//silent error (return undefined)

return{
    ok:true;
}
//works well in javascript

1

আমি এই উত্তরটি অনুরূপ অভিজ্ঞতার সন্ধানে পেয়েছি সুতরাং আমি আমার অভিজ্ঞতার সাথে উত্তর দেওয়ার সিদ্ধান্ত নিয়েছি।

বন্ধনীহীন বিবৃতি বেশিরভাগ ব্রাউজারে কাজ করে তবে আমি পরীক্ষা করে দেখলাম যে ব্র্যাককেট পদ্ধতিগুলি আসলে কিছু ব্রাউজারে কাজ করে না।

ফেব্রুয়ারী 26 শে 2018 পর্যন্ত, এই বিবৃতিটি প্যালে মুনে কাজ করে তবে গুগল ক্রোম নয়।

function foo()
   return bar;

0

একটি স্টেটমেন্টের প্রারম্ভিক ইন্ডেন্টেশন স্তরটি এটির ওপেন ধনুর্বন্ধনী সংখ্যার সমান হওয়া উচিত। (উদ্ধৃত বা মন্তব্যযুক্ত ধনুর্বন্ধনী বা প্রাক প্রসেসরের নির্দেশাবলী বাদে)

অন্যথায় কেএন্ডআর ভাল ইনডেন্টেশন শৈলী হবে। তাদের স্টাইলটি ঠিক করতে, আমি এক লাইনে বিবৃতি দিলে সংক্ষিপ্ত সরল রাখার পরামর্শ দিই।

if (foo) bar();    // I like this. It's also consistent with Python FWIW

পরিবর্তে

if (foo)
   bar();   // not so good

আমি যদি কোনও সম্পাদক লিখতে থাকি তবে আমি তার অটো ফর্ম্যাট বোতামটি ফু এর মতো একই লাইন পর্যন্ত চুষতে পারতাম এবং আপনি যদি বার বার এর আগে চাপায় তবে বারের ধনুর্বন্ধনী sertোকানোর জন্য এটি তৈরি করতাম:

if (foo) {
  bar();    // better
}

তারপরে if স্টেটমেন্টের শিরোনামে উপরে বা নীচে বারে নতুন বিবৃতি যুক্ত করা সহজ এবং সামঞ্জস্যপূর্ণ

if (foo) {
  bar();    // consistent
  baz();    // easy to read and maintain
}

-1

কখনও কখনও তাদের প্রয়োজন বলে মনে হয়! আমি নিজে এটি বিশ্বাস করতে পারি না, তবে গতকাল এটি আমার কাছে একটি ফায়ারব্যাগ সেশনে ঘটেছিল (সাম্প্রতিক ফায়ারফক্স ২২.০) এটি

if (! my.condition.key)
    do something;

মৃত্যুদন্ড কার্যকর কি কিছু সত্ত্বেও my.condition.key ছিল সত্য । বন্ধনী যুক্ত করা হচ্ছে:

if (! my.condition.var) {
    do something;
}

বিষয়টি স্থির কর অজস্র উদাহরণ রয়েছে যেখানে এটি বক্রবন্ধগুলি ছাড়া দৃশ্যত কাজ করে, তবে এই ক্ষেত্রে এটি অবশ্যই কার্যকর হয়নি।

একটি লাইনে একাধিক বক্তব্য রাখার ঝোঁক রয়েছে তাদের অবশ্যই অবশ্যই সর্বদা ব্রেস ব্যবহার করা উচিত , কারণ জিনিস পছন্দ করে things

if (condition)
    do something; do something else;

খুঁজে পাওয়া মুশকিল।


আমি কৌতূহল বোধ করি কোন দৃশ্যে ধনুর্বন্ধকের অভাব যদি শর্তটি সত্য করে তুলেছে তবে আপনি কি এর বাস্তব উদাহরণটি স্মরণ করতে বা দিতে পারবেন?
gitsitgo

শর্তসাপেক্ষ প্রকাশটি সর্বদা বিবৃতি দেওয়ার আগে মূল্যায়ন করা হয়। আমি এর আসল উদাহরণটি দেখতে খুব আগ্রহী কারণ এটি দোভাষীর কোনও ত্রুটি উপস্থাপন করবে।
সেমিকোলন

-1

আমি কেবল লক্ষ করতে চাই যে আপনি কোঁকড়ানো ধনুর্বন্ধনী বন্ধনী বন্ধ রেখে দিতে পারেন। জন রেসিগের এই নিবন্ধে দেখা গেছে ।

if(2 == 1){
    if(1 == 2){
        console.log("We will never get here")
    }
} else 
    console.log("We will get here")

[Qt ধনুর্বন্ধনী শৈলী] [1] elseব্রেস ব্যবহারের সাথে মেলে একটি উভয় পক্ষের ব্লক প্রয়োজন - elseএকটি কোড পর্যালোচনা পাস করার জন্য এই উদাহরণটিতে ব্লকের ধনুর্বন্ধনী প্রয়োজন । [1]: wiki.qt.io/Qt_Coding_Style# ব্রাসেস
পিক্সেলগ্রিজ

ডাউনটা কেন? উপরের বিবৃতিটি 100% নির্ভুল।
জনস্টন

-1

স্টেটমেন্ট থাকলে একাধিক লাইন নন কোঁকড়া ধনুর্বন্ধনী অর্জন করার একটি উপায় আছে .. (বাহ কি ইংরাজী ..) তবে এটি দারুণ টেডিয়াস:

if(true)
   funcName();
else
   return null;


function funcName(){
  //Do Stuff Here...
}

কোঁকড়া ধনুর্বন্ধনী বাদ দিলে আপনার এতগুলি নতুন লাইন থাকতে হবে না। if (true) funcName()else return null
উপরেরগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.