পতাকাগুলি কার্যকর হলে এখানে একটি উদাহরণ।
আমার কাছে একটি কোডের টুকরো রয়েছে যা পাসওয়ার্ড তৈরি করে (একটি ক্রিপ্টোগ্রাফিক সুরক্ষিত সিউডোর্যান্ডম নম্বর জেনারেটর ব্যবহার করে)। পদ্ধতির কলকারী পাসওয়ার্ডে মূল অক্ষর, ছোট অক্ষর, অঙ্ক, মূল চিহ্ন, বর্ধিত চিহ্ন, গ্রীক চিহ্ন, সিরিলিক চিহ্ন এবং ইউনিকোড থাকা উচিত কিনা তা চয়ন করে।
পতাকা সহ, এই পদ্ধতিটি কল করা সহজ:
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.
});