ইউনিট পরীক্ষায় নকল কোডটি কি আরও সহনীয়?


113

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

আপনি কি সম্মত হন যে এই বাণিজ্য বন্ধ রয়েছে? যদি তা হয়, তবে আপনি কি আপনার পরীক্ষাগুলি পাঠযোগ্য, বা রক্ষণাবেক্ষণযোগ্য হতে পছন্দ করেন?

উত্তর:


68

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

চোকান মধ্যে অনুলিপি আপ সেট করা থাকে, আরো ব্যবহার করে বিবেচনা setUpপদ্ধতি বা একাধিক (বা আরো নমনীয়) সরবরাহ ক্রিয়েশন পদ্ধতি

যদি নকলটি এসইউটি পরিচালনা করে কোডটিতে থাকে, তবে নিজেকে জিজ্ঞাসা করুন কেন একাধিক তথাকথিত "ইউনিট" পরীক্ষাগুলি ঠিক একই কার্যকারিতাটি ব্যবহার করছে?

যদি সদৃশটি যদি দৃser়ভাবে থাকে তবে সম্ভবত আপনার কিছু কাস্টম সংস্থান প্রয়োজন । উদাহরণস্বরূপ, যদি একাধিক পরীক্ষাগুলির কাছে দৃser়তার একটি স্ট্রিং থাকে:

assertEqual('Joe', person.getFirstName())
assertEqual('Bloggs', person.getLastName())
assertEqual(23, person.getAge())

তারপরে সম্ভবত আপনার একটি একক assertPersonEqualপদ্ধতি প্রয়োজন , যাতে আপনি লিখতে পারেন assertPersonEqual(Person('Joe', 'Bloggs', 23), person)। (অথবা সম্ভবত আপনার পক্ষে সাম্য অপারেটরটি ওভারলোড করা দরকার Person))

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

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


29
"সদৃশ কোডটি অন্য কোডের মতোই ইউনিট টেস্ট কোডের গন্ধ।" না। "যদি আপনার পরীক্ষাগুলিতে নকল কোড থাকে তবে বাস্তবায়ন কোডটি রিফ্যাক্টর করা আরও শক্ত করে তোলে কারণ আপডেট করার জন্য আপনার কাছে অসমসংখ্যক পরীক্ষাগুলি রয়েছে।" এটি ঘটে কারণ আপনি পাবলিক এপিআইয়ের পরিবর্তে ব্যক্তিগত এপিআই পরীক্ষা করছেন testing

15
তবে ইউনিট পরীক্ষায় সদৃশ কোড প্রতিরোধের জন্য আপনাকে সাধারণত নতুন যুক্তি প্রবর্তন করতে হবে। আমি মনে করি না ইউনিট পরীক্ষাগুলিতে যুক্তি থাকা উচিত কারণ তখন আপনাকে ইউনিট পরীক্ষার ইউনিট পরীক্ষা করতে হবে।
পেট্র পেলার

@ ব্যবহারকারী11617 দয়া করে "ব্যক্তিগত এপিআই" এবং "সর্বজনীন এপিআই" সংজ্ঞায়িত করুন। আমার উপলব্ধি অনুসারে, সর্বজনীন এপিই হলেন এপিআই যা বাহ্যিক বিশ্বের / তৃতীয় পক্ষের গ্রাহকদের কাছে দৃশ্যমান এবং স্পষ্টভাবে সেমভাইয়ার বা অনুরূপ মাধ্যমে সংস্করণযুক্ত, অন্য যে কোনও কিছু ব্যক্তিগত। এই সংজ্ঞা দিয়ে প্রায় সমস্ত ইউনিট পরীক্ষাগুলি "প্রাইভেট এপিআই" পরীক্ষা করছে এবং তাই কোড নকলের প্রতি আরও সংবেদনশীল, যা আমি সত্য বলে মনে করি।
কোলাএ

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

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

186

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

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


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

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

1
@ ক্রিস্টোফার,? কেন এই পোস্ট করা হয় সম্প্রদায়ের উইকি?
পেসারিয়ার

