আমাদের কি মিথ্যা কোডের সন্ধান করা উচিত?


9

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

যে কোনও বিদ্যমান ডকুমেন্টেশনের সাথে তুলনা করে আমাদের কী মিথ্যা কোডের সন্ধান করতে হবে? অথবা এটি করার জন্য এটি সাধারণত সর্বোত্তম উত্স? এটি যদি চটফটে কোড হয় তবে কি মিথ্যা বলার সম্ভাবনা কম, নাকি এই কোডটি আদৌ মিথ্যা বলা যায় না?


1
আপনি কি "মিথ্যা" বলতে চাইছেন তা স্পষ্ট করে বলতে পারেন? আপনার প্রসঙ্গটি পেতে আমাদের অন্য প্রশ্নের মন্তব্যে উল্লেখ করতে হবে না।
ব্যবহারকারী16764

@ ইউজার ১67 the thread৪ অন্য থ্রেডটি না দেখে মনে পড়ার প্রথম বিষয় হ'ল
আন্ডারহ্যান্ডেড

যদি ডকুমেন্টেশন বলে যে কোডটি ফু করা উচিত, এবং কোডটি বার করে, তার মানে কি কোডটি করা উচিত? বা আমরা কি ধরে নিচ্ছি যে বারটি সঠিক ক্রিয়া কারণ আমরা কখনই ডকুমেন্টেশন পড়ি না, কারণ কোডটি সর্বদা সঠিক থাকে?
বৃহস্পতিবার

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

উত্তর:


9

সাধারণ মানুষের কথায়:

হ্যাঁ , আপনার মিথ্যা কোডটি অনুসন্ধান করা উচিত এবং এটিকে সত্য বলা উচিত। তবে এটি ডকুমেন্টেশনের সাথে তুলনা করে নয়। যে মিথ্যা ডকুমেন্টেশন সনাক্ত করার জন্য এটি একটি পদ্ধতি হবে।

কোড মিথ্যা বলতে পারে এমন অনেকগুলি উপায় রয়েছে যার মধ্যে আমি কয়েকটি কয়েকটি উল্লেখ করব:

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

সংক্ষিপ্ততর, এটি কম মিথ্যা। এটি স্বতঃস্ফূর্ত।

কোডটি যত কম জটিল হবে তত বেশি স্বচ্ছ। সুতরাং এটি কম মিথ্যা।

আরকেইন সিনট্যাক্স ট্রিক্স অনেক মিথ্যা। পরিষ্কার, ধাপে ধাপে অ্যালগরিদম পছন্দ করুন। তারা কম মিথ্যা।

একটি ভাল স্থিতিশীল কোড বিশ্লেষণ সরঞ্জাম আপনাকে মিথ্যা বলে কোড খুঁজে পেতে সহায়তা করতে পারে।

এছাড়াও একটি ভাল স্বয়ংক্রিয় পরীক্ষার ব্যাটারি কোডটি সত্য বলার জন্য বাধ্য করে।


4
The shorter and terser the code is, the less it lies. It's self evident. আমি খুব কমই বলতাম। আমার অভিজ্ঞতা অনুসারে, সংক্ষিপ্ত এবং কোডটি কোডটি ছড়িয়ে দেওয়া, সাধারণভাবে ছদ্মবেশী ফাংশন কলগুলিতে এগুলি লুকিয়ে রাখার মাধ্যমে আরও বেশি সুযোগের বিষয়টি মিথ্যাচারের নিচে পড়ে।
ম্যাসন হুইলারের

@ ম্যাসনওহিলার আপনি ঠিক বলেছেন আমি "টর্স" অংশটি সম্পাদনা করেছি।
তুলিনাস কর্ডোভা

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

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

আর একটি উদাহরণ: কোড যা অন্তর্নিহিত ভাষা বা রানটাইম বৈশিষ্ট্যগুলিকে পরিবর্তন করে, উদাহরণস্বরূপ আদি আচরণের সংজ্ঞা বা মাস্কিং।
জাস্টিনসি

6

কোড মিথ্যা বলতে পারে না।

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

কোডটি অবশ্যই ভুল হতে পারে । এটি অবশ্যই এর নামকরণ বা সংস্থায় বিভ্রান্তিকর হতে পারে। এটি অবশ্যই অপঠনযোগ্য হতে পারে।

তবে আপনি যদি আপনার কোডটি যা করছেন তার জন্য সত্যের উত্স চান , এটি করার মতো নয়, এটি কী করার জন্য ডিজাইন করা হয়েছিল, যা আপনি ভেবেছিলেন এটি কী করছে না ... যদি আপনার এটি জানতে চাইলে এটি আসলে কী করছে, কোড যান।


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

দুঃখিত, তবে "তবে এটি প্যাডেন্টিকালি সঠিক ছিল" বলার অর্থ এই নয় যে আপনাকে মিথ্যাবাদী বলা যায় না - এমনকি লোকেরা তর্ক না করলেও তারা এখনও তা জানে।
স্টিভ 314

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

1
আমি এটির সাথে একমত - আপনার বক্তব্যটি আমি বিতর্ক করছি না, এটি করার সময় আপনি কেবল "মিথ্যা" এর আপাত সংজ্ঞা ব্যবহার করেন। কোড করতে থাকা - না কম্পাইলার, কিন্তু অবশ্যই মানুষের পাঠকদের কাছে। এটি এমনকি কিছু ক্ষেত্রে ইচ্ছাকৃত লক্ষ্য - অব্যক্ত সি প্রতিযোগিতার মতো জিনিসগুলি তুলনামূলক সৌম্যর উদাহরণ হবে। সুফিস্ট্রি, যেমন আমি ইউজার 18১ .৫২ তে আমার মন্তব্যে পরামর্শ দিই। একটি সংকলক মিথ্যা মাধ্যমে দেখে তা বোঝায় না যে এটি মিথ্যা নয়।
স্টিভ 314

