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