@ পেসার আমি জানি না। জিনিসপত্র স্বয়ংক্রিয়ভাবে সম্প্রদায় উইকি হয়ে ওঠার বিষয়ে জটিল বিধি থাকত।
ক্রিস্টোফার জনসন

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

47

বাস্তবায়ন কোড এবং পরীক্ষাগুলি বিভিন্ন প্রাণী এবং ফ্যাক্টরিং বিধিগুলি তাদের জন্য আলাদাভাবে প্রয়োগ হয় apply

সদৃশ কোড বা কাঠামো সবসময় প্রয়োগের কোডের একটি গন্ধ। আপনি যখন প্রয়োগে বয়লারপ্লেট শুরু করেন, আপনার বিমূর্ততাগুলি সংশোধন করা দরকার।

অন্যদিকে, পরীক্ষার কোড অবশ্যই নকলকরণের একটি স্তর বজায় রাখতে পারে। পরীক্ষার কোডে সদৃশ দুটি লক্ষ্য অর্জন করে:

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

যতক্ষণ না প্রতিটি পরীক্ষার পদ্ধতি প্রায় 20 লাইনের চেয়ে কম থাকে ততক্ষণ আমি পরীক্ষার কোডে তুচ্ছ নকলকে এড়িয়ে যাব। আমি পছন্দ করি যখন পরীক্ষার পদ্ধতিগুলিতে সেটআপ-চালিত-যাচাইয়ের ছন্দ স্পষ্ট হয়।

পরীক্ষাগুলির "যাচাই" অংশে সদৃশটি ক্রাইপ হয়ে যায়, কাস্টম সংস্থান পদ্ধতিগুলি সংজ্ঞায়িত করা প্রায়শই উপকারী। অবশ্যই, সেই পদ্ধতিগুলি অবশ্যই একটি পরিষ্কারভাবে চিহ্নিত সম্পর্কের পরীক্ষা করতে হবে যা পদ্ধতির নামটিতে প্রকাশিত হতে পারে: assertPegFitsInHole-> ভাল, assertPegIsGood-> খারাপ।

যখন পরীক্ষার পদ্ধতিগুলি দীর্ঘ এবং পুনরাবৃত্ত হয় তখন আমি মাঝে মধ্যে খালি ফাঁকা পরীক্ষার টেম্পলেটগুলি সংজ্ঞায়িত করতে দরকারী যেগুলি কয়েক পরামিতি নেয় take তারপরে প্রকৃত পরীক্ষার পদ্ধতিগুলি উপযুক্ত পরামিতিগুলির সাহায্যে টেমপ্লেট পদ্ধতিতে কল করতে কম হয়।

প্রোগ্রামিং এবং টেস্টিংয়ের অনেক বিষয় হিসাবে, কোনও পরিষ্কার উত্তর নেই। আপনার একটি স্বাদ বিকাশ করা দরকার, এবং এটির সর্বোত্তম উপায় হ'ল ভুল করা।


8

আমি রাজী. বাণিজ্য বন্ধ রয়েছে তবে বিভিন্ন জায়গায় এটি আলাদা।

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


আমি মনে করি এটি একটি ভাল ধারনা। আপনার যদি খুব বেশি সদৃশ হয়, দেখুন যে আপনি একটি সাধারণ "টেস্ট ফিক্সচার" তৈরি করতে রিফ্যাক্টর পারেন কিনা যার অধীনে অনেক পরীক্ষা চালানো যেতে পারে। এটি সদৃশ সেটআপ / টিয়ারডাউন কোডটি দূর করবে।
আউটলা প্রোগ্রামার

8

আপনি পরীক্ষা ইউটিলিটি পদ্ধতির বিভিন্ন স্বাদ ব্যবহার করে পুনরাবৃত্তি হ্রাস করতে পারেন ।

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


6

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


3

আমি এর কারণে আরএসপিকে ভালবাসি:

