পতাকা চলক একটি নিখুঁত মন্দ? [বন্ধ]


47

পতাকা ভেরিয়েবল কি মন্দ? নিম্নলিখিত ধরণের ভেরিয়েবলগুলি কি গভীরভাবে অনৈতিক এবং এগুলি ব্যবহার করা কি দুষ্ট?

"বুলিয়ান বা পূর্ণসংখ্যার ভেরিয়েবলগুলি যে আপনি নির্দিষ্ট স্থানে একটি মান নির্ধারণ করেন তারপরে নীচে নীচে আপনি কিছু করতে বা না পরীক্ষা করার জন্য পরীক্ষা করে দেখুন, উদাহরণস্বরূপ, newItem = trueনীচে কিছু লাইন ব্যবহার করে if (newItem ) then"


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

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


9
মনে হচ্ছে মাইনমা ​​এবং আমার "পতাকা" এর আলাদা সংজ্ঞা আছে। আমি প্রিপ্রোসেসর # আইফডিফস ভাবছিলাম। আপনি কোন একটি সম্পর্কে জিজ্ঞাসা ছিল?
কার্ল বিলেফেল্ট

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

বুলিয়ানগুলি পতাকা। (সুতরাং পূর্ণসংখ্যারও তাই, ...)
টমাস এডিং

7
@ কার্লবিলিফেল্ড আমি বিশ্বাস করি যে ওপি বুলিয়ান বা পূর্ণসংখ্যার ভেরিয়েবলগুলিকে উল্লেখ করছে যা আপনি নির্দিষ্ট স্থানে একটি মান নির্ধারণ করেছেন তারপরে নীচে আপনি কিছু করতে বা না পরীক্ষা করার জন্য নীচে পরীক্ষা করে দেখুন, উদাহরণস্বরূপ newItem = trueনীচের কয়েকটি লাইন ব্যবহার করেif (newItem ) then
তুলাইনস কর্ডোভা

1
এই প্রসঙ্গে ভেরিয়েবল রিফ্যাক্টরিং ব্যাখ্যাকারী ভূমিকা বিবেচনা করুন । যতক্ষণ না এই পদ্ধতিটি সংক্ষিপ্ত থাকে এবং এর মধ্য দিয়ে কম সংখ্যক পথ থাকে, আমি এটিকে একটি বৈধ ব্যবহার হিসাবে বিবেচনা করি।
ড্যানিয়েল বি

উত্তর:


41

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

bool capturing, processing, sending;

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

if(capturing && sending){ // we must be processing as well
...
}

দেখা গেল এমন কিছু পরিস্থিতি রয়েছে যেখানে উপরের বিবৃতিতে অনুমানটি মিথ্যা ছিল।

পতাকা সময়ের সাথে মিশ্রিত হয় এবং এগুলি একটি শ্রেণীর প্রকৃত অবস্থা লুকায়। এজন্য তাদের এড়ানো উচিত।


3
+1, "এড়ানো উচিত"। আমি 'তবে কিছু পরিস্থিতিতে পতাকাগুলি প্রয়োজনীয়' (কিছু লোক 'একটি প্রয়োজনীয় মন্দ' বলতে পারে) সম্পর্কে কিছু যুক্ত করব
ট্রেভর বয়েড স্মিথ

2
@ ট্র্যাভারবয়ডস্মিথ আমার অভিজ্ঞতায় তারা নয়, আপনি পতাকাটির জন্য যে গড় মস্তিষ্ক শক্তি ব্যবহার করবেন তার চেয়ে কিছুটা বেশি আপনার প্রয়োজন
ডিউকোফগেমিং

আপনার পরীক্ষায় এটি 3 টি বুলিয়ান নয়, একক এনাম হওয়া উচিত represent
user949300

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

38

পতাকাগুলি কার্যকর হলে এখানে একটি উদাহরণ।

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

পতাকা সহ, এই পদ্ধতিটি কল করা সহজ:

