আমি কাউকে বলতে শুনেছি যে ইউনিট পরীক্ষাগুলি (উদাহরণস্বরূপ nUnit, jUnit, xUnit) হওয়া উচিত
(যেমন ইউনিট পরীক্ষায় "স্যাঁতসেঁতে কোড" থাকা উচিত "শুকনো কোড" নয়)
তারা কী সম্পর্কে কথা বলছে?
আমি কাউকে বলতে শুনেছি যে ইউনিট পরীক্ষাগুলি (উদাহরণস্বরূপ nUnit, jUnit, xUnit) হওয়া উচিত
(যেমন ইউনিট পরীক্ষায় "স্যাঁতসেঁতে কোড" থাকা উচিত "শুকনো কোড" নয়)
তারা কী সম্পর্কে কথা বলছে?
উত্তর:
ড্যাম্প এবং ডিআরওয়াই পরস্পরবিরোধী নয়, বরং তারা কোডের রক্ষণাবেক্ষণের দুটি ভিন্ন দিককে ভারসাম্যপূর্ণ করে । রক্ষণাবেক্ষণযোগ্য কোড (কোড যা পরিবর্তন করা সহজ) এখানে চূড়ান্ত লক্ষ্য।
কোড বজায় রাখতে আপনার প্রথমে কোডটি বুঝতে হবে understand এটি বুঝতে, আপনাকে এটি পড়তে হবে। আপনি কোড পড়ার কতটা সময় ব্যয় করেন তা এক মুহুর্তের জন্য বিবেচনা করুন । এটি অনেক বেশি. কোডটি পড়ার এবং বোঝার জন্য প্রয়োজনীয় সময় কমিয়ে ডিএএমপি রক্ষণাবেক্ষণযোগ্যতা বাড়ায়।
সদৃশ অপসারণটি নিশ্চিত করে যে সিস্টেমে প্রতিটি ধারণারই কোডটিতে একক অনুমোদনযোগ্য প্রতিনিধিত্ব রয়েছে। একটি একক ব্যবসায়িক ধারণার পরিবর্তনের ফলে কোডে একক পরিবর্তন হয়। ডিআরওয়াই কেবলমাত্র সিস্টেমের সেই অংশগুলিতে পরিবর্তন (ঝুঁকি) বিচ্ছিন্ন করে রক্ষণাবেক্ষণযোগ্যতা বৃদ্ধি করে যা অবশ্যই পরিবর্তন করতে হবে।
টেস্টগুলিতে প্রায়শই সহজাত নকল থাকে কারণ তারা একই জিনিসটি বারবার পরীক্ষা করে থাকে কেবল কিছুটা আলাদা ইনপুট মান বা সেটআপ কোড দিয়ে। তবে, উত্পাদন কোডের বিপরীতে, এই সদৃশটি কেবলমাত্র একক পরীক্ষার ফিক্স / ফাইলের মধ্যে দৃশ্যের মধ্যে বিচ্ছিন্ন থাকে। এ কারণে, সদৃশটি ন্যূনতম এবং সুস্পষ্ট, যার অর্থ এটি অন্যান্য ধরণের অনুলিপিটির চেয়ে প্রকল্পের জন্য কম ঝুঁকি তৈরি করে।
তদুপরি, এই জাতীয় সদৃশ অপসারণ পরীক্ষার পাঠযোগ্যতা হ্রাস করে। প্রতিটি পরীক্ষায় পূর্বে যে নকল করা হয়েছিল সেগুলি এখন কোনও নতুন পদ্ধতি বা শ্রেণিতে লুকিয়ে রাখা হয়েছে। পরীক্ষার পুরো ছবি পেতে, আপনাকে এখন মানসিকভাবে এই সমস্ত টুকরোটি একসাথে রেখে দিতে হবে।
সুতরাং, যেহেতু টেস্ট কোড সদৃশ প্রায়শই কম ঝুঁকি বহন করে এবং পাঠযোগ্যতার প্রচার করে তাই এটি কীভাবে গ্রহণযোগ্য বলে বিবেচিত হয় তা সহজেই দেখা যায়।
নীতি হিসাবে, উত্পাদন কোডে ডিআরওয়ির পক্ষে, পরীক্ষার কোডে ড্যাম্পের পক্ষপাতী। উভয়ই সমানভাবে গুরুত্বপূর্ণ হলেও সামান্য বুদ্ধি দিয়ে আপনি আপনার পক্ষে ভারসাম্যটি টিপতে পারেন।
ড্যাম্প - বর্ণনামূলক এবং অর্থপূর্ণ বাক্যাংশ।
"DAMP DRY নয়" কোড পুনরায় ব্যবহারের মাধ্যমে পাঠযোগ্যতার মান দেয়। পরীক্ষার ক্ষেত্রে DAMP DRY নয় ধারণাটি হ'ল পরীক্ষাগুলি বোঝা সহজ হওয়া উচিত, এমনকি এর অর্থ যদি কখনও কখনও পরীক্ষার ক্ষেত্রে পুনরাবৃত্তি কোড থাকে।
আরও দেখুন ডুপ্লিকেট কোডটি কি ইউনিট পরীক্ষায় আরও সহনীয়? এই দৃষ্টিভঙ্গির গুণাবলী সম্পর্কে কিছু আলোচনার জন্য।
এটি জে ফিল্ডস দ্বারা তৈরি করা যেতে পারে , ডোমেন নির্দিষ্ট ভাষার সাথে সম্পর্কিত।
"DRY" হ'ল "নিজেকে পুনরাবৃত্তি করবেন না"
এটি এমন একটি শব্দ যা লোকেদের পুনরায় ব্যবহারযোগ্য এমন কোডটি লিখতে বলার জন্য ব্যবহৃত হয়, যাতে আপনি বার বার একই কোড লেখা শেষ না করেন।
"ডিএএমপি" হ'ল "বর্ণনামূলক এবং অর্থপূর্ণ বাক্যাংশ"।
এই শব্দটি আপনাকে কোড লিখতে বলার উদ্দেশ্যে করা হয়েছে যা এটির দিকে তাকিয়ে থাকা কেউ সহজেই বুঝতে পারবেন। আপনি যদি এই নীতিটি অনুসরণ করেন তবে আপনার দীর্ঘ এবং বর্ণনামূলক ভেরিয়েবল এবং ফাংশন নাম ইত্যাদি থাকবে
স্যাঁতসেঁতে = 'বর্ণনামূলক এবং অর্থপূর্ণ বাক্যাংশ' - আপনার ইউনিট পরীক্ষাগুলি 'পড়তে' সক্ষম হতে হবে:
নিবন্ধ থেকে:
ডিএএমপি "বর্ণনামূলক এবং অর্থপূর্ণ বাক্যাংশ" বোঝায় এবং এটি ডিআরওয়ির বিপরীত, এই অর্থে নয় যে এটি বলে যে "প্রত্যেকটি জিনিস আবর্জনার স্তূপের মতো হওয়া উচিত এবং পড়তে অসম্ভব হওয়া উচিত", এ ক্ষেত্রে পাঠযোগ্যতা অপ্রয়োজনীয় কোড এড়ানোর চেয়ে গুরুত্বপূর্ণ is
এর অর্থ কী এবং এটি কোথায় ব্যবহার করা যায়?
পরীক্ষার কোড লেখার সময় ডিএএমপি বেশিরভাগ ক্ষেত্রে প্রযোজ্য। টেস্ট কোডটি বুঝতে খুব সহজ হওয়া উচিত যে কিছু অপ্রয়োজনীয়তা গ্রহণযোগ্য।
ডিএএমপি "বর্ণনামূলক এবং অর্থপূর্ণ বাক্যাংশ" বোঝায় এবং এটি ডিআরওয়ির বিপরীত, এই অর্থে নয় যে এটি বলে যে "প্রত্যেকটি জিনিস আবর্জনার স্তূপের মতো হওয়া উচিত এবং পড়তে অসম্ভব হওয়া উচিত", এ ক্ষেত্রে পাঠযোগ্যতা অপ্রয়োজনীয় কোড এড়ানোর চেয়ে গুরুত্বপূর্ণ is
এখানে ইতিমধ্যে বেশ কয়েকটি উত্তর রয়েছে, তবে আমি অন্যটি যুক্ত করতে চেয়েছিলাম কারণ আমি মনে করি না যে তারা এটি প্রয়োজনীয়ভাবে ব্যাখ্যা করেছে পাশাপাশি তারা পারে।
ডিআরওয়াই (নিজেকে পুনরাবৃত্তি করবেন না) এর ধারণাটি হ'ল আপনার অ্যাপ্লিকেশন কোডটিতে আপনি বাড়াবাড়ি বা পুনরাবৃত্তি কোড এড়াতে চান। আপনি যদি এমন কিছু পেয়ে থাকেন যা বেশ কয়েকটি জায়গায় একই কোড পুনরাবৃত্তি না করে আপনার কোডটির একাধিকবার করার দরকার পড়ে তবে এর জন্য আপনার কোনও ফাংশন বা ক্লাস করা উচিত।
এটি একটি মোটামুটি সুপরিচিত প্রোগ্রামিং ধারণা।
ড্যাম্প (বর্ণনামূলক এবং অর্থপূর্ণ বাক্যাংশ) আপনার ইউনিট পরীক্ষার জন্য। এখানে ধারণাটি হ'ল আপনার ইউনিট পরীক্ষার পদ্ধতির নামগুলি দীর্ঘ এবং বর্ণনামূলক হওয়া উচিত - কার্যকরভাবে সংক্ষিপ্ত বাক্য যা আপনি যা পরীক্ষা করছেন তা বর্ণনা করে।
উদাহরণ: testWhenIAddOneAndOneIShouldGetTwo() { .... }
আপনি যখন এইরকম একটি ডিএএমপি পদ্ধতির নামটি পড়েন, তখন আপনার পরীক্ষার লেখক পরীক্ষার কোডটি না পড়েও যা পরীক্ষা করতে চেয়েছিলেন তা হুবহু বুঝতে হবে (যদিও পরীক্ষার কোডটি অবশ্যই এই ধারণাটি যথাযথ শব্দযুক্ত ভেরিয়েবলের সাথে অনুসরণ করতে পারে, ইত্যাদি)।
এটি সম্ভব কারণ একটি ইউনিট পরীক্ষা পদ্ধতিতে খুব নির্দিষ্ট ইনপুট এবং প্রত্যাশিত আউটপুট থাকে, তাই ডিএএমপি নীতি তাদের পক্ষে ভাল কাজ করে। আপনার প্রধান অ্যাপ্লিকেশন কোডের পদ্ধতিগুলি এই জাতীয় নামগুলির জন্য ওয়ারেন্ট দেওয়ার পক্ষে যথেষ্ট সুনির্দিষ্ট হওয়ার সম্ভাবনা নেই, বিশেষত যদি আপনি এটি DRY নীতিটি মাথায় রেখে লিখেছেন।
ড্যাম্প এবং ডিআরওয়াই একে অপরের বিরোধিতা করে না - তারা আপনার কোডটি কীভাবে লিখিত হয় তার বিভিন্ন দিকগুলি আবরণ করে - তবে তবুও সেগুলি সাধারণত একসাথে ব্যবহার করা হয় না কারণ DRY নীতিটি মাথায় রেখে লেখা পদ্ধতিগুলি সাধারণ-উদ্দেশ্য এবং উপযুক্ত হওয়ার সম্ভাবনা কম unlikely অত্যন্ত নির্দিষ্ট পদ্ধতির নাম। সুতরাং সাধারণ হিসাবে, উপরে বর্ণিত হিসাবে, আপনার অ্যাপ্লিকেশন কোডটি DRY এবং আপনার ইউনিট পরীক্ষার কোড DAMP হওয়া উচিত।
আমি আশা করি এটি কিছুটা আরও ভাল ব্যাখ্যা করতে সহায়তা করে।
আমি ক্রিস এডওয়ার্ডসের সাথে একমত যে আপনার দুজনের মধ্যে ভারসাম্য বজায় রাখা দরকার। আরেকটি বিষয় লক্ষণীয় হ'ল যদি, সদৃশ অপসারণের প্রয়াসে আপনি নিজের ইউনিট পরীক্ষার কোডে (যেমন ডিআরওয়াইকে চূড়ান্ত করে তোলার সময়) প্রচুর অতিরিক্ত কাঠামো যুক্ত করে শেষ করেন তবে আপনি সেখানে বাগ প্রবর্তনের ঝুঁকিটি চালান। এ জাতীয় পরিস্থিতিতে আপনাকে হয় আপনার ইউনিট পরীক্ষাগুলি ইউনিট পরীক্ষা করতে হবে বা কাঠামোর বিটগুলি পরীক্ষা ছাড়াই ছেড়ে দিতে হবে।
আমি চেষ্টাটি এখানে নকল করতে চাই না, তবে আপনি পরীক্ষা নিতে পারেন যা ড্যাম্প তবে ডিআরওয়াইয়ের সুবিধা রয়েছে। ফ্লিপ দিকে, DRY পরীক্ষা কিছু ক্ষেত্রে DAMP পরীক্ষাগুলি সন্তুষ্ট করবে না।
আমি ডিআরওয়াই বনাম ড্যাম্প সম্পর্কে ব্লগ করেছি যার কয়েকটি উদাহরণ রয়েছে।
উভয়ই অ্যাপ্রোচ আপনার একমাত্র সমাধান হওয়া উচিত নয়, কখনও কখনও ড্যাম্প ওভারকিল হয়, অন্য সময় খুব সুন্দর সংযোজন।
সাধারণ নিয়ম হিসাবে আপনার তিনটি বিধি প্রয়োগ করা উচিত। আপনি যদি তৃতীয় বার সদৃশটি সন্ধান করেন তবে ডিএএমপি শৈলী পরীক্ষাগুলি লেখার পক্ষে এটি মূল্যবান হতে পারে তবে তারপরেও সমস্ত নকলটি খারাপ নয় । প্রসঙ্গ বিষয়।