ডিবাগিংয়ে কীভাবে কম সময় ব্যয় করবেন? [বন্ধ]


15

পেরেটো নিয়ম অনুসরণ করে একজন প্রোগ্রামার তার 20% সময় সত্যিই দরকারী জিনিসগুলির জন্য ব্যয় করে।

আমি আমার সময়টির ৮০% ডিবাগ করতে ব্যয় করি, সমস্ত কিছু কাজ করার জন্য ছোট জিনিস স্থির করে।

ডিবাগিং কম সময় ব্যয় করার কোন উপায় আছে কি?


9
আমি নিশ্চিত নই যে আমি কীভাবে পেরেটো নীতিটি ব্যাখ্যা করব।
সি_মেকার

6
<meme> টিডিডি একবার দেখুন </ </ মেম>
স্টুপার ইউসার

1
আপনি আসলে আমাদের কি করতে কি যখন ডিবাগ?

3
বিশদে আপনার মনোযোগের জন্য আপনাকে আরও বেশি সময় ব্যয় করতে হবে

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

উত্তর:


5

মধ্যে Code Agda বা Coq । আপনার কোডটি সংকলিত হয়ে গেলে এটি কার্যকর হবে। যদি এটি খুব কঠোর হয় তবে দুর্বল টাইপ সিস্টেমের সাথে একটি ভাষা চয়ন করুন, যেমন, হাস্কেল বা এফ #।

তবে তবুও, বেশিরভাগ ক্ষেত্রে আপনি আপনার সময়কালের 20% কোডিংয়ে এবং 80% টেস্টিং এবং ডিবাগিংয়ে ব্যয় করতে পারেন। এক সপ্তাহের 100% এক ঘন্টার 20% এরও বেশি। যদি ডিবাগিং আপনার জিনিসগুলি করা দরকার তবে ডিবাগ করা সময়ের অপচয় নয় এবং এই অনুপাতটিকে "উন্নত" করার জন্য আপনাকে বিরক্ত করা উচিত নয়।


1
কিছু রান করার কারণে এটির বাগ নেই doesn't কোডগুলি প্রায়শই ভুল কাজটি করায় ফলাফল হয়।
এইচএলজিইএম

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

2
@ এইচএলজিইএম, তারপরে আপনার "ডিবাগিং" ধারণাটি বেশ সৃজনশীল এবং মূল ধারা থেকে অনেক দূরে। এবং যাইহোক, এই পদ্ধতির সাথে কোডিং এবং "ডিবাগিং" এর মধ্যে একটি অনুপাত 20/80 থেকে অনেক দূরে। সুতরাং দয়া করে, আপনার ডাউনটোটটি ব্যাখ্যা করে মনে রাখুন।
এসকে-যুক্তি

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

1
@ uhbif19 নূথকে বলতে গিয়ে রসাত্মক হওয়া উচিত। তুমি জানো সে আসলে কী বোঝাতে চেয়েছিল?
ফিল

44

অংশ পরিক্ষাকরণ.

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

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


আমি ইউনিট-টেস্ট ব্যবহার করি এবং আপনার সাথে সম্পূর্ণ সম্মত। তবে, আমি সব কিছু পরীক্ষা করতে পারি না।
uhbif19

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

8
@ ফ্রেড্রিক, আপনি সঠিকভাবে এমনকি a + bকোডের টুকরো পরীক্ষা করতে পারবেন না (যদি না আপনার পরীক্ষাটি আপনার গাণিতিক ডেটা ধরণের পুরো পরিসীমাটি কভার করে না)।
এসকে-যুক্তি

"একটি ডিবাগিং সেশনের পরে আমি কোডটি ঠিক করেছি" " - সত্যি? আমি মনে করি একটি ডিবাগিং সেশনের পরে আমি আরও বেশি বাগ প্রবর্তন করেছি - তারা কোথায় তা আমি জানি না।
বি সেভেন

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

5
ঠিক - কোন একক অনুশীলন (যেমন ইউনিট পরীক্ষা) প্রস্থের উন্নতির একটি আদেশ দেবে না তবে অনুশীলনের সংমিশ্রণটি করতে পারে। অন্য কথায় ... সিলভার বুলেট নেই।
মাইকেল