@ টেলাস্টিন আমি অনুমান করছি যে আপনি কোনও ফিল্টার কখনও রিডাইরেক্টের কারণে কোনও সাদা পদে আসলেই ঘটতে পারে এবং তারপরে কোডটি কল করে না, সেই পদ্ধতি থেকে ডাকা হয় না, কখনই ফিরে আসবে না, আপনার কি আছে? Godশ্বর আমি জাভা দিয়ে ঘৃণা করি! @ # $
এরিক রেপেন

0

আপনি বেশ কয়েকটি প্রশ্ন জিজ্ঞাসা করুন।

আমাদের কি মিথ্যা কোডের সন্ধানে থাকা উচিত?

অবশ্যই!

আমাদের কি কোনও বিদ্যমান নথির সাথে [কোড] তুলনা করা উচিত?

যে আঘাত না পারে, যদিও অন্যান্য উত্তর উল্লেখ করা হয়েছে, প্রায়ই আরো বেশী না এই সমস্যা খুঁজে পেতে আপনাকে নিয়ে যাবে ডকুমেন্টেশন নেই, কোড

অথবা [কোড] সাধারণত এটি করার দরকারের সবচেয়ে ভাল উত্স?

এটি যা করছে তার জন্য সর্বদা এটি উত্স source কোডটি কী করা উচিত তার জন্য সর্বোত্তম উত্স হতে পারে বিভিন্ন জিনিস (সংমিশ্রণ) যদিও মূল জিনিসগুলি হ'ল:

  • কোড নিজেই;
  • কলিং কোড;
  • এই কোডে মন্তব্যসমূহ;
  • নথিপত্র;
  • ইউনিট পরীক্ষা;
  • সংহতকরণ এবং রিগ্রেশন পরীক্ষা;
  • প্রোগ্রামার;
  • শেষ ব্যবহারকারী;

কোনটি "সেরা" উত্স (বা এর সংমিশ্রণ) আপনার পরিস্থিতির উপর নির্ভর করে।

এটি যদি চটফটে কোড হয় তবে কি মিথ্যা বলার সম্ভাবনা কম, নাকি এই কোডটি আদৌ মিথ্যা বলা যায় না?

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


পাদটীকা
উপরের সমস্ত ধারণা কোডটি মিথ্যা বলতে পারে এবং এই একটি প্রাথমিক (যদিও কিছুটা স্বীকৃত) উদাহরণ:

public int DivideByTwo(int input) 
{
    return input / 3;
}

এটি কেবলমাত্র একটি উদাহরণ যেখানে আমি "কোড মিথ্যা" বলব, @ ব্যবহারকারী 18১5৫২ এর মধ্যে আরও কয়েকটি রয়েছে (অ্যাক্সেসযোগ্য কোড, কোডের জটিলতার সাথে সমস্যার জটিলতার মিল নেই, খারাপ নামকরণ), এবং আমার মনে হয় আরও অনেকগুলি রয়েছে। উইকিপিডিয়ায় মিথ্যার কিছুটা শালীন সংক্ষিপ্তসার রয়েছে , এর মধ্যে অনেকেরই কোড পাওয়া যায়।

মনে রাখবেন যে আপনি যদি কারও সাথে তর্ক করছেন তবে খুব নিশ্চিত হন যে অন্য ব্যক্তির অর্থ "কোড মিথ্যা বলতে পারে না" এর অর্থ এই নয় যে "কোডটি যা করে তা করে"। সংক্ষেপে এখানে অন্য ব্যক্তি "মিথ্যা" এর সংজ্ঞা ব্যবহার করে সংজ্ঞায়িত করছেন যে এটি এত সংকীর্ণ যে এটি "কোড মিথ্যা বলতে পারে না" বিবৃতিটিকে অ্যালিজোমা / মৌলিক সত্য হিসাবে ঘোষণা করতে পারে। এক্ষেত্রে তার অক্ষর সাথে সম্মত হওয়া সবচেয়ে ভাল।


0
if (x > 5) {
  doSomething();
} else {
  doADifferentThing();
}

আপনি "মিথ্যা" শব্দটি প্রযুক্তিগতভাবে উপযুক্ত কিনা তা নিয়ে আপনি তর্ক করতে পারেন তবে এই কোডটি পুরোপুরি স্পষ্টভাবে বোঝাচ্ছে যে x কখনও কখনও 5 এর চেয়ে বেশি হয় এবং কখনও কখনও হয় না। আপনি যদি পুরো প্রোগ্রামটি দেখেন এবং আবিষ্কার করেন যে এই ফাংশনটি কেবলমাত্র এক জায়গায় ডাকা হয় এবং সেই এক্সটি সর্বদা একটি ধ্রুবক 6 এ সেট থাকে তবে তা মিথ্যা।

তদুপরি, সংকলকটি এটি লক্ষ্য করে থাকতে পারে এবং কোডের এই ব্লকটিকে সহজভাবে প্রতিস্থাপন করেছে

doSomething()

যদি আপনার প্রোগ্রামের অন্য কোথাও ডোডিফিল্ফিং থিং না বলা হয়, তবে এটি প্রোগ্রাম থেকে পুরোপুরি মুছে ফেলা হতে পারে।

যদি আপনার ভাষা assertকোনও প্রকারের সমর্থন করে , যা উত্পাদন তৈরিতে বন্ধ থাকে, তবে প্রতিটি assertবিবৃতি সম্ভবত মিথ্যা। একটি টাইপকাস্ট হল অন্য একটি দাবি যা মিথ্যা হতে পারে।

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