এই প্রোগ্রামিং কৌশলটি কি বলা হয়?


13

একটি সাক্ষাত্কারে জুড়ি প্রোগ্রামিং করার সময় আমি এই প্রোগ্রামিং কৌশলটি পেরিয়ে এসেছি এবং গুগলে এর নামটি খুঁজে পাইনি।

ধারণাটি হ'ল আপনি প্রথমে ভাবটি লিখুন যা ভেরিয়েবলগুলি ব্যবহার করে এবং তারপরে আপনি কোডটি লিখেন যা ভেরিয়েবলগুলি পরে গণনা করে।

এখানে কিছু উদাহরণ কোড ব্যবহার করতে:

private bool ValidPolicyNumber(string policyNumber) 
{
    var hasExpectedPrefix = policyNumber.Substring(0,5) == "POLIC";
    var followedBy7Digits = Regex.IsMatch(policyNumber.Substring(6,7), "^[0-9]{7}$");
    var hasLengthOf12 = policyNumber.Length == 12;

    return hasExpectedPrefix && followedBy7Digits && hasLengthOf12;
}

আমি উল্লিখিত কৌশলটি ব্যবহার করে এই ফাংশনটি লেখার সময় আপনি প্রথমে শেষ পংক্তিটি return hasExpectedPrefix && followedBy7Digits && hasLengthOf12;লিখবেন এবং তারপরে 3 লাইন লিখবেন।

আমি যে নিকটতম কৌশলটি পেয়েছি তা হ'ল "ইচ্ছাশক্তি" এবং এটি এসআইসিপি থেকে এসেছে তবে এটি কলিং ফাংশনগুলির সাথে সম্পর্কিত যা আপনি পরে পরিবর্তনশীল যা ভেরিয়েবল ব্যবহার না করে আপনি পরে প্রয়োগ করতে যাচ্ছেন।


8
আমি বিশ্বাস করি এটি কেবল টপ-ডাউন ডিজাইনের একটি রূপ ।
ভিনসেন্ট সাভার্ড

1
আমি এর নির্দিষ্ট নাম জানি না, তবে শর্তগুলির একটি জটিল সেটটি পরীক্ষা করার প্রয়োজন হলে আমি প্রায়শই এটি দেখতে পেয়েছি। এই কৌশলটি জটিল পরিস্থিতি পড়তে ও বুঝতে অনেক সহজ করে তোলে।
হতাশ

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

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

আমি এটিকে "জটিল পরিস্থিতি বুদ্ধিমানভাবে লিখতে" বলব।
জিমি ব্রেক-ম্যাককে

উত্তর:


13

এটি কার্যকরী রচনায় কেবল একটি বৈচিত্র

সাক্ষী:

private bool ValidPolicyNumber(string policyNumber) 
{
    return hasExpectedPrefix(policyNumber) 
        && followedBy7Digits(policyNumber) 
        && hasLengthOf12(policyNumber);
}

private bool hasExpectedPrefix(string policyNumber)
{
    return policyNumber.Substring(0,5) == "POLIC";
}

private bool followedBy7Digits
{
    return Regex.IsMatch(policyNumber.Substring(6,7), "^[0-9]{7}$");
}

private bool hasLengthOf12
{
    return policyNumber.Length == 12;
}

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


9

এটি কেবল ক্লিন কোড (বই) থেকে একটি পরামর্শ হতে পারে, যখন কার্যকরী ক্ষয় (রবার্ট ব্যাখ্যা করেছেন) ফলস্বরূপ তাদের নিজস্বভাবে পুনরায় ব্যবহারযোগ্য না হওয়ার ফলে কার্যকারিতার কারণে প্রযোজ্য না হয় used

তবে, আপনি যদি এটি সম্পর্কে প্রযুক্তিগত পেতে চান তবে কেন্ট বেক রচিত ইমপ্লিমেন্টেশন প্যাটার্নস বইটি এই কৌশলটির নাম স্থানীয় পরিবর্তনশীল (জোর দেওয়া খনি) হিসাবে রাখে:

স্থানীয় পরিবর্তনশীল

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

স্থানীয় ভেরিয়েবলের জন্য কয়েকটি মুখ্য ভূমিকা রয়েছে:

  • সংগ্রাহক: একটি পরিবর্তনশীল যা পরবর্তী ব্যবহারের জন্য তথ্য সংগ্রহ করে। প্রায়শই সংগ্রাহকের সামগ্রীগুলি কোনও ফাংশনের মান হিসাবে ফিরে আসে। যখন কোনও সংগ্রাহক ফিরে আসবে, তার নাম বা ফলাফলের নাম দিন।

  • গণনা: একটি বিশেষ সংগ্রাহক যা কিছু অন্যান্য অবজেক্টের গণনা সংগ্রহ করে।

  • ব্যাখ্যা: আপনার যদি একটি জটিল ভাব থাকে, তবে স্থানীয় ভেরিয়েবলগুলিতে এক্সপ্রেশনটির বিটগুলি অর্পণ পাঠকদের জটিলতায় নেভিগেট করতে সহায়তা করতে পারে:

    int শীর্ষ = ...;

    int বামে = ...;

    int উচ্চতা = ...;

    int তল = ...;

    নতুন আয়তক্ষেত্র ফিরে (উপরে, বাম, উচ্চতা, প্রস্থ);

    গণনামূলকভাবে প্রয়োজনীয় না হলেও, স্থানীয় ভেরিয়েবলগুলি ব্যাখ্যা করে যা অন্যথায় দীর্ঘ, জটিল অভিব্যক্তি হতে সাহায্য করে।

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