দ্রুত এবং নোংরা প্রোগ্রামাররা কীভাবে জানতে পারে যে তারা এটি ঠিক করেছে?


166

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

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


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

35
যাইহোক, কিছু লোক শিপিং সফ্টওয়্যারটির স্বার্থে "পরে এটি পরিষ্কার করুন" এর পরিকল্পনার সাথে ইচ্ছাকৃত নোংরা কোডটি পরীক্ষা করা ভাল বলে মনে করেন।
হি

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

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

10
How do quick & dirty programmers know they got it right?কারণ এটি কাজ করে :)
রাচেল

উত্তর:


100

কোডটি সম্ভবত সঠিক নয়।

তবে তাতে কিছু আসে যায় না।

দ্রুত এবং ময়লা পরিস্থিতিগুলিতে যাওয়ার সঠিক উপায় হতে পারে যেখানে:

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

কখনও কখনও এটি গুরুত্বপূর্ণ নয় যে কোডটি দৃ is় এবং প্রতিটি কল্পনাযোগ্য ইনপুট পরিচালনা করে। কখনও কখনও এটি আপনার হাতে থাকা পরিচিত ডেটা হ্যান্ডেল করা প্রয়োজন।

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

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


24
"ব্যর্থতার প্রভাব কম for" এর জন্য +1। আমার প্রিয় গাণিতিক ঝুঁকি গণনাটি হ'ল ঝুঁকি = ব্যর্থতার প্রকৃত পরিণতি x ব্যর্থতার সম্ভাবনা x ব্যর্থতার অনুভূত পরিণতি (আমার অভিজ্ঞতার সাথে, স্টেকহোল্ডাররা প্রায়শই আটকে যান)
ট্রাভ

7
"কোডটির একটি স্বল্পকালীন জীবনকাল রয়েছে For উদাহরণস্বরূপ, আপনি একটি গুচ্ছ ডেটা একটি অ্যাড-হক প্রোগ্রামের সাথে একটি মান বিন্যাসে রূপান্তর করছেন" " রূপান্তরটি সঠিকভাবে সম্পন্ন না হলে, তবে ডেটাতে তাত্পর্যগুলি বেশ কিছুক্ষণ না পরে দেখা যায় না?
জোয় অ্যাডামস

3
@ ট্রাভ সুতরাং, কেবল তা নিশ্চিত করার জন্য, ব্যর্থতার আসল পরিণতি যদি বিশাল হয় তবে আমার ব্যর্থতার অনুভূত পরিণতি শূন্য হয়, এর কোনও ঝুঁকি নেই?
ক্রিশ্চিয়ান স্টুয়ার্ট

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

1
@ ট্রাভ বিকল্পভাবে, একটি নাম পরিবর্তন করুন। যথা, ঝুঁকিটি অনুভূত ঝুঁকিতে বদলাতে হবে , যেহেতু আমরা যদি বিশ্বাস করি যে ব্যর্থতার কোনও পরিণতি নেই তবে আমরা সম্ভবত বিশ্বাস করি যে কোনও ঝুঁকি নেই।
21

237

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


31
যখনই আমি শুনি "পরে এটি পরিষ্কার করুন" বা "যখন আমরা কিছুটা কমিয়ে দেই" তখন আমি সর্বদা "কাল, আগামীকাল, আমি তোমাকে আগামীকাল ভালবাসি singing 'গানটি শুরু করতে প্রলুব্ধ করি It's যদিও এটি কেবল আমার হতে পারে।
জনএফএক্স

8
আমাদের মধ্যে অনেকেই বরং দুর্ভাগ্যজনক অবস্থানে রয়েছেন। অন্যান্য লোকের কারিগরি debt ণ দান করা এটা বেশ বিতর্কিত ।
মার্ক বুথ