var password = this.PasswordGenerator.Generate(
    CharacterSet.Digits | CharacterSet.LowercaseLetters | CharacterSet.UppercaseLetters);

এবং এটি এমনকি সহজ করা যেতে পারে:

var password = this.PasswordGenerator.Generate(CharacterSet.LettersAndDigits);

পতাকা ছাড়া, পদ্ধতি স্বাক্ষর কি হবে?

public byte[] Generate(
    bool uppercaseLetters, bool lowercaseLetters, bool digits, bool basicSymbols,
    bool extendedSymbols, bool greekLetters, bool cyrillicLetters, bool unicode);

এভাবে বলা হয়:

// Very readable, isn't it?
// Tell me just by looking at this code what symbols do I want to be included?
var password = this.PasswordGenerator.Generate(
    true, true, true, false, false, false, false, false);

মন্তব্যে উল্লিখিত হিসাবে, অন্য পদ্ধতির একটি সংগ্রহ ব্যবহার করা হবে:

var password = this.PasswordGenerator.Generate(
    new []
    {
        CharacterSet.Digits,
        CharacterSet.LowercaseLetters,
        CharacterSet.UppercaseLetters,
    });

এটি সেটটির তুলনায় অনেক বেশি পঠনযোগ্য trueএবং falseএখনও দুটি ত্রুটি রয়েছে:

প্রধান ত্রুটিটি হ'ল সম্মিলিত মানগুলিকে অনুমতি দেওয়ার জন্য, CharacterSet.LettersAndDigitsআপনি যেমন Generate()পদ্ধতিতে এমন কিছু লিখছেন :

if (set.Contains(CharacterSet.LowercaseLetters) ||
    set.Contains(CharacterSet.Letters) ||
    set.Contains(CharacterSet.LettersAndDigits) ||
    set.Contains(CharacterSet.Default) ||
    set.Contains(CharacterSet.All))
{
    // The password should contain lowercase letters.
}

সম্ভবত এটি আবার লিখুন:

var lowercaseGroups = new []
{
    CharacterSet.LowercaseLetters,
    CharacterSet.Letters,
    CharacterSet.LettersAndDigits,
    CharacterSet.Default,
    CharacterSet.All,
};

if (lowercaseGroups.Any(s => set.Contains(s)))
{
    // The password should contain lowercase letters.
}

পতাকা ব্যবহার করে আপনার যা আছে তার সাথে এটি তুলনা করুন:

if (set & CharacterSet.LowercaseLetters == CharacterSet.LowercaseLetters)
{
    // The password should contain lowercase letters.
}

দ্বিতীয়টি, খুব সামান্য অসুবিধা হ'ল এটি স্পষ্ট নয় যে এইভাবে বলা হলে পদ্ধতিটি কীভাবে আচরণ করবে:

var password = this.PasswordGenerator.Generate(
    new []
    {
        CharacterSet.Digits,
        CharacterSet.LettersAndDigits, // So digits are requested two times.
    });

10
আমি বিশ্বাস করি যে ওপি বুলিয়ান বা পূর্ণসংখ্যার ভেরিয়েবলগুলিকে উল্লেখ করছে যা আপনি নির্দিষ্ট স্থানে একটি মান নির্ধারণ করেছেন তারপরে নীচে আপনি কিছু করার জন্য অর্থেরে পরীক্ষা করে দেখুন যেমন উদাহরণস্বরূপ newItem = trueনীচের কয়েকটি লাইন ব্যবহার করেif (newItem ) then
Tulains Cordord

1
@ মাইনমা ​​স্পষ্টতই একটি তৃতীয়: 8 টি বুলিয়ান যুক্তিযুক্ত সংস্করণটি আমি যখন "পতাকা" পড়ি তখন যা ভেবেছিলাম তা
হ'ল

