আমি আমার মন্তব্যগুলিকে উত্তরে প্রসারিত করছি কারণ আমি মনে করি যে নির্দিষ্ট সমস্যার কিছু দিক হয় উপেক্ষা করা হচ্ছে, বা ভুল উপসংহার টানতে ব্যবহৃত হয়েছিল।
এই মুহুর্তে, রিফ্যাক্টরটি করা উচিত কিনা তা অকালিক (যদিও এটি সম্ভবত 'হ্যাঁ'র একটি নির্দিষ্ট ফর্মের দ্বারা উত্তর দেওয়া হবে)।
এখানে কেন্দ্রীয় সমস্যাটি হ'ল (কিছু উত্তরে হিসাবে উল্লিখিত) আপনি যে মন্তব্যগুলি উদ্ধৃত করেছেন তা দৃ strongly়ভাবে নির্দেশ করে যে কোডটিতে জাতি শর্ত বা অন্যান্য সম্মতি / সিঙ্ক্রোনাইজেশন সমস্যা রয়েছে, যেমন এখানে আলোচনা করা হয়েছে । এগুলি বেশ কয়েকটি কারণে বিশেষত কঠিন সমস্যা। প্রথমত, যেমনটি আপনি পেয়েছেন, আপাতদৃষ্টিতে সম্পর্কিত নয় এমন পরিবর্তনগুলি সমস্যাটিকে ট্রিগার করতে পারে (অন্যান্য বাগগুলিতেও এটি কার্যকর হতে পারে তবে একযোগে ত্রুটিগুলি প্রায়শই ঘটে থাকে)) দ্বিতীয়ত, এগুলি নির্ণয় করা খুব কঠিন: বাগটি প্রায়শই এমন জায়গায় উদ্ভাসিত হয় যা কারণ থেকে সময় বা কোড থেকে দূরে এবং আপনি এটি নির্ণয়ের জন্য যা কিছু করেন তা এটি দূরে যেতে পারে ( হাইজেনব্যাগস))। তৃতীয়ত, কনকুরঞ্জি বাগগুলি পরীক্ষায় খুঁজে পাওয়া খুব শক্ত। আংশিকভাবে, এটি মিশ্রিত বিস্ফোরণের কারণে: এটি সিক্যুয়াল কোডের পক্ষে যথেষ্ট খারাপ, তবে সমবর্তী সম্পাদনের সম্ভাব্য আন্তঃব্যবস্থা যুক্ত করে এটি এমন পর্যায়ে পৌঁছে দেয় যেখানে ক্রমবর্ধমান সমস্যা তুলনায় তুচ্ছ হয়ে ওঠে। তদুপরি, একটি ভাল পরীক্ষার ক্ষেত্রেও মাঝে মধ্যে কেবল সমস্যাটি ট্রিগার হতে পারে - ন্যান্সি লেভসন গণনা করেছেন যে থেরাক 25-এ একটি মারাত্মক বাগ রয়েছে gsপ্রায় 350 রানের মধ্যে 1 টিতে ঘটেছিল, তবে আপনি যদি বাগটি কী তা জানেন না, বা এটির মধ্যে একটিও রয়েছে তবে আপনি জানেন না কতগুলি পুনরাবৃত্তি কার্যকর পরীক্ষা করে। তদ্ব্যতীত, এই স্কেলটিতে কেবল অটোমেটেড টেস্টিং সম্ভব এবং টেস্ট ড্রাইভারটি সূক্ষ্ম সময়সীমাবদ্ধতা আরোপ করে যে এটি কখনই বাগটি ট্রিগার করতে পারে না (হাইজেনব্যাগগুলি আবার)।
সেখানে যেমন কিছু পরিবেশের মধ্যে সম্পাতবিন্দু পরীক্ষার জন্য কিছু সরঞ্জাম আছে Helgrind POSIX pthreads ব্যবহার কোডের জন্য, কিন্তু আমরা সুনির্দিষ্ট এখানে জানি না। যদি আপনার পরিবেশের জন্য উপযুক্ত সরঞ্জাম থাকে তবে পরীক্ষাগুলি স্থির বিশ্লেষণের সাথে সম্পূরক হওয়া উচিত (বা এটি অন্য উপায়ে?)।
অসুবিধা বাড়ানোর জন্য, সংকলকগুলি (এবং প্রসেসরগুলিও, রানটাইম সময়ে) প্রায়শই এই পদ্ধতিতে কোডটি পুনর্গঠন করতে মুক্ত হয় যা কখনও কখনও তার থ্রেড-সুরক্ষা সম্পর্কে বিতর্ককে খুব বিপরীতমুখী করে তোলে (সম্ভবত সর্বাধিক পরিচিত কেসটি ডাবল-চেক করা হয় আইডিয়ম লক করুন , যদিও কিছু পরিবেশ (জাভা, সি ++ ...) এটিকে উন্নত করার জন্য পরিবর্তন করা হয়েছে)
এই কোডটিতে একটি সাধারণ সমস্যা থাকতে পারে যা সমস্ত উপসর্গ ঘটাচ্ছে, তবে আপনার সম্ভবত এমন একটি সিস্টেমেটিক সমস্যা রয়েছে যা আপনার পরিকল্পনাগুলি থামিয়ে নতুন বৈশিষ্ট্য যুক্ত করতে পারে। আমি আশা করি যে আমি আপনাকে বোঝিয়েছি যে আপনার হাতে আপনার মারাত্মক সমস্যা হতে পারে, সম্ভবত আপনার পণ্যটির জন্য অস্তিত্বের হুমকিও রয়েছে এবং প্রথমে যা ঘটছে তা সন্ধান করা। যদি এটি সম্মতিযুক্ত সমস্যাগুলি প্রকাশ করে, আমি আপনাকে দৃ general়ভাবে পরামর্শ দিই যে আপনি আরও সাধারণ পুনঃসংশোধক করা উচিত কিনা এবং আপনি আরও বৈশিষ্ট্য যুক্ত করার চেষ্টা করার আগে আপনাকে এই প্রশ্ন জিজ্ঞাসা করার আগে আপনাকে প্রথমে এগুলি ঠিক করার পরামর্শ দিন।