34
আসল সমস্যা হ'ল অন্যান্য প্রোগ্রামারদের কাউবয় বা দ্রুত এবং নোংরা বা অন্যান্য শিরোনামে শ্রেণিবদ্ধ করা। প্রতিটি প্রোগ্রামারের কিছু ব্যর্থতা মোড থাকে এবং কারও এলিস কোড পড়া খুব কঠিন এবং আপনার নিজের ব্যর্থতা খুঁজে পাওয়া খুব কঠিন is এই সমস্ত মিলে এর অর্থ হ'ল লোকেরা খুব সহজেই অন্যান্য প্রোগ্রামারদেরকে খারাপ হিসাবে লেবেল করে, নিজের কোডটি নিখুঁত মনে করে
tp1

3
@ টিপি 1: ভাল প্রোগ্রামাররা এমন কোড লিখতে পারে যা সহজেই পড়তে পারে। অন্য কেউ এটি পড়ে, এবং অস্পষ্ট যে কোনও বিষয় স্পষ্ট করে তারা এগুলি করে। অনুশীলনের সাথে, প্রথম পড়াতে অস্পষ্ট যে অংশটি সঙ্কুচিত হবে।
কেভিন ক্লাইন

9
@ জিমথিও, আপনি কি গুরুত্ব সহকারে মনে করেন যে উপরে বর্ণিত প্রোগ্রামারগুলির মধ্যে কেউ কখনও ইচ্ছাকৃতভাবে খারাপ কোড লিখেছেন? কয়েক বছর আগে আপনি কি কখনও নিজের লেখা কোডটি পড়েছেন? আপনি এটি ভাল পেয়েছি? সম্ভাবনাগুলি হ'ল, তখন আপনি আপনার সেরাটি করেছিলেন এবং আপনি এখনও সেই কোডটিতে উন্নত করার জন্য ভয়ঙ্কর অনেক কিছুই দেখতে পান।
পিয়েটার টার্ক

104

ঠিক আছে, সম্পূর্ণ ডাউনভোট-টোপ হওয়ার ঝুঁকিতে, আমি বিরোধী দৃষ্টিভঙ্গি "শয়তানদের পক্ষে" যাচ্ছি।

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

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

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


9
অথবা এটি যদি কয়েক দশক ধরে শক্ত ব্যবহার করা হয় তবে সম্ভবত এটি কোনও জগাখিচুড়ি দেখাবে looking যদি এটি ব্যবহার না করা হয় (মোটামুটি বা দীর্ঘকাল ধরে) তবে এটি কোনও ক্রাফ্ট সংগ্রহ করার সুযোগ পাবে না।
বেহুদা

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

7
+1 - বাস্তব বিশ্বে সর্বদা কোডের মান এবং সময়সীমা নির্ধারণের মধ্যে একটি বাণিজ্য থাকবে। আমার পরিবর্তে এমন একজন প্রগ্রেমার থাকবেন যিনি একজন পারফেকশনিস্টের চেয়ে দ্রুত যুক্তিসঙ্গত কোড তৈরি করতে পারেন যিনি কোনও পদ্ধতিতে "সিরিয়ালাইজ" বা "WritToFile" ডাকতে পারেন কিনা তা ভেবে কয়েক মাস ব্যয় করে।
জেমস অ্যান্ডারসন

3
তুমি এটা বলেছিলে. আমি এমন একটি সংস্থায় কাজ করেছি যেখানে পাশের ঘরে একটি টিম ছিল যা গত ৫ বছর ধরে একটি নতুন সিস্টেমের কার্যকরী প্রয়োজনীয়তা নিয়ে কাজ করছিল, এর জন্য কোডের কোনও লাইন এখনও লেখা হয়নি। অনেক কোডার হ'ল (বিশেষত জুনিয়র, সুন্দর হতে হবে এবং সুনির্দিষ্ট "স্ট্যান্ডার্ডগুলি পূরণ করা উচিত কোড সম্পর্কে উচ্চ ধারণা সহ কলেজ থেকে সতেজ এবং অন্যথায় এটি খারাপ) এবং যদি না থামানো হয় তবে কয়েক মাস আগে পুরোপুরি কার্যকর ছিল এমন কিছু নিয়ে বেঁধে দেওয়া হবে (I কখনও কখনও এখনও সেই প্রবণতা থাকে, আমি মনে করি আমরা সবাই করি)। তবে শেষ পর্যন্ত, কী গুরুত্বপূর্ণ তা দরজা থেকে বেরিয়ে আসছে।

