আপনার পোস্ট করা নিবন্ধের লিঙ্কটি আমি কেবল পড়েছি, আমাকে বলতে হবে ফোলার বেশ কয়েকটি ভাল পয়েন্ট করেছেন এবং তিনি অনেক কিছুই বলেছিলেন, আমি বছরের পর বছর ধরে আমাদের দলের সাথে পরামর্শ করছি।
আইএমও, আপনি যদি কোনও শালীন নকশা করেন, তবে আপনাকে মৃত-শেষের পরিস্থিতি হিসাবে বিবেচনা করা উচিত নয়। বিল্ডিং ব্লকগুলি তৈরি করে আমি সফ্টওয়্যারটি সর্বদা দেখেছি । আমি এখনও কিছু আপ-ফ্রন্ট ডিজাইনে বিশ্বাস করি, তবে মূল লক্ষ্যটি পুরো পণ্যটি ডিজাইন করা নয়, সামগ্রিক আর্কিটেকচার / দিকনির্দেশ সরবরাহ করা যাতে আপনার দলটি একটি সাধারণ চিত্রটি দেখতে পারে যা আমরা সবাই কাজ করছি। আপনার যদি এক ঘন ঘন এবং ত্রিভুজ টুকরা থাকে তবে আপনি সহজেই টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করে শুরু করার আগে এটি কীভাবে একত্রে রাখা হবে তা স্কেচ করা সহায়ক।
যেহেতু আমি ওও ল্যান্ড থেকে এসেছি, আমার কাছে প্রতিটি ব্লক একটি শ্রেণি এবং সেই ব্লকের পৃষ্ঠের ক্ষেত্রটি পাবলিক ইন্টারফেস (বাহ্যিক বা ডাইরিং শ্রেণীর দ্বারা দৃশ্যমান)। আপনি যদি ভাল সলিড নীতি অনুসরণ করেন তবে আপনি নিশ্চিত করতে পারবেন যে প্রতিটি ব্লককে অত্যন্ত সহজ সরল এবং স্বজ্ঞাত পাবলিক ইন্টারফেস রয়েছে। আমার সাদৃশ্যগুলিতে ফিরে গিয়ে আপনি নিশ্চিত করতে চান যে আপনার কোডটি কেবল সাধারণ আকার তৈরি করে। আপনি যখনই ক্লাস তৈরি করেন, এটি খুব জটিল (অনেকগুলি ফাংশন, অনেকগুলি ভেরিয়েবল) থাকে, আপনি এমন আকার তৈরি করেন যা প্রয়োজনীয়তা পরিবর্তিত হলে পুনরায় ব্যবহার করা শক্ত।
আমি ফওলারের সাথে একমত হয়েছি যে বিবর্তনমূলক নকশার জন্য সবচেয়ে বড় ঝুঁকি / চ্যালেঞ্জ হ'ল আপনি নকশার সিদ্ধান্তগুলি কোডিংয়ের সময় ছেড়ে চলে যান এবং প্রতিটি ব্যক্তি বিকাশকারী সেই সিদ্ধান্তগুলি নেবেন বলে আশা করেন। এটি আপনার জায়গায় যথাযথ প্রতিক্রিয়া ব্যবস্থা না থাকলে সিস্টেমটি ভেঙে ফেলতে পারে। যখনই কোনও নতুন বৈশিষ্ট্যটির জন্য জিজ্ঞাসা করা হয়েছে, তখন এটি কেবল প্রসারিত করার জন্য যে ফাংশনটি প্রসারিত করা দরকার তা সন্ধান করা অত্যন্ত লোভনীয়, এর ভিতরে কিছু শর্তযুক্ত রাখুন এবং ঠিক ঠিক সেই ফাংশনের ভিতরে পুরো গোছা কোড যুক্ত করুন। এবং কখনও কখনও, এটি যা প্রয়োজন তা হতে পারে তবে এটি (আইএমও) একক সাধারণ প্রচলিত অভ্যাস যা মৃত-শেষ উপাদানগুলির দিকে পরিচালিত করে। বিবর্তনমূলক নকশার সাথে এর কোনও যোগসূত্র নেই। এটাকেই বলা হয় "নো ডিজাইন"।
যতক্ষণ আপনি পিছনে পদক্ষেপ নেওয়ার জন্য সময় নিচ্ছেন এবং বলুন, এক মিনিট অপেক্ষা করুন, এই শ্রেণিতে ইতিমধ্যে 15 সদস্যের ভেরিয়েবল রয়েছে, আমাকে এর 6 টি বের করতে এবং তাদের নিজস্ব স্বনির্ভর শ্রেণিতে রাখি, আপনার সফ্টওয়্যারটি খুব হালকা তৈরি হবে ওজন, নমনীয় এবং পুনরায় ব্যবহারযোগ্য বিল্ডিং ব্লক। নিশ্চিত হন যে প্রধানমন্ত্রী যদি এসে থাকেন এবং আপনার অর্ধেক পণ্যের প্রয়োজনীয়তা পরিবর্তন করে থাকেন তবে আপনাকে আপনার কয়েকটি ব্লক বের করতে হবে, সেগুলি শেল্ফের উপরে রেখে দিতে হবে এবং কিছু নতুন আঁকতে হবে (ঠিক যেমন দুর্গ তৈরির সময় আপনি সমস্ত ব্যবহার নাও করতে পারেন) আপনার সিলিন্ডার)। তবে এই মুহুর্তে, এটি ব্যবসা করার অংশ মাত্র। প্রয়োজনীয়তাগুলি পরিবর্তিত হয়েছে এবং আপনার কোডটি নমনীয় এবং মডিউল রেখে আপনি আপনার পণ্যটি আপনার নতুন ব্যবসায়ের দিকের সাথে সারিবদ্ধ করতে সক্ষম হন।
আমি বিশ্বাস করি ডিজাইনের এই বিবর্তনীয় পদ্ধতিটি প্রতিটি স্তরের ইঞ্জিনিয়ারের দক্ষতার সাথে কাজ করে। ব্যক্তিগতভাবে, আমি একটি দীর্ঘ সময়ের জন্য সফ্টওয়্যার করেছি এবং আমাদের দলটি চতুর পদ্ধতিতে চলে যাওয়ার আগে, আমি খুব সহজেই কোনও QA সহ গ্রাহকের কাছে সরাসরি আমার ডেভ পিসি থেকে বেশ কয়েকটি বড় উপাদান প্রেরণের জন্য দায়বদ্ধ ছিলাম। একই সময়ে components উপাদানগুলি সর্বদা নমনীয় এবং রক্ষণাবেক্ষণযোগ্য থেকে যায়।
আমি কেবল এটি বলার চেষ্টা করছি যে আমি নিজেকে সফ্টওয়্যার ডিজাইনিংয়ে তুলনামূলকভাবে শালীন মনে করব। একই সময়ে, আপনি যদি আমাকে 100-পৃষ্ঠাগুলির নকশা নথি লিখতে বলেন, এটি কোনও কোডারকে দিন এবং এটির কাজটি আশা করেন, আমি সম্ভবত কোনও কাগজের ব্যাগ থেকে নিজেকে ডিজাইন করতে পারিনি। কাজ শুরু করার সময়, আমি মাঝে মাঝে কয়েকটি ইউএমএল-জাতীয় (খুব সরলীকৃত, পুরো ভাষা নয়) চিত্রগুলি স্কেচ করতাম, তবে কোডিং শুরু করার সাথে সাথে আমি প্রয়োজনীয় ভিত্তিতে রিফ্যাক্টর করতাম এবং আমার চূড়ান্ত কোডটি কখনই আমি আঁকতে চাইছিলাম না like এমনকি আমি প্রতিটি সামান্য বিশদ সম্পর্কে এক মাস বা দুই চিন্তাভাবনা ব্যয় করলেও আমি অন্য কারও কাছে আমার ডায়াগ্রাম নিতে সক্ষম হতে সক্ষম হতে পারি এবং কোডিং করার সাথে সাথে ডিজাইনে পরিবর্তন না করেই শক্ত সফ্টওয়্যার নিয়ে আসতে পারি।
বর্ণালীটির অন্য প্রান্তে, বর্তমানে আমার দলে (এখন চটপটে এবং আমি এটি পুরোপুরি সমর্থন করি) আমাদের বেশ কয়েকজন ছেলেরা এম্বেডড ল্যান্ড থেকে আমাদের সাথে যোগ দিয়েছিল যেখানে তারা গত 15 বছর ধরে কেবল সি করেছে have আমি স্পষ্টতই কিছু প্রাথমিক পরিকল্পনা এবং ক্লাসগুলি ছড়িয়ে দেওয়ার ক্ষেত্রে সহায়তা করেছি তবে আমি নিয়মিত কোড পর্যালোচনা এবং ব্রেইনস্টর্মিং সেশনগুলি অনুসরণ করার বিষয়টিও নিশ্চিত করেছিলাম যেখানে আমরা সলাইড এবং ডিজাইনের নীতিগুলির প্রয়োগগুলি নিয়ে আলোচনা করি। তারা এমন কিছু স্প্যাগেটি কোড তৈরি করেছিল যা আমাকে কিছুটা কাটাতে বাধ্য করেছিল, তবে আমার কাছ থেকে কেবল একটি সামান্য ঠোঁট দিয়ে তারা ইতিমধ্যে উত্পাদিত যা পুনরায় প্রতিরোধ করতে শুরু করেছে এবং মজার বিষয়টি হল তাদের মধ্যে কয়েকদিন পরে আমার কাছে ফিরে এসে বলল, আমি ঘৃণা করি এটি বলার জন্য কিন্তু সেই কোডটি সরিয়ে নেওয়ার পরে এটি দেখতে অনেক বেশি পঠনযোগ্য এবং বোধগম্য। ডেড-এন্ড এড়ানো হয়েছে। পয়েন্ট আমি ' আমি চেষ্টা করে যাচ্ছি যে ওও-তে সম্পূর্ণ নতুন যে কেউ তার আরও অভিজ্ঞতার পরামর্শদাতা থাকা সত্ত্বেও কিছুটা শালীন কোড তৈরি করতে পারে, তাকে মনে করিয়ে দেওয়ার জন্য যে "বিবর্তনীয় নকশা" কোনও নকশাই নয় "। এমনকি তার কিছু "আরও জটিল" শ্রেণিও সেই ভীতিকর নয় কারণ প্রতিটি শ্রেণীর এত বেশি দায়িত্ব নেই (যেমন বেশি কোড নেই), তাই খারাপটি আরও খারাপ হয়ে যায়, যদি সেই এক শ্রেণি "মৃত-শেষ" হয়, এটিকে ছাড়ে এবং একই সার্বজনীন ইন্টারফেসযুক্ত একটি প্রতিস্থাপন শ্রেণি লিখুন (এখনও অবধি আমি যে কোনও কিছু লিখেছি এবং এই সপ্তাহে দু'বার কোড পর্যালোচনা করছি) তেমন এই অবিচ্ছিন্নতার প্রয়োজন পড়েনি।
চূড়ান্ত নোট হিসাবে, আমি ডিজাইনের দলিলগুলিতেও দৃ a় বিশ্বাসী (কমপক্ষে আমার বর্তমান দলের ব্যবসায়িক অবস্থার জন্য) তবে আমাদের ডিজাইন ডক্সের প্রাথমিক লক্ষ্যটি সাংগঠনিক মেমরি , সুতরাং কোডটি তৈরি হওয়ার পরে প্রকৃত নথিগুলি লিখিত হয় এবং রি-ফ্যাক্টর। কোডিংয়ের আগে, আমাদের সাধারণত একটি দ্রুত (কখনও কখনও এত তাড়াতাড়ি নয়) নকশা ফেজ থাকে যেখানে আমরা ন্যাপকিনস / এমস্পেন্ট / ভিজিওতে ক্লাসগুলি তৈরি করি এবং আমি সবসময় লোকদের মনে করিয়ে দিই যে এই পর্বটি অনুসরণ করার জন্য একটি পথ তৈরি করে, একটি নীলনকশা নয় এবং তারা কোডিং শুরু করার সাথে সাথে, যে কিছু বোঝা যায় না তা পরিবর্তন করা উচিত। এমনকি এই অনুস্মারকগুলির সাথেও, নতুন ছেলেরা তাদের কাছে যতই অপ্রাকৃত মনে হোক না কেন মূল নকশায় কোড ফিরিয়ে দেওয়ার চেষ্টা করে। কোড রিভিউগুলিতে এটি সাধারণত পৃষ্ঠভূমি।
ডাং, আমি অনেক লিখেছি। এর জন্যে দুঃখিত.