পরীক্ষা-চালিত বিকাশ কি আমাকে সলাইড অনুসরণ করতে বাধ্য করে?


15

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

টিডিডি কি বিকাশকারীদের কেবল ইউনিট পরীক্ষা লেখার চেয়ে আরও সক্রিয়ভাবে সলাইড অনুসরণ করতে বাধ্য করে?


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

1
ইয়াম: আমি একমত নন, টিডিডি ইউনিট পরীক্ষা লেখার বিষয়ে নয়। টিডিডি হ'ল সমস্যাটির জন্য একটি ন্যূনতম জটিল এবং সঠিক সমাধানের বিষয়ে আসছে। টেস্টগুলি প্রক্রিয়াটির কেবলমাত্র একটি উপ-উত্পাদন
অমিত ওয়াধওয়া

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

উত্তর:


24

প্রথমত, টিডিডি আপনাকে সলিড কোড লিখতে কঠোরভাবে জোর করে না । আপনি চাইলে টিডিডি করতে পারেন এবং একটি বড় গণ্ডগোল তৈরি করতে পারেন।

অবশ্যই, সলিডের নীতিগুলি জানার পক্ষে সহায়তা করে কারণ অন্যথায় আপনার সমস্যার বেশিরভাগেরই সঠিক উত্তর না পেয়ে শেষ হতে পারে, এবং সেইজন্য খারাপ পরীক্ষার সাথে খারাপ কোড লিখুন।

যদি আপনি ইতিমধ্যে সলিড নীতিগুলি সম্পর্কে জানেন তবে টিডিডি আপনাকে সেগুলি সম্পর্কে ভাবতে এবং সক্রিয়ভাবে সেগুলি ব্যবহার করতে উত্সাহিত করবে।

এটি বলেছিল, এটি অবিচ্ছেদ্যভাবে সলিডের সমস্ত অক্ষর আবরণ করে না , তবে এটি আপনাকে কমপক্ষে আংশিক সলিড কোডটি লেখার জন্য দৃ strongly ়ভাবে উত্সাহ দেয় এবং উত্সাহিত করে, কারণ এটি তাত্ক্ষণিকভাবে দৃশ্যমান এবং বিরক্তিকর না হওয়ার পরিণতি তৈরি করে।

উদাহরণ স্বরূপ:

  1. আপনাকে ডিকপলড কোড লিখতে হবে যাতে আপনার যা প্রয়োজন তা উপহাস করতে পারেন। এটি নির্ভরতা বিপরীতমুখী নীতির সমর্থন করে ।
  2. আপনাকে এমন টেস্টগুলি লিখতে হবে যা পরিষ্কার এবং সংক্ষিপ্ত, যাতে আপনাকে পরীক্ষাগুলিতে খুব বেশি পরিবর্তন করতে হবে না (যা অন্যথায় করা হলে কোড শোরগোলের একটি বৃহত উত্স হয়ে উঠতে পারে)। এটি একক দায়িত্বের নীতি সমর্থন করে ।
  3. এটি নিয়ে তর্ক করা যেতে পারে, তবে ইন্টারফেস পৃথককরণের নীতিটি ক্লাসকে হালকা ইন্টারফেসের উপর নির্ভর করতে দেয় যা মশকরা অনুসরণ এবং বুঝতে সহজ করে তোলে, কারণ আপনাকে "এই 5 টি পদ্ধতিও কেন উপহাস করা হয়নি?", বা জিজ্ঞাসা করতে হবে না, বা আরও গুরুত্বপূর্ণ বিষয়, কোন পদ্ধতিটিকে উপহাস করবেন তা সিদ্ধান্ত নেওয়ার সময় আপনার খুব পছন্দ নেই। এটি ভাল যখন আপনি পরীক্ষা করার আগে ক্লাসের পুরো কোডটি পুরোপুরি দেখতে না চান এবং এটি কীভাবে কাজ করে তার প্রাথমিক ধারণা পেতে কেবল পরীক্ষা এবং ত্রুটি ব্যবহার করুন।

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

লিসকোভের প্রতিস্থাপনের নিয়ম মেনে চলা যদি আপনি নিজের শ্রেণীর জন্য এমন একটি অসমর্থিত উদাহরণ গ্রহণ করতে চান যা কেবল একই স্ট্যাটিক্যালি টাইপযুক্ত ইন্টারফেসটি বাস্তবায়নের জন্য ঘটে থাকে তবে এটি সঠিক পরীক্ষার ক্ষেত্রে ঘটতে পারে না কারণ আপনি যদি তা পরিবর্তন করতে চান তবে তা সঠিক নয় test সাধারণত কোনও শ্রেণি-অধীন-পরীক্ষায় এর নির্ভরতাগুলির বাস্তব-বাস্তবায়ন বাস্তবায়ন করে না।

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


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

9

না

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


2

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

এটি বেশিরভাগ ডিজাইনের নিদর্শনগুলির একটি আরও দৃ understanding় বোঝার সরবরাহ করে। বিশেষত কৌশল প্যাটার্ন।


0

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

"টেস্ট ড্রাইভেন ডেভলপমেন্ট ইজ ডিজাইন - দ্য লাস্ট ওয়ার্ড অন টিডিডি" নামে এই দুর্দান্ত হ্যান্সেলমিনেট পডকাস্টে টিডিডি এবং কঠিন নীতিগুলির মধ্যে সংযোগটি বিতর্কিত (উপরের উপসংহারের সাথে) ।

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