6
@ জর্জিও: আমি আপনার "কুসংস্কার" এর সাথে একমত নই যে মানের কাজ কেবল হ্যাক করার চেয়ে বেশি সময় নেয়। আপনি যদি টাইপিংয়ের সাথে প্রোগ্রামিংকে সমান করেন তবে এটি সত্য হতে পারে। সম্পূর্ণ সফ্টওয়্যারটি বিবেচনা করে লাইফ সাইকেল জিনিসগুলি আরও মসৃণ হয় এবং তাই আপনি যদি মানের বিষয়ে যত্নশীল হন তবে তত দ্রুত।
থমাসএক্স

85

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

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

যার এই অভিজ্ঞতার অভাব রয়েছে তার পক্ষে পার্থক্যটি ব্যাখ্যা করা অসম্ভব। তাই তারা পরিস্থিতি বিবেচনা করে তারা যথাসাধ্য চেষ্টা করছে বলে বিশ্বাস করে এমনকি তাদের সারা জীবন কোড-প্রার্থনা মোডে উন্নতি করতে পারে vo

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

এবং আসুন এটির মুখোমুখি হোন, সম্ভাবনাগুলি আপনি নন। আমি, নিজের জন্য, আমি জানি না। আমার প্রবাহের কিছু বিরল মুহুর্ত ছিল - এবং অজস্র ঘন্টার শোক এবং দুঃখ, যা সাধারণত আমার নিজের ভুলের কারণে ঘটে। এটি আরও ভাল সৎ এবং বাস্তববাদী হতে হবে। প্রকৃতপক্ষে, আমি বিশ্বাস করি যে সর্বশ্রেষ্ঠ প্রোগ্রামাররা তাদের নিজস্ব পতন এবং অতীতের ভুল সম্পর্কে পুরোপুরি সচেতন, তাই তারা নিরাপদে পাশে থাকার জন্য তারা তাদের অনুমানগুলি দ্বিগুণ করে পরীক্ষা করার এবং সেই ছোট্ট ইউনিট পরীক্ষা লেখার অভ্যাসটি সচেতনভাবে বিকাশ করেছেন। ( "আমি দুর্দান্ত প্রোগ্রামার নই - দুর্দান্ত অভ্যাসের সাথে একটি ভাল প্রোগ্রামার।" - কেন্ট বেক।)


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

1
মজাদার, আমি আমার কোডটি (কর্মক্ষেত্রে) ইউনিট পরীক্ষা করার কাজটি শুরু করার পর থেকে তার বিপরীতটি অনুভব করি। এ যেন অলস হওয়ার মতো; আপনার কোডটি সত্যিই বোঝার কোনও কারণ নেই , যেহেতু অন্যান্য
কোডগুলি

8
আপনার নিজের কোডটি কাজ করে তা প্রমাণ করার জন্য আপনি অংশে ইউনিট পরীক্ষা লিখেন । আরও গুরুত্বপূর্ণ, আপনি ইউনিট পরীক্ষা লিখেন যাতে অন্য বিকাশকারীরা আত্মবিশ্বাসের সাথে আপনার কোডটি পরিবর্তন করতে পারে।
স্টিফেন গ্রস

4
ডোনাল্ড নুথ: "উপরের কোডে বাগগুলি সম্পর্কে সাবধান থাকুন; আমি কেবল এটি সঠিক প্রমাণ করেছি, এটি চেষ্টা করে দেখিনি।" haacked.com/archive/2007/11/29/…
মার্কজে

