কন্ডিশন স্টেটমেন্ট, ভাল অভ্যাস বা না হলে পরিবর্তনশীল বরাদ্দ করুন? [বন্ধ]


112

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

if(dayNumber = getClickedDayNumber(dayInfo))
{
    alert("day number found : " + dayNumber);
}
function getClickedDayNumber(dayInfo)
{
    dayNumber = dayInfo.indexOf("fc-day");
    if(dayNumber != -1) //substring found
    {
        //normally any calendar month consists of "40" days, so this will definitely pick up its day number.
        return parseInt(dayInfo.substring(dayNumber+6, dayNumber+8));
    }
    else return false;
}

মূলত আমি সবেমাত্র জানতে পেরেছি যে আমি যদি একটি শর্ত বিবৃতিতে একটি মানকে একটি ভেরিয়েবল বরাদ্দ করতে পারি, এবং অবিলম্বে নির্ধারিত মানটি এটি বুলিয়ান হিসাবে পরীক্ষা করে নিই।

একটি নিরাপদ বাজি জন্য, আমি সাধারণত কোডের দুটি লাইনে এটিকে পৃথক করি, প্রথমে নিয়োগ করুন তারপরে ভেরিয়েবলটি পরীক্ষা করুন, তবে এখন আমি এটি খুঁজে পেয়েছি, আমি কেবল ভাবছি যে অভিজ্ঞ জাভাস্ক্রিপ্ট বিকাশকারীদের নজরে এটি ভাল অনুশীলন কিনা?


"The following code is definitely not recommended (or event not correct) in Java..."এটি কি জাভাস্ক্রিপ্টেও সঠিক? কারণ, যতদূর আমি দেখতে পাচ্ছি, আপনি return parseInt(...)যদি dayNumber != -1সত্য হয় তবে একটি পূর্ণসংখ্যা ( ) প্রদান করেন , তবে এটি মিথ্যা হলে বুলিয়ান।
ড্যানিয়েল কেভিস্ট

উত্তর:


117

আমি এটি সুপারিশ করব না। সমস্যাটি হ'ল এটি সাধারণ ত্রুটির মতো দেখায় যেখানে আপনি মানগুলি তুলনা করার চেষ্টা করেন তবে =পরিবর্তে ==বা এর পরিবর্তে একটি ব্যবহার করুন ===। উদাহরণস্বরূপ, আপনি যখন এটি দেখবেন:

if (value = someFunction()) {
    ...
}

আপনি জানেন না যে এটাই তাদের করণীয় ছিল কিনা, বা তারা এটি লেখার ইচ্ছা নিয়েছিল কিনা:

if (value == someFunction()) {
    ...
}

আপনি যদি সত্যিই জায়গাটিতে অ্যাসাইনমেন্টটি করতে চান তবে আমি একটি স্পষ্ট তুলনা করার পরামর্শ দিচ্ছি:

if ((value = someFunction()) === <whatever truthy value you are expecting>) {
    ...
}

1
@ ম্যাথেজ ক্রামলে: এটি আমার প্রশ্নের উত্তর পরিষ্কারভাবে দেয়। আমি অ্যাসাইনিং দিয়ে যাচাই করছি না তবে অ্যাসাইনমেন্টের পরে মানটি যা যা মূল্যায়ন করে তা যাচাই করছি। এই বোঝার অধিকার আছে?
মাইকেল মাও

1
@ মিশেল: হ্যাঁ, এটা ঠিক। মূলত তুলনা যুক্ত করা আপনার উদ্দেশ্যগুলি আরও স্পষ্ট করে তোলে।
ম্যাথু ক্রামলে

4
শেষ উদাহরণটি কাজ করে না, তবে আপনি যদি কোনও ফাংশনটির ব্যর্থতা / সাফল্যের জন্য পরীক্ষা করে যা বুলেটিয়ান দেয়। অন্য কথায়, if (resultArr = myNeedle.exec(myHaystack)) {...}কাজ করার সময় , if ((resultArr = myNeedle.exec(myHaystack)) === true) {...}ফলস্বরূপ ফলাফলটি না থাকলেও ফলাফলআরর অ্যাসাইনমেন্টটি সর্বদা সত্যবাদী হয় না। যদি কেউ এটি ব্যবহার করে .. নির্মাণ করুন, মনে রাখবেন প্রথমে ফলাফলের ভেরিয়েবল ঘোষণা করুন; শর্ত বিবরণীর মধ্যে 'var' বৈধ নয়।
ভিল