আমি টিডিডি যোগ করব (যেখানে সম্ভব)।
টম

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

1
@ জানহুদেক রিফ্যাক্টরিং + ক্লিন কোড + টেস্টস = টিডিডি
টম

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

8

ইউনিট টেস্টিং আশাবাদী হিসাবে সহায়তা করবে যদি আপনি বাগ প্রবর্তন করেন তবে তারা আপনার প্রোডাকশন কোডের আগে ভেঙে যাবে - ভাল লিখিত ইউনিট পরীক্ষাগুলি আপনাকে ঠিক কী ভেঙে গেছে তাও জানিয়ে দেবে।

এটি আপনাকে বেশিরভাগ উপায়ে পেয়ে যাবে তবে 99.999% প্রকল্পের জন্য আপনাকে এখনও সময় সময় থেকে জিনিসগুলি ডিবাগ করতে হবে। এখানে সবচেয়ে ভাল জিনিসটি আমি খুঁজে পেয়েছি 4 টি কাজ করা:

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

6

আমার ৮০% ডিবাগ। আমি সাধারণ বাগগুলি ঠিক করছি এবং সমস্ত কাজ করার চেষ্টা করছি।

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

শেষে, আপনি সম্ভবত জটিল বাগগুলি ডিবাগ করার জন্য 80% ব্যয় করবেন।


6

ডিবাগিংয়ে কীভাবে কম সময় ব্যয় করবেন? কম কোড লিখুন।

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


4

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


3

আপনার কোডটি সংকলনের আগে সাবধানে পড়ুন। সিনট্যাক্স এবং কার্যকারিতা জন্য খুব যত্নশীল পড়া। এটি আশ্চর্যজনকভাবে তথ্যবহুল হতে পারে এবং কোডের একটি বিভাগ খুব জটিল হলে এটিও একটি ভাল সূচক।


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

3

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

  • আপনার সংস্করণ নিয়ন্ত্রণ সফ্টওয়্যার কীভাবে ব্যবহার করবেন তা জানুন।

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

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

    • একসাথে একাধিক জিনিস পরিবর্তন করবেন না অন্যথায় যদি আচরণ পরিবর্তন হয় তবে আপনি জানেন না যে কোন পরিবর্তনটি আচরণের পরিবর্তনের কারণে ঘটেছে।
    • আপনার অনুমান যাচাই করুন।

2

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

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


2

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


1
আপনার "বেশিরভাগ বাগগুলি এসেছে ..." জোর দেওয়া ভাল লাগছে, তবে আপনার কি এটির ব্যাক আপ করার প্রমাণ রয়েছে? আমি মনে করি এটি যদি সমানভাবে বিশ্বাসযোগ্য হয় তবে আমি বললাম "বেশিরভাগ বাগগুলি নির্দিষ্টভাবে নির্দিষ্ট প্রয়োজনীয়তার কারণে বা পরিষ্কার নকশার অভাব থেকে আসে come" আপনার বক্তব্য সমর্থন করে এমন গবেষণার জন্য আপনার একটি লিঙ্ক বা উদ্ধৃতি যুক্ত করা উচিত।
কালেব

2

আমাকে সম্প্রতি এই সমস্যায় অনেকটা চিন্তাভাবনা দেওয়া হয়েছে - এর সহজ উত্তরটি ডোন নরমানের ডিজাইনের রোজকার জিনিসগুলি পড়ুন; কোডটি লিখুন যেমন আপনি কোনও পণ্য ডিজাইন করেন।

প্যারাফ্রেজ করতে, ভাল ডিজাইন ত্রুটি হ্রাস করে। তার অর্থ, কয়েকটি জিনিস, যার বেশিরভাগ আপনি ইতিমধ্যে করেছেন (যদিও আপনি ঠিক জানেন না কেন )।

নাম স্বজ্ঞাতভাবে ফাংশন। এটি আনুষ্ঠানিকভাবে সাধ্য হিসাবে পরিচিত। এটি, একটি বোতাম টিপতে হবে, একটি লিভারকে সুইচ করতে হবে, একটি হ্যান্ডেল টেনে তোলা হবে ইত্যাদি ords