1
@ ইজকাটা - আপনি কী করছেন তা যদি বুঝতে না পারেন তবে ইউনিট পরীক্ষাগুলি সম্ভবত নষ্ট হয়ে গেছে এবং যাচাই করে যাচাই করে যে কোডের একই ভুল রয়েছে। এছাড়াও, 100% সিদ্ধান্ত কভারেজ এবং সঠিক ইউনিট পরীক্ষার পরেও, এটি সম্ভব (যদিও অস্বাভাবিক) ত্রুটি পরীক্ষা করা প্রকাশ করে না have
স্টিভ 314

33

ইউনিট পরীক্ষা । কোনও কোডে আস্থা রাখার একমাত্র উপায় এটি (নোংরা বা না)।

পাশের নোটে;

দীর্ঘ বিলম্বের জন্য শর্ট কাটগুলি তৈরি করে (পিপ্পিন)


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

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

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

8
যখন আমরা উদ্ধৃতি দিচ্ছি, আপনিও পছন্দ করতে পারেন "টেস্টিং উপস্থিতি দেখায়, বাগের উপস্থিতি দেখায় না" - এডজার ডিজজস্ট্রা
টিমোথি জোন্স

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

15

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

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


1
+1 নির্দেশ করার জন্য যে মানের প্রয়োজনের সিদ্ধান্তগুলি ব্যবসায়ের প্রয়োজন অনুসারে ন্যায়সঙ্গত হওয়া উচিত।
স্টিফেন গ্রস

+1 * এর জন্য "" নির্দিষ্ট প্রকল্পের জন্য 'পরিপূর্ণতা' কোন স্তরের ব্যবহার করা দরকার তা বোঝার জন্য বিকাশ করা দক্ষতা। "... আপনার সংস্থাটি কতটা" টুইট করা "বোধ করবে এটি একটি গ্রহণযোগ্য হবে বলে একটি ন্যূনতম মান নির্ধারণ করুন মানের ক্ষেত্রে ঝুঁকি, তারপরে এটি আটকে থাকুন।
এসরোবিন্স

11

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

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

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


1
অন্য কথায় বলতে গেলে - মডিউলগুলি প্রশ্নোত্তর হতে পারে তবে আর্কিটেকচারটি সঠিকভাবে পরিষ্কার হওয়া উচিত।
ক্রোমস্টার

9

আমি জানি একটি দ্রুত এবং নোংরা প্রোগ্রামার সম্পর্কে এখানে একটি গল্প।

আমি এমন একজনকে চিনি যা ইউনিটকে সময় নষ্টের জন্য পরীক্ষা করে দেখে। অনেক তর্ক করার পরে, শেষ পর্যন্ত তিনি একটি লিখেছিলেন। এটিতে && এবং || এর সাথে ছিটানো একটি দীর্ঘ পদ্ধতি রয়েছে এবং assertTrue এ একটি বুলিয়ান ফিরিয়েছে। বিবৃতিটি 20 টি লাইনে বিস্তৃত। তারপরে, তিনি এমন একটি ক্লাস লিখেছিলেন যেখানে প্রতিটি পদ্ধতির একটি লাইন থাকে এবং একটিতে প্রধান শ্বেতক্ষেত্র ছাড়া 1000 টিরও বেশি লাইন থাকে। এটি পাঠ্য প্রাচীর ছিল। আমি যখন তার কোডটি পর্যালোচনা করেছি এবং কিছু নতুন লাইন sertedোকালাম তখন তিনি 'কেন' জিজ্ঞাসা করলেন। আমি বলেছিলাম 'পঠনযোগ্যতার কারণে'। সে দীর্ঘশ্বাস ফেলে সেগুলি মুছে ফেলল। তিনি উপরে একটি মন্তব্য করেছিলেন "এটি স্পর্শ করবেন না, এটি কাজ করে!"

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