3
আপনি ব্যবহার করতে পারেন if (!!(value = someFunction())), তবে যেমনটি আপনি বলেছিলেন, সমস্যাটি হ'ল আপনি varভিতরে ব্যবহার করতে পারবেন না ifতাই আপনি একটি গ্লোবাল তৈরি করে শেষ করতে পারেন, বা যে valueকোনওভাবে আলাদা লাইনে আপনাকে ঘোষণা করতে হবে তেমন কিছুই অর্জন করতে পারেন না। লজ্জা, আমি সি ++ তে এই নির্মাণটি পছন্দ করেছি।
রিভ

1
@ আরিভ, আপনি ঠিক বলেছেন; যদি ফাংশনটি কোনও বুলিয়ান দেয় - যেমন আমি আমার উপরের মন্তব্যে বলেছি - তবে শর্তসাপেক্ষে প্রত্যাশা অনুযায়ী কাজ করে। তবে যদি ফাংশনটি কোনও বুলিয়ান দেয় (আমার উদাহরণ হিসাবে) তবে পুরো নির্মাণটি একরকম অ-সংবেদনশীল; স্পষ্টত আমার চিন্তাভাবনার লাইনটি ছিল - উদাহরণ থেকে বিচার করা - যে ফাংশনটি একটি অ্যারে ফিরে আসবে। একটি দ্রুত পরীক্ষা ইঙ্গিত দেয় যে শর্তটি trueকেবল তখন ফাংশনটি ফিরে আসার trueক্ষেত্রে মূল্যায়ন করে তবে অন্যান্য সমস্ত ক্ষেত্রে (যখন কোনও অ্যারে, স্ট্রিং, নম্বর বা নাল ফিরে আসে তখন) এটি মূল্যায়ন করে false
ভিল

27

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

if (x = processorIntensiveFunction()) { // declaration inside if intended
    alert(x);
}

কেন এই ক্রিয়াকলাপটি দিয়ে দ্বিতীয়বার চালানোর অনুমতি দেওয়া উচিত:

alert(processorIntensiveFunction());

কারণ প্রথম সংস্করণটি খারাপ লাগছে? আমি এই যুক্তি দিয়ে একমত হতে পারি না।


32
কোনও পুরানো মন্তব্য খোঁজার জন্য নয়, তবে আমি আপনার যুক্তিগুলির সাথে একমত নই। পঠনযোগ্য কোডটির কোনও মন্তব্যের প্রয়োজন ছাড়াই নিজেকে ব্যাখ্যা করা উচিত - বিভ্রান্তিকর কোডটিতে একটি মন্তব্য যুক্ত করা প্রতিকার নয়। দ্বিতীয় অংশ হিসাবে, যা বলেছে বিকল্পটি আবার ফাংশনটি কল করা, আমি মনে করি না যে কেউ এটি করার ইচ্ছা করে। পরিবর্তে আপনি করবেনx = processorItensiveFunction(); if(x) { alert(x); }
ম্যাক্সিম

8
@ ম্যাক্সিম: আমি পঠনযোগ্য কোড পছন্দ করি তবে এর অর্থ এই নয় যে কোডটি ডাব করা উচিত বা খুব ভার্জোজ ose একাধিক লাইনে জিনিস ছড়িয়ে দেওয়া এবং ভেরিয়েবলের মধ্যে মানগুলি জাগ্রুল করা আসলে খারাপ কোডে ডেকে আনতে পারে। Codeোকানো কোডে জেএস-এর মতো দুর্বল টাইপ / নমনীয় ভাষায় অপ্রত্যাশিত পার্শ্ব প্রতিক্রিয়া থাকতে পারে। শর্তসাপেক্ষ বিবৃতিতে অ্যাসাইনমেন্ট জাভাস্ক্রিপ্টে বৈধ, কারণ আপনার "জিজ্ঞাসা অবধি যদি বৈধ হয়, এমন কিছু করুন যা সম্ভবত কার্যভারের ফলাফলকে অন্তর্ভুক্ত করবে" do তবে প্রকৃতপক্ষে, শর্তাধীন আগে নির্ধারণ করাও বৈধ, খুব বেশি ভার্বোস না এবং আরও সাধারণভাবে ব্যবহৃত হয়।
Okdewit

1
@ ম্যাক্সিম আপনি কী ভাবেন if ( ! x = anyFunction() )যে পঠনযোগ্য নয়? এটি যাই হোক না কেন কোনও মন্তব্য প্রয়োজন।
JDrake