-যুদ্ধ কোড লিখতে কষ্ট করুন। খারাপ ইনপুট পরীক্ষা করুন এবং তত দ্রুততার পরে ত্রুটিগুলি নিক্ষেপ করুন, উপযুক্ত হলে অ্যাপস হানি ব্যবহার করুন ইত্যাদি এগুলিকে লকআউট ফাংশন বলে called

উপযুক্ত যেখানে অ্যাবস্ট্রাকশন ব্যবহার করুন। স্বল্প-মেয়াদী স্মৃতি দুর্বল is

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

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

আমি নিশ্চিত যে আমি আরও অনেক নীতি মিস করছি, তবে মূল বিষয়টি হচ্ছে, ত্রুটির জন্য ডিজাইনিংয়ের বিষয়টি পড়ুন।


1

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


1

আমি উপরে উল্লিখিত ইউনিট পরীক্ষার সম্পূর্ণ সমর্থন করি, তবে টিডিডি বা বিডিডি আপনার পক্ষে মূল্য এবং সমস্যাটির সমাধান সম্পর্কে প্রথমে চিন্তা করা দরকার।

তবে ব্যক্তিগতভাবে আমার জন্য, কয়েক মিনিট সময় নিঃশব্দে বসে এবং সমস্যাটি সম্পর্কে কীভাবে চিন্তা করা যায় এবং কীভাবে এটির কাছে আসা যায় এবং প্রতিটি পদ্ধতির সাথে কোনও প্রো-ও কনস কীভাবে আমার কোডের মানটির জন্য বিস্ময়কর কাজ করে এবং আমার বিশৃঙ্খলার বিষয়টি পরিষ্কার করতে সহায়তা করে।

কখনও কখনও কাগজের টুকরোতে দ্রুত স্ক্রিবল আপনাকে ধাঁধাটির বৃহত সংযুক্ত অংশগুলি দেখতে সহায়তা করে।

আমি সবচেয়ে খারাপ কোডটি লিখি যখন আমি প্রথমে মাথায় ডুব দিয়ে কীবোর্ডটি পাউন্ড করি। কিছুটা চিন্তাভাবনা এবং মনন এক পার্থক্য তৈরি করে তোলে।

পুনশ্চ. আমার অর্থ 5 সম্ভবত দশ মিনিট, একটি বিশাল চপ লিখতে ঘন্টা নয়।


1

ইতিমধ্যে কিছু ভাল উত্তর, অন্যেরা যা বলেছে তার সংযোজন করার জন্য কেবল আরও কিছু খাবার।

আপনার ভুল থেকে শিখুন। বার বার একই জিনিসগুলি বানাবেন না।

প্রোগ্রামিং করার সময় প্রান্তের কেসগুলি নিশ্চিত করার বিষয়টি নিশ্চিত করুন - এগুলি এমন জায়গা যেখানে ঘন ঘন বাগ থাকে।

প্রয়োজন মনোযোগ দিন। এমনকি যদি এটি কাজ করে তবে প্রয়োজনীয়ত যা নির্দিষ্ট করে তা না করে তবে এটি একটি বাগ।

এখন থেকে ছয় মাস অন্তর কিছু ভুল হয়ে গেলে ব্যতিক্রম লগগুলি সত্যিকারের সহায়ক হতে পারে। ব্যতিক্রম রেকর্ড করার অভ্যাসে থাকুন।


0

আমার দুটি শীর্ষ ধারণা হ'ল 1) আরও ভাল কোড লিখুন যা আপনি যখন অপ্রত্যাশিত কিছু করেন তখন ব্যর্থ হবে 2) ডিবাগিংয়ে আরও ভাল হয়ে উঠুন

আমার কোড দিয়ে ফাঁকা আছে

if(value!=null) throw new NotImplementedException();
if(obj.v>0) throw new Exception(); //sometimes i dont write NotImplementedException
if(value=="thing") throw ...;

আমি যখনই কোডটির এই টুকরোগুলি কার্যকর করি তখন ব্যতিক্রম ছুঁড়ে ফেলা হয় যার ফলে ডিবাগারটি বন্ধ হয়ে যায় যা আমাকে নতুন বৈশিষ্ট্যগুলিতে কোড করতে দেয় বা শর্তগুলি এড়াতে দেয় তবে কী ঘটছে সে সম্পর্কে বিভ্রান্ত হয়ে পড়ে / বাগ থাকে

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

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