টিডিডি করার সময় এবং ইউনিট পরীক্ষা লেখার সময়, আপনি কীভাবে পরীক্ষা করছেন যে "প্রয়োগ" কোডটির প্রথম পুনরাবৃত্তিটি লেখার সময় "প্রতারণা" করার তাগিদকে প্রতিহত করবে?
উদাহরণস্বরূপ:
আসুন আমি একটি সংখ্যার ফ্যাক্টরিয়াল গণনা করা দরকার। আমি ইউনিট পরীক্ষা দিয়ে শুরু করি (এমএসটিস্ট ব্যবহার করে) এরকম কিছু:
[TestClass]
public class CalculateFactorialTests
{
[TestMethod]
public void CalculateFactorial_5_input_returns_120()
{
// Arrange
var myMath = new MyMath();
// Act
long output = myMath.CalculateFactorial(5);
// Assert
Assert.AreEqual(120, output);
}
}
আমি এই কোডটি চালাই, এবং এটি CalculateFactorial
এমনকি ব্যর্থ হয় যেহেতু পদ্ধতিটিও বিদ্যমান নেই। সুতরাং, আমি এখন পরীক্ষার অধীনে পদ্ধতিটি বাস্তবায়নের জন্য কোডটির প্রথম পুনরাবৃত্তি লিখি , পরীক্ষায় পাস করার জন্য ন্যূনতম কোডটি লিখি ।
বিষয়টি হ'ল, আমি নিরন্তর নিম্নলিখিতগুলি লিখতে প্ররোচিত হই:
public class MyMath
{
public long CalculateFactorial(long input)
{
return 120;
}
}
এটি, প্রযুক্তিগতভাবে সঠিক, এটি অবশ্যই সেই নির্দিষ্ট পরীক্ষাটি পাস করার জন্য প্রয়োজনীয় ন্যূনতম কোড (সবুজ হয়ে উঠুন), যদিও এটি স্পষ্টতই একটি "প্রতারণা" কারণ এটি সত্যিকার অর্থে কোনও ফ্যাকটোরিয়াল গণনা করার কাজটি সম্পাদন করার চেষ্টাও করে না । অবশ্যই, এখন রিফ্যাক্টরিং অংশ বাস্তবায়নের সত্যিকারের রিফ্যাক্টরিংয়ের পরিবর্তে "সঠিক কার্যকারিতা লেখার" অনুশীলনে পরিণত হয়। স্পষ্টতই, বিভিন্ন পরামিতিগুলির সাথে অতিরিক্ত পরীক্ষা যুক্ত করা ব্যর্থ হবে এবং একটি রিফ্যাক্টরিংকে বাধ্য করবে, তবে আপনাকে সেই পরীক্ষা দিয়েই শুরু করতে হবে।
সুতরাং, আমার প্রশ্ন হ'ল, "পরীক্ষায় পাস করার জন্য ন্যূনতম কোড লেখার" মধ্যে আপনি কীভাবে এই ভারসাম্যটি অর্জন করবেন যদিও এখনও এটিকে কার্যকরী রাখছেন এবং আপনি আসলে কী অর্জনের চেষ্টা করছেন তার চেতনায়?