আপনি যদি ওপিসি স্থির করেন, তবে বিভিন্ন দক্ষতার স্তরগুলির বিভিন্ন ডেভসের সাথে কাজ করুন (অন্য কথায়, আপনি একজন পেশাদার) আপনি ঘৃণা করবেন যে এটি এমনকি সম্ভব।
ডেভিডজমক্লেলল্যান্ড

2
@ ম্যাক্সিম - এছাড়াও আপনার সমাধানটি কোনও if-elseপরিস্থিতিতে খুব অসুবিধাজনক হবে । বিবেচনা করুন- if (condition) {...} else if (x = processorIntensiveFunction()) {alert(x)} আপনার পূর্বেরটি x = processorIntensiveFunction();যদি প্রাথমিক conditionসত্য হয় তবে এটি একটি ব্যর্থ প্রচেষ্টা হবে ।
অ্যাড্রিয়ান বার্থোলোমিউ

16

অনেকবার করেছি। জাভাস্ক্রিপ্ট সতর্কতা বাইপাস করতে, আমি দুটি প্যারেন যুক্ত করেছি:

if ((result = get_something())) { }

আপনার এটিকে এড়ানো উচিত, আপনি যদি সত্যিই এটি ব্যবহার করতে চান তবে উপরে আপনি কি করছেন তা লিখে একটি মন্তব্য লিখুন।


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

5
@ মিশেল : জেএসলিন্ট ( jslint.com ) একটি জনপ্রিয় প্রোগ্রাম / গ্রন্থাগার যা সম্ভাব্য ভুল বা খারাপ কোডের জন্য জাভাস্ক্রিপ্ট প্রোগ্রামগুলি পরীক্ষা করে।
ম্যাথু ক্রামলে

সতর্কতা পরীক্ষা করতে ফায়ারব্যাগ এবং / অথবা ওয়েব বিকাশকারী এক্সটেনশন সহ মোজিলা ফায়ারফক্স ব্যবহার করুন।
মিং-টাং

আমি কেবল এটি দিয়ে চেষ্টা করেছি if ((a = [1, 2]).length > 0) { console.log(a); }যেখানে aএখনও কোথাও আরম্ভ করা হয়নি এবং এটি প্রকৃতপক্ষে কাজ করেছে (সুন্দর! রিজেক্স ব্যবহার করা আরও সহজ করে তোলে)। এটি কি এখানে সঠিক যে আমার কোনও প্রয়োজন var|const|letনেই? আপনি কি জানেন যে আমি এই কৌশল সম্পর্কে আরও কোথায় পড়তে পারি ?
t3chb0t

4

আপনি জাভাতেও এটি করতে পারেন। এবং না, এটি একটি ভাল অনুশীলন নয়। :)

(এবং ===টাইপ করা সমতার জন্য জাভাস্ক্রিপ্ট-এ ব্যবহার করুন Cr ক্রোকফোর্ডের জেএস-এর দ্য গুড পার্টস বইটি পড়ুন))


@ কিক্সোটো: আমি কি জাভাতে এই কৌশলটি করতে পারি? আমি অবাক হই ... হাতে হাতে এটিএম জেডিকে নেই তাই জাভাতে আমি একটি নমুনা কোড পেতে পারিনি to আমার খারাপ স্মৃতি থেকে, জাভা আপনাকে একটি রানটাইম ত্রুটিটি পাবে যদি প্রত্যাবর্তন মান শর্তসাপূর্ণ বিবৃতি হিসাবে বুলিয়ান না কিছু মূল্যায়ন করে, তাই না?
মাইকেল মাও

1
আহ, হ্যাঁ, জাভাতে এটি বুলিয়ান টাইপ হতে টাইপ-চেক করা হয়। তবে আপনি এটি করতে পারেনif (foo = getSomeBoolValue()) { }
বেন জোটো

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

@ বেনজোটো কেন এটি ভাল অনুশীলন নয়? "কোনও ভেরিয়েবলের দুর্ঘটনাজনিত অপব্যবহার এড়াতে সাধারণত পরিবর্তনটিকে ছোট ছোট স্কোপের সাথে পরিচয় করিয়ে নেওয়া ভাল ধারণা। বিশেষত, কোনও চলকটির সংজ্ঞাটি যতক্ষণ না প্রাথমিক মান দিতে পারে ততক্ষণ পর্যন্ত দেরি করা সবচেয়ে ভাল ... এই দুটি নীতির সর্বাধিক মার্জিত অ্যাপ্লিকেশনগুলির মধ্যে একটি হ'ল শর্তসাপেক্ষে পরিবর্তনশীল ঘোষণা করা। " - স্ট্রস্ট্রপ, "দ্য সি ++ প্রোগ্রামিং ল্যাঙ্গুয়েজ।"
জেড্রেকে