এছাড়াও, তিনি ভাবেন যে প্রোগ্রামিং বই এবং ব্লগ পড়া অকেজো। তিনি বলেন, 'শুধু প্রোগ্রামিং শুরু করুন'। তিনি 12 বছর ধরে এটি করেছেন এবং তিনি মনে করেন যে তিনি একজন দুর্দান্ত প্রোগ্রামার। / facepalm


আরও কিছু এখানে।

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


1
+1 টি। কোন কারণে আমি সেই গল্পগুলি পড়তে পছন্দ করি। তারা আমাকে আর দু: খিত বা রাগ করে না।
সাম হোচেভার

কোন ধরণের _______ ম্যানেজার ক্লাস লেখার জন্য -1।
ব্রায়ান ড্রস্কল

@SamHocevar পালাবে, দৌড়ানো না, thedailywtf.com করতে
Mawg

7

দ্রুত এবং নোংরা এড়ানোর বিষয়ে আমার পাঠটি যখন আমার কাছে এক বছরের কাজের মূল্য হিসাবে অনুমান করা হয়েছিল (কম-অনুমানযুক্ত) সরবরাহ করতে ছয় মাস ছিল। আমি কাজ শুরু করার আগে পদ্ধতিগুলি নিয়ে গবেষণা করার সিদ্ধান্ত নিয়েছি। শেষ পর্যন্ত আমি তিন মাস গবেষণা বিনিয়োগ করেছি এবং বাকী তিন মাসে সরবরাহ করতে সক্ষম হয়েছি।

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

একজন বিকাশকারী যখন আমি তাকে লাইব্রেরি কোড ব্যবহার করতে বলি তখন একটি উত্তর দেয়: "এটি কি প্রতারণা নয়? আমাকে স্কুলে আমার নিজের কোডটি লিখতে হয়েছিল।"


1
আপনি সেখানে পেয়েছেন বেশ নৈতিক বিকাশকারী!
স্টিফেন গ্রস

6

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

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


6

পণ্য জাহাজ।

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

হ্যাঁ, এটি একটি সাংগঠনিক ইস্যুতে এবং "কখনই ঘটবে না"। তবে আপনি যদি এমন কোনও সংস্থায় কোড লেখার কথা বলে থাকেন যা দুর্বলভাবে পরিচালনা করা এবং ভারী ডেডলাইন চালিত, পৃথক প্রোগ্রামার স্তরে কারও বিকল্পগুলি সীমিত।


5

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

আমি ব্যক্তিগতভাবে "নোংরা কোড লেখার" দক্ষতা বিকাশের এবং এর সঠিকতা সম্পর্কে আত্মবিশ্বাসী হওয়ার লক্ষ্য রাখি না। আমি বরং প্রথমে যথাযথ কোড লিখব।


5

তারা কীভাবে জানবে যে তারা এটি সঠিকভাবে পেয়েছে? পরীক্ষা সহজ উত্তর।

যদি তাদের কোডটি কোনও ভাল কিউএ দল দ্বারা ভালভাবে পরীক্ষা করে থাকে এবং এটি পাস হয়ে যায়, তবে আমি বলব যে তারা এটি সঠিকভাবে পেয়েছে।

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

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

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

অবশ্যই এই চিত্রটি দেখায় যে কেউ দ্রুত এবং নোংরা কোডের বিপদকে হ্রাস করা উচিত নয়! এখানে চিত্র বর্ণনা লিখুন


4

আমি মনে করি না যে আপনারও সেই রাস্তা দিয়ে নামা শুরু করা উচিত। দ্রুত এবং নোংরা আপনাকে দ্রুত শেষ করার অস্থায়ী সুবিধা দিতে পারে তবে শেষ পর্যন্ত এটি করার জন্য আপনি সর্বদা দশগুণে অর্থ প্রদান করেন।


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

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

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