4
দুঃখিত, তবে আইএমএইচও এটি পদ্ধতি শৃঙ্খলাবদ্ধকরণের জন্য উপযুক্ত ক্ষেত্রে ( en.wikedia.org/wiki/Method_chaining ), অতিরিক্তভাবে, আপনি একটি প্যারামিটার অ্যারে ব্যবহার করতে পারেন (একটি সহযোগী অ্যারে বা মানচিত্র হতে হবে) যেখানে সেই প্যারামিটার অ্যারেতে কোনও প্রবেশ রয়েছে where আপনি সেই প্যারামিটারের জন্য ডিফল্ট মান ব্যবহার ব্যবহার বাদ দেন। শেষ অবধি, পদ্ধতি চেইনিং বা প্যারামিটার অ্যারেগুলির মাধ্যমে কলটি বিট ফ্ল্যাগের মতো সংক্ষিপ্ত এবং অভিব্যক্তিযুক্ত হতে পারে, প্রতিটি ভাষার বিট অপারেটর থাকে না (আমি আসলে বাইনারি পতাকা পছন্দ করি, তবে পরিবর্তে আমি উল্লিখিত পদ্ধতিগুলি ব্যবহার করব)।
ডিউকুফগেমিং

3
এটা খুব ওওপি, তাই না? আমি একটি ইন্টারফেস আলা করব: স্ট্রিং মাইনিউপ্যাসওয়ার্ড = মেকপ্যাসওয়ার্ড (এলোমেলো কমপোজ সাপ্লাইয়ার (নতুন র‌্যান্ডমলওয়ারকেসস্প্পিলার (), নতুন র‌্যান্ডমউপারকেসস্প্পিলার (), নতুন র‌্যান্ডমবারবারস্প্লিয়ার)); স্ট্রিং মেকপ্যাসওয়ার্ড সহ (সরবরাহকারী <চ্যারাকটার> চারসপ্লেয়ার); এবং সরবরাহকারী <চ্যারাকটার> র্যান্ডম কমপোজ সাপ্লাইয়ার (সরবরাহকারী <চ্যারাকটার> ... সরবরাহকারী); এখন আপনি অন্যান্য সরবরাহকারীর জন্য আপনার সরবরাহকারীদের পুনরায় ব্যবহার করতে পারেন, আপনার জেনারেট পাসওয়ার্ড পদ্ধতিটি যে কোনও উপায়ে পছন্দ করুন এবং সেটিকে সহজতর করুন যাতে এটি ন্যূনতম অবস্থা ব্যবহার করে।
ডিবিবেকে

4
@ ডিবিবেক বিশেষ্যগুলির একটি রাজ্য সম্পর্কে কথা বলুন ...
ফিল

15

একটি বিশাল ফাংশন ব্লক হ'ল গন্ধ, পতাকাগুলি নয়। আপনি যদি 5 নং লাইনে পতাকাটি সেট করেন তবে কেবল 354 লাইনে পতাকাটি পরীক্ষা করুন, তবে এটি খারাপ। আপনি যদি 8 নং লাইনে পতাকাটি সেট করেন এবং 10 নং লাইনে পতাকাটি পরীক্ষা করেন, ঠিক আছে। এছাড়াও, কোডের প্রতিটি ব্লকে এক বা দুটি পতাকা সূক্ষ্ম, কোনও ফাংশনে 300 টি ফ্ল্যাগ খারাপ।


10

পতাকার প্রতিটি সম্ভাব্য মূল্যের জন্য একটি কৌশল বাস্তবায়নের সাথে সাধারণত পতাকাগুলি কৌশল প্যাটার্নের কিছু স্বাদ দ্বারা সম্পূর্ণভাবে প্রতিস্থাপন করা যেতে পারে। এটি নতুন আচরণ যুক্ত করা আরও সহজ করে তোলে।

