কারও নিখুঁত নয়, এবং আমরা যাই করি না কেন, আমরা সময় সময় সময়ে এতে বাগ থাকা কোড তৈরি করতে চলেছি। নতুন সফ্টওয়্যার লেখার সময় এবং বিদ্যমান কোডটি পরিবর্তন / রক্ষণাবেক্ষণ করার সময় আপনার তৈরি বাগের সংখ্যা হ্রাস করার জন্য কিছু পদ্ধতি / কৌশল কী কী?
কারও নিখুঁত নয়, এবং আমরা যাই করি না কেন, আমরা সময় সময় সময়ে এতে বাগ থাকা কোড তৈরি করতে চলেছি। নতুন সফ্টওয়্যার লেখার সময় এবং বিদ্যমান কোডটি পরিবর্তন / রক্ষণাবেক্ষণ করার সময় আপনার তৈরি বাগের সংখ্যা হ্রাস করার জন্য কিছু পদ্ধতি / কৌশল কী কী?
উত্তর:
অভিনব কোডিং এড়িয়ে চলুন। কোডটি যত জটিল হবে তত বেশি বাগ রয়েছে। সাধারণত আধুনিক সিস্টেমে, স্পষ্টভাবে লিখিত কোডটি দ্রুত এবং যথেষ্ট ছোট হবে।
উপলব্ধ গ্রন্থাগারগুলি ব্যবহার করুন। কোনও ইউটিলিটি রুটিন লেখার জন্য বাগ না রাখার সহজ উপায় হ'ল এটি না লিখে।
আরও জটিল স্টাফের জন্য কয়েকটি আনুষ্ঠানিক কৌশল শিখুন। জটিল পরিস্থিতি থাকলে, তাদের কলম এবং কাগজ দিয়ে পেরেক দিন। আদর্শভাবে, কিছু প্রমাণ কৌশল জানুন। আমি যদি কোডটি সঠিক প্রমাণ করতে পারি তবে বড়, বোবা, সুস্পষ্ট বাগ বাদে এটি প্রায়শই ভাল that স্পষ্টতই, এটি কেবল এতদূর চলে যায় তবে কখনও কখনও আপনি আনুষ্ঠানিকভাবে ছোট কিন্তু জটিল জিনিসগুলি সম্পর্কে तर्क করতে পারেন।
বিদ্যমান কোডের জন্য, কীভাবে রিফ্যাক্টর করতে হয় তা শিখুন: কোডটিতে কীভাবে ছোট পরিবর্তন করা যায়, প্রায়শই একটি স্বয়ংক্রিয় সরঞ্জাম ব্যবহার করা হয় যা আচরণটি পরিবর্তন না করেই কোডটিকে আরও পঠনযোগ্য করে তোলে।
খুব তাড়াতাড়ি কিছু করবেন না। জিনিসগুলি ঠিকঠাক করার জন্য সামনের দিকে কিছুটা সময় নেওয়া, আপনি কী করেছেন তা যাচাই করার জন্য এবং আপনি কী করছেন সে সম্পর্কে চিন্তাভাবনা করার পরে পরে বড় সময় দেওয়া যায়।
একবার আপনি কোডটি লিখেছেন, এটি ভাল করার জন্য যা পেয়েছেন তা ব্যবহার করুন। ইউনিট পরীক্ষা দুর্দান্ত। আপনি প্রায়শই সময়ের আগে পরীক্ষাগুলি লিখতে পারেন, যা দুর্দান্ত প্রতিক্রিয়া হতে পারে (যদি ধারাবাহিকভাবে করা হয় তবে এটি পরীক্ষা-চালিত উন্নয়ন)। সতর্কতা বিকল্পগুলির সাথে সংকলন করুন এবং সতর্কতাগুলিতে মনোযোগ দিন।
কোডটি দেখার জন্য অন্য কাউকে পান। আনুষ্ঠানিক কোড পর্যালোচনাগুলি ভাল, তবে এটি কোনও সুবিধাজনক সময়ে নাও হতে পারে। অনুরোধগুলি টানুন বা অনুরূপ করুন, যদি আপনার স্কেম এগুলি অ্যাসিক্রোনাস রিভিউগুলির অনুমতি দেয় না। বাডি চেকিং কম আনুষ্ঠানিক পর্যালোচনা হতে পারে। জুড়ি প্রোগ্রামিং দুটি জোড় চোখ সবকিছুর দিকে নজর দেয় তা নিশ্চিত করে।
ইউনিট পরীক্ষাগুলি আপনাকে দ্বিতীয়বারের মতো পপ আপ হওয়া বাগের সংখ্যা হ্রাস করতে দেয়। আপনি যদি আপনার কোডটিতে কোনও ত্রুটি খুঁজে পান তবে একটি ইউনিট পরীক্ষা লিখলে তা নিশ্চিত হয়ে যায় যে এটি পরে আসে না। (প্লাস, সমস্ত মামলার কথা চিন্তা করে এবং কয়েক হাজার ইউনিট পরীক্ষা সামনে রেখে লেখা কখনও কখনও করা খুব কঠিন)
উভয় ইউনিট পরীক্ষার মন্তব্যে +1।
এর বাইরে আপনার সংকলক অফারের সর্বোচ্চ সতর্কতা স্তর নির্ধারণ করুন এবং সতর্কতাগুলি ত্রুটি হিসাবে বিবেচিত হবে তা নিশ্চিত করুন। বাগগুলি প্রায়ই এই "ভুল" ত্রুটিগুলিতে লুকিয়ে থাকে।
একইভাবে, স্থির বিশ্লেষণ সরঞ্জামগুলিতে বিনিয়োগ করুন যা সংকলন সময়ে চালিত হয় (আমি এগুলি সংকলক সতর্কতার অতিরিক্ত স্তরের হিসাবে দেখি)।
যা উল্লেখ করা হয়েছে তা ছাড়াও:
এই মুহুর্তে আমি প্রচুর অন্যান্য জিনিস ভুলে যাচ্ছি তবে অন্যরা অবশ্যই সেগুলি ভেবে দেখবে। :)
আমি আমার প্রাথমিক ভাষা সি ++ এবং পাইথন হয়েও প্রোগ্রামিংয়ের বেশ কার্যকরী স্টাইল তৈরি করেছি। আমি দেখতে পেয়েছি যে আমি যদি কোনও ফাংশন (বা পদ্ধতি) এর সমস্ত প্রসঙ্গটি পাস করি তবে সেই ফাংশনটির কাজটি করা দরকার, এবং আমি যে অর্থবহ ডেটা সন্ধান করছি তা ফিরিয়ে দিলে আমার কোডটি আরও শক্তিশালী হয়ে উঠেছে।
অন্তর্নিহিত অবস্থা শত্রু এবং আমার অভিজ্ঞতাতে # 1 বাগের উত্স। এই রাষ্ট্রটি গ্লোবাল ভেরিয়েবল বা সদস্য ভেরিয়েবল হতে পারে তবে ফলাফল যদি এমন কোনও কিছুর উপর নির্ভরশীল যা আপনি সমস্যার জন্য জিজ্ঞাসা করছেন সেই ফাংশনে পাস হয়নি। স্পষ্টতই রাষ্ট্রটি নির্মূল করা সম্ভব নয়, তবে এটি হ্রাস করার ফলে প্রোগ্রামের নির্ভরযোগ্যতার উপর বিশাল ইতিবাচক প্রভাব রয়েছে।
আমি আমার সহকর্মীদের এটিও বলতে চাই যে প্রতিটি শাখা (যদি, এর জন্য, তবে? :) সম্ভবত একটি বাগ রয়েছে। আমি বাগের প্রকাশটি কী হতে পারে তা বলতে পারি না তবে আপনার কোডটি যত কম শর্তযুক্ত আচরণ করবে, কেবল কার্যকর করার সময় কোড কভারেজটি আরও ধারাবাহিক হবে এই কারণে বাগ বাগ মুক্ত হওয়ার সম্ভাবনা তত বেশি।
পরিসংখ্যান যান, এই সমস্ত কিছু এছাড়াও কর্মক্ষমতা উপর ইতিবাচক প্রভাব আছে। উইন!
ইউনিট টেস্টিং এবং সরঞ্জাম সম্পর্কিত কিছু দুর্দান্ত উত্তর। আমি কেবল তাদের সাথে যুক্ত করতে পারি এটি হ'ল:
যত তাড়াতাড়ি সম্ভব আপনার পরীক্ষকদের জড়িত করুন
আপনার যদি একটি পরীক্ষা দল থাকে তবে তাদের আপনার কোডের মানের জন্য গেটকিপার হিসাবে বিবেচনা করার এবং আপনার জন্য আপনার ত্রুটিগুলি ধরার ফাঁদে পড়বেন না। পরিবর্তে, তাদের সাথে কাজ করুন এবং যত তাড়াতাড়ি সম্ভব তাদেরকে জড়িত করুন (চটজলদি প্রকল্পগুলিতে এটি প্রকল্পের সূচনা থেকেই হবে, তবে আমরা যদি সত্যি চেষ্টা করি তবে আমরা সবসময় তাদের জড়িত করার উপায়গুলি খুঁজে পেতে পারি)।
আপনার পরীক্ষকদের সাথে একটি ভাল কাজের সম্পর্ক থাকার অর্থ হ'ল তারা যে কোনও ক্ষতি করতে পারে তার আগেই আপনি খারাপ ধারণা এবং ত্রুটিগুলি খুব তাড়াতাড়িই ধরতে পারেন। এর অর্থ এটিও হ'ল পরীক্ষকরা যখন পণ্যগুলির নকশাটি ঠিক করার সময় আসবে এবং ব্যবহারের বিষয়গুলি ধরতে সহায়তা করতে সক্ষম হবেন।
স্ট্যাটিক বিশ্লেষণ সরঞ্জাম
ফাইন্ডব্যাগের মতো প্লাগইন এবং অ্যাপ্লিকেশনগুলি আপনার কোড ক্রল করে এবং সম্ভাব্য বাগ রয়েছে এমন জায়গাগুলি সন্ধান করে । স্থানগুলি যেখানে ভেরিয়েবলগুলি আরম্ভ করা হয় না এবং ব্যবহৃত হয় না বা কেবল ক্রেজি জিনিস যা 10 এর মধ্যে 9 বার হয়, বাগগুলি সহজেই উত্থিত হয়। এই জাতীয় সরঞ্জামগুলি আমার হাড়ের মাথায় রাস্তায় নামতে এমনকি যদি এটি কোনও ত্রুটি নাও হয় তবে প্রতিরোধ করতে সহায়তা করে।
পিএস: কোনও সরঞ্জাম আপনাকে কিছু খারাপ বলে কেন সবসময় তা গবেষণা করতে ভুলবেন না। শিখতে কখনই ব্যাথা দেয় না (এবং সব পরিস্থিতিতে সব কিছু ঠিক থাকে না)।
কোড পরিদর্শন বা পিয়ার পর্যালোচনার অন্যান্য ফর্মগুলি যেমন জোড় প্রোগ্রামিং।
কাঠামোগত কোড পর্যালোচনা যেমন ফাগান পরিদর্শন ইউনিট পরীক্ষার মতো কমপক্ষে কার্যকর এবং দক্ষ হতে পারে এবং এমনকি কিছু ক্ষেত্রে ইউনিট পরীক্ষার চেয়ে আরও ভাল প্রমাণিত হয়েছে। সফ্টওয়্যার লাইফসাইকেলে এবং কোড ব্যতীত অন্য শিল্পকর্মগুলির সাথেও পরিদর্শনগুলি ব্যবহার করা যেতে পারে।
কার্ল উইগার্স সফ্টওয়্যার-এর পিয়ার রিভিউস এই বিষয়টির একটি দুর্দান্ত বই।
এখানে অন্যান্য সমস্ত পরামর্শের পাশাপাশি, সম্ভাব্য সমস্ত সতর্কতাগুলি সর্বোচ্চ সংবেদনশীলতার স্তরে চালু করুন এবং তাদের ত্রুটি হিসাবে বিবেচনা করুন। ভাষাতে যে কোনও আবরণ সরঞ্জাম ব্যবহার করুন।
সতর্কবাণী দ্বারা কতগুলি সাধারণ ভুল ধরা পড়তে পারে এবং এই সাধারণ জিনিসগুলির মধ্যে কতটি আপনার কোডের বাস্তব বাগগুলিতে অনুবাদ করে তা দেখে আপনি অবাক হয়ে যাবেন।
এখানে অনেক ভাল উত্তর, তবে কয়েকটি জিনিস আমি যুক্ত করতে চেয়েছিলাম। আপনি প্রয়োজনীয়তাটি আসলে বুঝতে পেরেছেন তা নিশ্চিত করুন। আমি প্রচুর বাগ দেখেছি যখন ব্যবহারকারী ভেবেছিল প্রয়োজনীয়তার অর্থ এক্স এবং প্রোগ্রামার ভেবেছিল এটি ওয়াই বোঝায়। দুর্বল বা অস্পষ্ট প্রয়োজনীয়তার বিষয়ে স্পষ্টতার জন্য পিছনে চাপুন। আমি জানি যে আমরা সবাই ঝাঁপিয়ে পড়ে কোড করতে চাই তবে বোঝার বিষয়টি নিশ্চিত করতে যত বেশি সময় ব্যয় করা হবে ততই কম কাজ এবং বাগ ফিক্সিং হবে।
আপনি যে ব্যবসায়টি সমর্থন করছেন সে সম্পর্কে জানুন, আপনি প্রায়শই প্রয়োজনীয় জিনিসগুলি দেখতে পাবেন যা নিখোঁজ রয়েছে বা তার পরে আরও ব্যাখ্যাের প্রয়োজন রয়েছে। জেনে রাখুন যে আপনি ওয়াইড অনুযায়ী বলেছেন হিসাবে এটি করা থাকলে, এটি বিদ্যমান বৈশিষ্ট্য Z টি ভেঙে দেবে
আপনার ডাটাবেস কাঠামো বুঝতে। অনেকগুলি বাগ একটি ক্যোয়ারির ফলস্বরূপ যা সিনথেটিকভাবে সঠিক, তবে ভুল ফলাফল প্রদান করে। আপনার ফলাফলগুলি মজাদার দেখলে কীভাবে সনাক্ত করবেন তা শিখুন। যদি আমি একটি জটিল রিপোর্টিং কোয়েরি লিখছি, আমার ফলাফলগুলি যাওয়ার জন্য প্রস্তুত হিসাবে চিহ্নিত করার আগে আমি সর্বদা আমার প্রযুক্তি পর্যায়ের বিশেষজ্ঞের কাছে পর্যালোচনা করি, তারা অবশ্যম্ভাবীভাবে আমার যে ডেটাটি মিস করেছে তার কিছু দেখতে পাবে। তারপরে তারা কী ধরেছিল তা নিজের কাছে নোট তৈরি করুন এবং মনে রাখবেন যে পরের বার আপনি কিছু অনুরূপ করেন।
আমি মনে করি সবচেয়ে গুরুত্বপূর্ণ কৌশল আপনার সময় লাগতে । আপনি যদি মনে করেন একটি নতুন মডিউল কোড করার জন্য আপনার দু'দিন প্রয়োজন, তবে আপনি বসকে কেবল একদিনেই কোড করতে বাধ্য করেন ... আপনার কোডটি সম্ভবত আরও বগী হবে।
আমি যে বইগুলি কিছুক্ষণ আগে পড়েছিলাম তার মধ্যে একটি বলেছিল যে আপনি ভাঙা উইন্ডো নিয়ে বাঁচবেন না , কারণ অন্যের ভাঙ্গা পড়লে লোকেরা চিন্তা করবে না ... কোডিং একই, খারাপ কিছু করার ক্ষেত্রে সবার প্রথমে যত্ন নেওয়া হবে তবে দ্রুত , তবে কেউ প্রচুর বাগ এবং খুব দুর্বল ডিজাইন এবং স্টাইল সহ একটি নরক কোড সম্পর্কে চিন্তা করবে না।
ব্যবহারের কোড পরিদর্শন সরঞ্জাম মত ReSharper বা মত IDEs IntelliJ ধারণা যে সম্পর্কে অনেক কপি-এবং-পেস্ট যেমন ভেরিয়েবল যে প্রতি নির্দেশ করে বাগ এবং অন্যদের "লেখা হয়, কিন্তু কখনও পড়া" সতর্ক। আমাকে অনেক সময় বাঁচিয়েছে।
আশ্চর্যের বিষয় হল, নিম্নলিখিত তিনটি অত্যন্ত গুরুত্বপূর্ণ বিষয় এখনও উল্লেখ করা হয়নি:
উদার উদারতা ব্যবহার করুন। আপনার যে প্রশ্নটি সর্বদা নিজেকে জিজ্ঞাসা করা উচিত তা হ'ল "আমি কি এটিকে জোর দেওয়া উচিত?" তবে "আমি এমন কিছু বলতে চাই যা ভুলে যেতে ভুলে গেছি?"
অপরিবর্তনীয়তা বেছে নিন। (চূড়ান্ত / পঠনযোগ্যভাবে উদারভাবে ব্যবহার করুন)) আপনার যত কম পরিবর্তনযোগ্য অবস্থা হবে, তত কম জিনিস ভুল হতে পারে।
অকালে অপ্টিমাইজ করবেন না। অনেক প্রোগ্রামার পারফরম্যান্স উদ্বেগের দিকে নজর রাখেন, যার ফলে তাদের অহেতুক তাদের কোডটি দৃolute়ভাবে তৈরি করা এবং পারফরম্যান্স কোনও সমস্যা হয়ে যাচ্ছে কিনা তা আগেই জেনেও তাদের নকশাগুলিকে জারজ করে তোলে। প্রথমে, আপনার সফ্টওয়্যার পণ্যটি একাডেমিক উপায়ে তৈরি করুন, কর্মক্ষমতা উপেক্ষা করে; তারপরে, দেখুন এটি খারাপভাবে সম্পাদন করে কিনা; (এটি সম্ভবত তা করবে না)) যদি কোনও কার্য সম্পাদনের সমস্যা থাকে তবে এমন দুটি বা দুটি জায়গা সন্ধান করুন যেখানে আপনি দুর্দান্ত এবং আনুষ্ঠানিক অ্যালগরিদমিক অপ্টিমাইজেশান সরবরাহ করতে পারবেন যা আপনার পণ্যটিকে টুইট কোডিং এবং আপনার সম্পূর্ণ কোড বেসকে হ্যাক করার পরিবর্তে তার কার্য সম্পাদনের প্রয়োজনীয়তাগুলি পূরণ করবে meet এখানে এবং সেখানে ঘড়ির চক্রগুলি গ্রাস করুন।