আমি এই প্রশ্নটি সি ++ প্রোগ্রামারদের কাছে রাখছি কারণ: ক) কেবলমাত্র একটি সি ++ প্রোগ্রামার উদাহরণগুলির প্রযুক্তিগত যোগ্যতা বিচার করতে পারেন; খ) কেবলমাত্র একজন প্রোগ্রামারই অন্য প্রোগ্রামারের মেজাজের অনুভূতি রাখে যিনি এই জাতীয় কোড লেখেন।
এইচআর এবং পরিচালকরা ক্ষেত্রের প্রমাণ দেখেন বলেই সমস্যা রয়েছে বলে সচেতন। আমরা প্রোগ্রামারকে আরও বেশি সময় দেওয়ার জন্য কিনা এটি আমার কল। ত্রুটিগুলির অনেকগুলি খুব বেসিক স্তরে - আমার প্রশ্ন (প্রোগ্রামারদের কাছে) হ'ল যে সিনিয়র সি ++ বিকাশকারী বলে দাবি করে এমন কাউকে তাদের বর্তমান কোডের নমুনার ভিত্তিতে সন্দেহের সুবিধা দেওয়া উচিত কিনা? নন-প্রোগ্রামাররা - এমনকি সি ++ প্রোগ্রামিংয়ের বাইরের লোকেরাও এ বিষয়ে কোনও রায় দিতে পারে না।
পটভূমিতে, আমাকে একটি প্রতিষ্ঠিত প্রতিষ্ঠানের জন্য বিকাশকারীদের পরিচালনার দায়িত্ব অর্পণ করা হয়েছে। তাদের একক বিকাশকারী রয়েছে যারা তাদের সমস্ত সি ++ কোডিং (চিরকাল থেকে) তে বিশেষ পারদর্শী, তবে কাজের গুণমানটি অতুলনীয়। কোড পর্যালোচনা এবং পরীক্ষার ফলে অনেকগুলি সমস্যা প্রকাশ পেয়েছে, মেমোরি ফুটো হওয়ার মধ্যে সবচেয়ে খারাপ। বিকাশকারী কখনও তার কোড ফাঁসের জন্য পরীক্ষা করেনি এবং আমি আবিষ্কার করেছি যে অ্যাপ্লিকেশনগুলি কেবলমাত্র এক মিনিটের ব্যবহারের সাথে অনেকগুলি এমবি ফাঁস করতে পারে। ব্যবহারকারীরাই বিশাল ধীরগতির প্রতিবেদন করছিল, এবং তার গ্রহণযোগ্যতাটি হ'ল, "এটি আমার সাথে কিছুই করার নয় - যদি তারা ত্যাগ করে পুনরায় চালু করে তবে এটি আবার ভাল।"
আমি তাকে ফাঁসগুলি সনাক্ত ও সনাক্ত করার জন্য সরঞ্জামগুলি দিয়েছি এবং কীভাবে সরঞ্জামগুলি ব্যবহৃত হয়, কোথায় সমস্যা হয় এবং সেগুলি ঠিক করার জন্য কী করা যায় তা প্রদর্শনের জন্য কয়েক ঘন্টা ধরে তার সাথে বসেছিলাম। আমরা 6 মাস ট্র্যাকের নিচে রয়েছি এবং আমি তাকে একটি নতুন মডিউল লেখার জন্য নিয়োগ দিয়েছি। এটি আমাদের বৃহত্তর কোড বেসে সংহত করার আগে আমি এটি পর্যালোচনা করেছি এবং আগের মতোই খারাপ কোডিংটি আবিষ্কার করতে বিস্মিত হয়েছিলাম। আমি যে অংশটি বোধগম্য মনে করি তা হ'ল কিছু কোডিং অপেশাদারের চেয়ে খারাপ। উদাহরণস্বরূপ, তিনি এমন একটি ক্লাস (ফু) চেয়েছিলেন যা অন্য শ্রেণীর (বার) এর কোনও বস্তুকে পপুলেশন করতে পারে। তিনি সিদ্ধান্ত নিয়েছিলেন যে ফু একটি বারের জন্য একটি রেফারেন্স রাখবে, যেমন:
class Foo {
public:
Foo(Bar& bar) : m_bar(bar) {}
private:
Bar& m_bar;
};
তবে (অন্যান্য কারণে) তারও ফু-র জন্য একটি ডিফল্ট নির্মাতার দরকার ছিল এবং তার প্রাথমিক নকশা সম্পর্কে প্রশ্ন না করে তিনি এই রত্নটি লিখেছিলেন:
Foo::Foo() : m_bar(*(new Bar)) {}
সুতরাং প্রতিবারই যখন ডিফল্ট কনস্ট্রাক্টর ডাকা হয় তখন একটি বার ফাঁস হয়। বিষয়টিকে আরও খারাপ করার জন্য, ফু অন্য 2 টি অবজেক্টের জন্য গাদা থেকে মেমরি বরাদ্দ করে, তবে সে কোনও ডেস্ট্রাক্টর বা অনুলিপি নির্মাণকারী লিখেনি। সুতরাং ফু এর প্রতিটি বরাদ্দ আসলে 3 টি পৃথক বস্তু ফাঁস করে দেয় এবং আপনি ধারণা করতে পারেন কোনও ফু যখন অনুলিপি করা হয়েছিল তখন কী ঘটেছিল। এবং - এটি আরও ভাল হয়ে যায় - তিনি অন্য তিনটি ক্লাসে একই প্যাটার্নটি পুনরাবৃত্তি করেছিলেন, সুতরাং এটি একটি অফ স্লিপ নয়। পুরো ধারণাটি এতগুলি স্তরে ভুল।
এটি মোটামুটি নবজাতক থেকে এসে থাকলে আমি আরও বোঝার অনুভব করব। তবে এই লোকটি বহু বছর ধরে এটি করে চলেছে এবং গত কয়েক মাস ধরে বেশ প্রশিক্ষণ এবং পরামর্শ দিয়েছিল। আমি বুঝতে পারি যে তিনি বেশিরভাগ সময় পরামর্শদাতা বা পিয়ার রিভিউ ছাড়াই কাজ করছেন, তবে আমি অনুভব করতে শুরু করেছি যে তিনি পরিবর্তন করতে পারবেন না। সুতরাং আমার প্রশ্ন হ'ল আপনি কি এমন ব্যক্তির সাথে অবিচল থাকবেন যে এই ধরণের স্পষ্টতই খারাপ কোড লিখছেন?