এটিতে সহায়তা করার জন্য 2 টি জিনিস রয়েছে -

  • সাধারণ আচরণ পরীক্ষা করার জন্য ভাগ করা উদাহরণ গ্রুপ groups
    আপনি পরীক্ষার একটি সেট সংজ্ঞায়িত করতে পারেন, তারপরে আপনার অন্তর্ভুক্ত পরীক্ষায় সেটটি অন্তর্ভুক্ত করুন।

  • নেস্টেড প্রসঙ্গ।
    আপনার পরীক্ষার নির্দিষ্ট উপসেটের জন্য ক্লাসের প্রতিটিই নয়, আপনার জন্য মূলত একটি 'সেটআপ' এবং 'টিয়ারডাউন' পদ্ধতি থাকতে পারে।

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


3

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

তবে আমার অভিজ্ঞতায় আমি দেখতে পেয়েছি যে ভাল-ফ্যাক্টরযুক্ত পরীক্ষাগুলি পড়া এবং বুঝতে সহজ। যদি 5 টি টেস্ট থাকে যা প্রতিটি পরিবর্তিত পরিবর্তিত পরিবর্তনশীল এবং শেষে দৃser়তা বাদে প্রতিটি দেখতে একই রকম হয় তবে একক পৃথক পৃথক আইটেমটি কী তা খুঁজে পাওয়া খুব কঠিন। একইভাবে, যদি এটি স্ট্যাকার্ড হয় যাতে কেবল পরিবর্তনশীল যে পরিবর্তনশীল তা দৃশ্যমান হয় এবং দৃ .়তা থাকে, তবে পরীক্ষাটি অবিলম্বে কী করছে তা নির্ধারণ করা সহজ।

পরীক্ষার সময় বিমূর্তির সঠিক স্তরের সন্ধান করা কঠিন হতে পারে এবং আমার মনে হয় এটি করা ভাল।


2

আমি মনে করি না যে আরও নকল এবং পঠনযোগ্য কোডের মধ্যে কোনও সম্পর্ক আছে a আমি মনে করি আপনার পরীক্ষার কোডটি আপনার অন্যান্য কোডের মতোই ভাল হওয়া উচিত। অ-পুনরাবৃত্তি কোডটি আরও বেশি পঠনযোগ্য তবে ডুপ্লিকেট কোডটি ভাল করা হলে।


2

আদর্শভাবে, ইউনিট পরীক্ষাগুলি একবার লেখার পরে খুব বেশি পরিবর্তন করা উচিত নয় তাই আমি পাঠ্যতার দিকে ঝুঁকতে পারি।

ইউনিট পরীক্ষাগুলি যথাসম্ভব স্বাচ্ছন্দ্যযুক্ত হওয়াও পরীক্ষাগুলি যেগুলি নির্দিষ্ট করে তা নির্দিষ্ট কার্যকারিতার উপরে ফোকাস রাখতে সহায়তা করে।

এই বলে যে, আমি চেষ্টা করেছি এবং কিছু কোডের টুকরো পুনরায় ব্যবহার করব যা আমি বার বার ব্যবহার করে শেষ করি, যেমন সেটআপ কোড যা পরীক্ষার সেটগুলিতে ঠিক একই রকম।


2

"এগুলিকে আরও ডিআরআই করতে তাদের রিফ্যাক্টর করে - প্রতিটি পরীক্ষার উদ্দেশ্য আর পরিষ্কার ছিল না"

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

এজন্য পরীক্ষাগুলি ইউনিটটেষ্টের একটি সাবক্লাস - তাই আপনি ভাল পরীক্ষা স্যুইটগুলি ডিজাইন করতে পারেন যা সঠিক, কার্যকর করা সহজ এবং পরিষ্কার clear

প্রাচীন কালে আমাদের পরীক্ষার সরঞ্জামগুলি ছিল যা বিভিন্ন প্রোগ্রামিং ভাষা ব্যবহার করে। পরীক্ষাগুলির সাথে মনোজ্ঞ, সহজে কাজ করা নকশা করা শক্ত (বা অসম্ভব) ছিল।

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

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