কর্মক্ষমতা সমালোচনামূলক পরিস্থিতিতে ইন্ডায়ারেশনের ব্যয়টি পৃষ্ঠের উপরের দিকে যায় এবং পরিষ্কার ফ্ল্যাগগুলির মধ্যে ডেকনস্ট্রাকশন তৈরি করতে পারে । বলা হচ্ছে যে আমি এমন একটি ক্ষেত্রে মনে রাখতে সমস্যা বোধ করছি যেখানে আমাকে আসলে এটি করতে হয়েছিল।


6

না, পতাকাগুলি খারাপ নয় বা কোনও মন্দ নয় যা অবশ্যই সর্বদাই পুনরুদ্ধার করা উচিত।

জাভার প্যাটার্ন ডটকম ফাইল (স্ট্রিং রেজেক্স, ইন ফ্ল্যাগ) কল বিবেচনা করুন। এটি একটি traditionalতিহ্যবাহী বিটমাস্ক এবং এটি কাজ করে। একনজরে দেখুন ধ্রুবক জাভা এবং যেখানেই আপনি 2 একটি গুচ্ছ দেখতে এন আপনি জানেন সেখানে পতাকা সেখানে হচ্ছে।

একটি আদর্শ রিফ্যাক্টর বিশ্বে, কেউ তার পরিবর্তে একটি এনামসেট ব্যবহার করতে পারে যেখানে একটি এনামের পরিবর্তে ধ্রুবকগুলির মান থাকে এবং ডকুমেন্টেশন যেমন পড়ে:

এই শ্রেণীর স্থান এবং সময়ের পারফরম্যান্সটি একটি উচ্চমানের, প্রথাগত অন্তর্নিহিত "বিট পতাকাগুলির বিকল্প হিসাবে টাইপসেফ বিকল্প হিসাবে ব্যবহারের অনুমতি দেওয়ার জন্য যথেষ্ট হতে হবে।

নিখুঁত বিশ্বে, প্যাটার্ন ডটকম ফাইলটি কল হয়ে যায় Pattern.compile(String regex, EnumSet<PatternFlagEnum> flags)

যা কিছু বলেছে, এটি এখনও পতাকা রয়েছে। এর সাথে কাজ করা আরও সহজ যা ফ্ল্যাগগুলি আসলে কী এবং কী কী ভাল করার চেষ্টা করার অন্য কোনও স্টাইলের Pattern.compile("foo", Pattern.CASE_INSENSTIVE | Pattern.MULTILINE)চেয়ে বেশি Pattern.compile("foo", new PatternFlags().caseInsenstive().multiline())

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

সমস্যাগুলি তখন দেখা যায় যখন লোকেরা পতাকাগুলি একত্রে টস করে এবং সমস্ত প্রাসঙ্গিক ফ্ল্যাগের একটি ফ্র্যাঙ্কনফ্ল্যাগ সেট তৈরি করে বা যেখানে তারা যেখানে পতাকা ঠিক নয় সেখানে ব্যবহার করার চেষ্টা করে।


5

আমি ধরে নিচ্ছি যে আমরা পদ্ধতিতে স্বাক্ষরের মধ্যে পতাকা সম্পর্কে কথা বলছি।

একটি একক পতাকা ব্যবহার করা যথেষ্ট খারাপ।

এটি আপনার সহকর্মীদের তারা যখন দেখবেন ততবার অর্থ হবে না। এটি কী করে তা প্রতিষ্ঠিত করার জন্য তাদের পদ্ধতির উত্স কোডটি দেখতে হবে। আপনার পদ্ধতিটি কী ছিল তা ভুলে যাওয়ার পরে আপনি সম্ভবত কয়েক মাসের মধ্যে একই অবস্থানে থাকবেন।

পদ্ধতিতে একটি পতাকা পাস করা, সাধারণত এর অর্থ হল যে আপনার পদ্ধতিটি একাধিক জিনিসের জন্য দায়ী। পদ্ধতির অভ্যন্তরে আপনি সম্ভবত একটি সাধারণ চেক করছেন:

if (flag)
   DoFlagSet();
else
   DoFlagNotSet();