1
হাই, আমি নোড.জেএস জাভাস্ক্রিপ্ট ব্যবহারকারী হিসাবে এখানে এসেছি। কেন এটির একটি ক্ষেত্রে ভাল অনুশীলন হয় না যার সাথে আমার ব্যথা হয়েছে: যদি (মাইভার = 'কেবল একটি পরীক্ষা') একটি নোড.জেস তৈরি করে গ্লোবাল ভেরিয়েবল মাইভার ( নোডজস.আর / ডকস / স্লেস্ট-v12.x/api/globals.html # গ্লোবালস_গ্লোবাল )। সুতরাং আপনি যদি আমার মতো হয়ে থাকেন এবং সার্ভারের অনুরোধ হ্যান্ডলিংয়ে সেই পরিবর্তনশীলটি ব্যবহার করেন (অন্যান্য অনুরোধগুলি এবং স্টাফগুলি নেমে আসতে পারে কয়েক সেকেন্ড পরে এটিতে ফিরে আসার পরে), আপনি কী ফলাফল পাবেন তা অবাক করে দিতে পারেন। সুতরাং প্রস্তাবনাটি হ'ল: সচেতন থাকুন যে এই প্যাটার্নটি নোড.জেজে একটি বিশ্বব্যাপী পরিবর্তনশীল তৈরি করে।
pein-consulting.de

4

whileলুপ সহ আপনি যখন এটি করেন তখন একটি কেস থাকে।
ফাইলগুলি পড়ার সময়, আপনি সাধারণত এটি করেন:

void readFile(String pathToFile) {
    // Create a FileInputStream object
    FileInputStream fileIn = null;
    try {
        // Create the FileInputStream
        fileIn = new FileInputStream(pathToFile);
        // Create a variable to store the current line's text in
        String currentLine;
        // While the file has lines left, read the next line,
        // store it in the variable and do whatever is in the loop
        while((currentLine = in.readLine()) != null) {
            // Print out the current line in the console
            // (you can do whatever you want with the line. this is just an example)
            System.out.println(currentLine);
        }
    } catch(IOException e) {
        // Handle exception
    } finally {
        try {
            // Close the FileInputStream
            fileIn.close();
        } catch(IOException e) {
            // Handle exception
        }
    }
}

whileলাইন ৯- এর লুপটি দেখুন There সেখানে, একটি নতুন লাইনটি একটি ভেরিয়েবলে পড়ে এবং সংরক্ষণ করা হয় এবং তারপরে লুপের সামগ্রীটি চালানো হয়। আমি জানি এটি কোনও ifস্টেটমেন্ট নয়, তবে আমি অনুমান করি যে একটি সময় লুপটি আপনার প্রশ্নের মধ্যেও অন্তর্ভুক্ত করা যেতে পারে।

এর কারণ হ'ল, যখন FileInputStreamআপনি যখন কল করবেন তখন প্রত্যেকবার FileInputStream.readLine()এটি ফাইলের পরবর্তী লাইনটি পড়ে, তাই যদি আপনি কলটি না দিয়ে কেবল fileIn.readLine() != nullভেরিয়েবলটি বরাদ্দ না করে লুপ থেকে ডাকতেন (currentLine = fileIn.readLine()) != null, এবং তারপরে এটিকে কল করেছিলেন লুপের ভিতরেও, আপনি কেবল প্রতিটি দ্বিতীয় লাইন পাবেন।

আশা করি আপনি বুঝতে পেরেছেন, এবং সৌভাগ্য!


3

আপনি জাভাতে বিবৃতি পাশাপাশি অ্যাসাইনমেন্ট করতে পারেন। একটি ভাল উদাহরণ হতে পারে কিছু পড়তে এবং এটি লিখতে:

http://www.exampledepot.com/egs/java.io/CopyFile.html?l=new

কোড:

// Copies src file to dst file.
// If the dst file does not exist, it is created
void copy(File src, File dst) throws IOException 
{
    InputStream in = new FileInputStream(src);
    OutputStream out = new FileOutputStream(dst);

    // Transfer bytes from in to out
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    out.close();
}

@ নাইট্রোডিস্ট: এই উদাহরণের জন্য ধন্যবাদ। আমি জাভা বা জাভাস্ক্রিপ্টের উভয় ক্ষেত্রেই প্রকৃত নই ... জাভাতেও এই পদ্ধতির ব্যবহার সম্ভব বলে জানা ভাল :)
মাইকেল মাও

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