1
আপনার পছন্দ মত সব চেয়ে পৃথক করতে অনুরোধ করুন, তবে ইতিহাস এমন উদাহরণগুলির সাথে পূর্ণ যেখানে সঠিক সময়ে সেখানে উপস্থিত থাকা, যারাই এটি চেয়েছিল, এটি সর্বোত্তম সম্ভাব্য পণ্য হওয়ার চেয়ে গুরুত্বপূর্ণ ছিল। সর্বদা একটি সুযোগ ব্যয় হয়, সর্বদা।
ওয়ারেন পি

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

4

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

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

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


3

আমার নতুন কোডটি খুব নোংরা হলে সঠিক কিনা তা আমি বলতে পারি না।

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

নোংরা কোডটি ভঙ্গুর - আপনি এটি পরীক্ষা করতে পারেন এবং জানেন যে এটি এখন কাজ করে তবে এটি একটি দুর্দান্ত বেট যা ভবিষ্যতে কোনও কোনও মুহুর্তে এটি ভেঙে ফেলবে (বা অন্যথায় এটি ভাঙার ভয়ে সবাইকে ডিমের ঘাড়ে চলতে বাধ্য করুন)।


3

কিছুটা বিতর্কিত শোনার ঝুঁকিতে, আমি যুক্তি দিয়ে বলছি যে কেউই সত্যই জানেন না যে তাদের কোডটি 100% সঠিক এবং 100% ত্রুটি ছাড়াই রয়েছে। এমনকি যখন আপনার সত্যিকারের ভাল পরীক্ষার কভারেজ রয়েছে এবং আপনি কঠোরভাবে ভাল বিডিডি / টিডিডি অনুশীলনগুলি প্রয়োগ করছেন তখনও আপনি এখনও এমন কোড বিকাশ করতে পারেন যাতে ত্রুটি রয়েছে এবং হ্যাঁ এতে পার্শ্ব-প্রতিক্রিয়াও থাকতে পারে!

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

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


2

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


2

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

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


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

0

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

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

2-) প্রকল্পটি একটি অনুকূল সমাধান হিসাবে পরিচিত হয়ে ওঠে এবং এটির সমাধানটি নতুন সমাধানের মতো ব্যয়বহুল একটি নতুন সমাধান বা রিফ্যাক্টরিংয়ের পক্ষে নিরুৎসাহিত হতে শুরু করে।

আপনার পক্ষে সেরা কোডটি করার জন্য সর্বদা চেষ্টা করুন। আপনার যদি পর্যাপ্ত সময় না থাকে তবে আপনার আরও কেন প্রয়োজন তা ব্যাখ্যা করুন। খারাপভাবে তৈরি কাজের সাথে নিজেকে ঝুঁকির মধ্যে ফেলবেন না। সর্বদা একটি ভাল পেশাদার হন। আপনি যুক্তিসঙ্গত হলে কেউ আপনাকে এর জন্য শাস্তি দিতে পারে না। যদি তারা করে তবে এটি আপনার কাজ করা উচিত নয়।


0

সিনিয়রদের সাথে আলোচনা করুন এবং ব্যর্থতার প্রভাব যদি হয় তবে তা মূল্যায়ন করুন। উদাহরণস্বরূপ এমন পরিস্থিতি যেখানে আপনি মলিনতা ঠিক করতে পারেন 1 দিন সময় লাগে এবং একটি শক্তিশালী কোডের জন্য ডিজাইন এবং আর্কিটেকচারাল পরিবর্তন প্রয়োজন যা ডিজাইন পরিবর্তনের ফলে প্রভাবিত হওয়া সমস্ত কর্মপ্রবাহগুলি সম্পূর্ণরূপে বৈধ করতে 4-6 মাস + অতিরিক্ত বৈধতা সময় নিতে পারে।

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

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


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