এটি উদ্বেগগুলির একটি দুর্বল পৃথকীকরণ এবং আপনি সাধারণত এটির আশেপাশে কোনও উপায় খুঁজে পেতে পারেন।

আমার সাধারণত দুটি পৃথক পদ্ধতি থাকে:

public void DoFlagSet() 
{
}

public void DoFlagNotSet()
{
}

আপনি যে সমস্যার সমাধান করছেন তাতে প্রযোজ্য পদ্ধতির নামগুলির সাথে এটি আরও সার্থক হবে।

একাধিক পতাকা পাস করা দ্বিগুণ খারাপ। আপনার যদি সত্যিই একাধিক পতাকা পাস করার দরকার হয় তবে ক্লাসের মধ্যে এ্যাপ্যাপুলেট করার বিষয়টি বিবেচনা করুন। তারপরেও, আপনি এখনও একই সমস্যার মুখোমুখি হবেন, কারণ আপনার পদ্ধতিটি সম্ভবত একাধিক কাজ করছে things


3

পতাকা এবং বেশিরভাগ টেম্প ভেরিয়েবলগুলি একটি শক্ত গন্ধ। সম্ভবত তারা পুনরুদ্ধার করা এবং কোয়েরি পদ্ধতিতে প্রতিস্থাপন করা যেতে পারে।

সংশোধিত:

রাষ্ট্র প্রকাশ করার সময় পতাকা এবং টেম্প ভেরিয়েবলগুলি কোয়েরি পদ্ধতিতে রিফেক্টর করা উচিত। রাষ্ট্রীয় মূল্যবোধগুলি (বুলিয়ানস, ইনটস এবং অন্যান্য প্রাথমিক) প্রায়-সর্বমোট- বাস্তবায়ন বিশদের অংশ হিসাবে লুকানো উচিত।

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


2

পতাকাগুলির বিষয়ে যখন কথা বলি তখন আমাদের জানতে হবে যে তারা প্রোগ্রাম কার্যকর করার সময় পরিবর্তিত হতে চলেছে এবং তারা তাদের রাজ্যের উপর ভিত্তি করে প্রোগ্রামের আচরণের উপর প্রভাব ফেলবে। যতক্ষণ না এই দুটি জিনিসের উপর আমাদের ঝরঝরে নিয়ন্ত্রণ থাকবে ততক্ষণ তারা দুর্দান্ত কাজ করবে।

পতাকাগুলি দুর্দান্ত কাজ করতে পারে যদি

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

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

যতক্ষণ না এই জিনিসগুলি স্থানে থাকে আমি মনে করি এটি জঞ্জাল বাড়ে না।


1

আমি প্রশ্ন থেকে ধরে নিয়েছি যে কিউএর অর্থ হ'ল পতাকা (গ্লোবাল) ভেরিয়েবল, এবং কোনও ফাংশন প্যারামিটারের বিট নয়।

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


0

আমি কখনও মনে করি না যে প্রোগ্রামিংয়ে কোনও কিছুই একেবারে খারাপ evil

আর একটি পরিস্থিতি রয়েছে যেখানে পতাকাগুলি যথাযথ হতে পারে, যা এখানে এখনও উল্লেখ করা হয়নি ...

এই জাভাস্ক্রিপ্ট স্নিপেটে ক্লোজারগুলির ব্যবহার বিবেচনা করুন:

exports.isPostDraft = function ( post, draftTag ) {
  var isDraft = false;
  if (post.tags)
    post.tags.forEach(function(tag){ 
      if (tag === draftTag) isDraft = true;
    });
  return isDraft;
}

অভ্যন্তরীণ ফাংশন, "অ্যারে.ফোরএচ" এ দেওয়া হচ্ছে, কেবল "সত্য প্রত্যাবর্তন" করতে পারে না।

সুতরাং, আপনাকে একটি পতাকা সহ রাষ্ট্রের বাইরে রাখা দরকার।

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