না এটি অগত্যা নয়, আপনাকে প্রশ্নটি মনোযোগ দিয়ে পুনরায় পড়তে হবে need
নাইট্রোডিস্ট

3

আপনি যদি বিদ্যমান কোডের ডিজাইনের উন্নতি করতে মার্টিন ফওলারের বই রিফ্যাক্টরিংয়ের কথা উল্লেখ করেন ! তারপরে বেশ কয়েকটি ক্ষেত্রে এটি ভাল অনুশীলন যেমন। আপনার কেস দৃsert় করার জন্য কোনও ফাংশন বা পদ্ধতি কলটি ব্যবহার করার জন্য দীর্ঘ জটিল শর্তাদি:

"প্রেরণা

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

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

এবং হ্যাঁ তার উত্তর জাভা বাস্তবায়নের জন্যও বৈধ। উদাহরণস্বরূপ যদিও এটি কোনও পরিবর্তনশীলকে শর্তসাপেক্ষ ফাংশন বরাদ্দ করে না।


1

এটা ভাল অনুশীলন না। আপনি শীঘ্রই এটি সম্পর্কে বিভ্রান্ত হবে। এটি একটি সাধারণ ত্রুটির সাথে সমান দেখায়: "=" এবং "==" অপারেটরগুলির অপব্যবহার।

আপনার এটি কোডের 2 লাইনে বিভক্ত করা উচিত। এটি কেবল কোডকে আরও পরিষ্কার করতে সহায়তা করে না, ভবিষ্যতে চুল্লিও সহজ করে তোলে। আপনি যদি আইএফ অবস্থার পরিবর্তন করেন তা কল্পনা করুন? আপনি দুর্ঘটনাক্রমে লাইনটি সরিয়ে ফেলতে পারেন এবং আপনার ভেরিয়েবলটি আর নির্ধারিত মানটি আর পাবেন না।


@ থেথানঘন: আমি ঠিক এটাই থেকে ভয় পাই। যখন আমি বয়স্ক এবং অলস হয়ে উঠি আমি কম কোডে আরও টাইপ করতে চাই না যদি কম কীস্ট্রোক কেবল যথেষ্ট হয় :)
মাইকেল মাও

1
না, আমি বিভ্রান্ত হই না এবং আমি এটি সর্বদা করি। এর উপকারিতাও রয়েছে।
জেড্রেকে

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

0

আমি এটি আরও পুরানো-স্কুল সি স্টাইল বিবেচনা করব; এটি জাভাস্ক্রিপ্টে আসলেই ভাল অনুশীলন নয় তাই আপনার এড়ানো উচিত।


8
আমি একে সি তেও ভাল অনুশীলন বলে বিবেচনা করি না।
ম্যাথু ক্রামলে

1
আমি এটিকে অনেক ভাষায় একটি ভাল অনুশীলন হিসাবে বিবেচনা করি।
জেড্রাক

শুধু 'ভাল অনুশীলন নয়' বলা যথেষ্ট, তাই না। এটি সত্যই কেবল শিক্ষার বিষয়ে - এটি একবার শিখেছি, এবং এটিই।
সর্বোচ্চ ওয়াটারম্যান


0

আমি এখানে গোলাং থেকে এসেছি, যেখানে এরকম কিছু দেখা সাধারণ

if (err := doSomething(); err != nil) {
    return nil, err
}

যার errমধ্যে ifকেবল block ব্লকটি রয়েছে। যেমন, আমি এস 6-এ যা করছি তা বেশ কুৎসিত বলে মনে হচ্ছে, তবে আমার বরং কঠোর এসলিন্ট নিয়মগুলিকে কানাচে পরিণত করে না এবং এটি অর্জন করে।

{
  const err = doSomething()
  if (err != null) {
    return (null, err)
  }
}

অতিরিক্ত ধনুর্বন্ধনী একটি নতুন, আহ, "লেক্সিকাল স্কোপ" সংজ্ঞায়িত করে? যার অর্থ আমি ব্যবহার করতে পারি constএবং errএটি বাইরের ব্লকের জন্য উপলব্ধ নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.