আমি বর্তমানে এমন একটি প্রকল্পে কাজ করছি যা 5000 লাইন কোডেরও বেশি পৌঁছাতে চলেছে, তবে আমি কখনই ডিজাইনটি পুরোপুরি ভাবিনি। আমার কোডটি গঠন এবং সংগঠিত করতে আমার কোন পদ্ধতি ব্যবহার করা উচিত? কাগজ আর কলম? ইউএমএল চিত্র? অন্যকিছু?
আমি বর্তমানে এমন একটি প্রকল্পে কাজ করছি যা 5000 লাইন কোডেরও বেশি পৌঁছাতে চলেছে, তবে আমি কখনই ডিজাইনটি পুরোপুরি ভাবিনি। আমার কোডটি গঠন এবং সংগঠিত করতে আমার কোন পদ্ধতি ব্যবহার করা উচিত? কাগজ আর কলম? ইউএমএল চিত্র? অন্যকিছু?
উত্তর:
উত্তরগুলি হিসাবে আপনি সম্ভবত বিভিন্ন মতামত পেতে পারেন। তবে এখানে আমার দৃষ্টিকোণ।
প্রারম্ভিকদের জন্য, 5000+ কোডের লাইনগুলি খুব ছোট প্রকল্প। এখন, আপনি কীভাবে প্রজেক্টগুলি ডিজাইন করতে যান। প্রথমত, আপনি নিজের সিস্টেমটি ডিজাইন করেন কোনও কোড নয়। কোড আসলে স্থাপত্যের গৌণ। সর্বনিম্ন বর্তমান প্রয়োজনীয়তা সমর্থন করে শুরু করুন। জড়িত কিছু উপাদান সরল অঙ্কন রাখুন। আমি ব্যক্তিগতভাবে ইউএমএল পছন্দ করি তবে দৃশ্যমান কিছু ভাল হবে anything আদর্শভাবে, আপনি এখানে ভাল নকশা অনুশীলন (ইন্টারফেস, উদ্বেগ পৃথককরণ ইত্যাদি) মেনে চলতে চান।
আপনি একবার আপনার ডিজাইনের ন্যূনতম প্রয়োজনীয়তা সমর্থন করলে কোড করুন। আবার, ভাল কোডিং অনুশীলন মেনে চলার চেষ্টা করুন।
তারপরে, নতুন প্রয়োজনীয়তা উদ্ভূত হওয়ার সাথে পুনরাবৃত্তভাবে আরও কার্যকারিতা যুক্ত করুন। আদর্শভাবে আপনি নিজের নকশাটি আপডেট করতে চান।
আমার অভিজ্ঞতার ভিত্তিতে যা গুরুত্বপূর্ণ তা হ'ল অস্তিত্বের প্রয়োজনীয়তার প্রত্যাশায় আপনার সিস্টেমটি ডিজাইন করা নয়। অন্যথায় আপনার প্রকল্পটি খুব দ্রুত বৃদ্ধি পাবে এবং অল্প সময়ে খুব জটিল হয়ে উঠবে। আবার - ভাল অভ্যাস মেনে চলা এবং কংক্রিট বর্তমান প্রয়োজনীয়তা দিয়ে শুরু।
ফ্লো ডায়াগ্রাম, ক্লাস ডায়াগ্রাম, ইউজ কেস ডায়াগ্রাম বড় প্রকল্পগুলির জন্য অবশ্যই আবশ্যক চিত্র রয়েছে। আপনার প্রয়োজন কোন বাহ্যিক গ্রন্থাগারগুলি অনুসন্ধান করুন এবং নির্বাচন করুন এবং আপনি যে কোনও অনুরূপ ওপেন সোর্স কোড ব্যবহার করতে পারেন (শিখতে এবং উন্নয়নের সময় হ্রাস করতে) সন্ধান করুন।
আমি আপনাকে একটি হোয়াইটবোর্ড এবং কিছু রঙিন চৌম্বক এবং এটি পোস্ট করার পরামর্শ দিচ্ছি। এটি আপনাকে আপনার কার্যগুলি সনাক্ত করতে সহায়তা করবে।
PS 5000+ কোডের লাইনগুলি যদিও "বড়" নয়। একটি সিএমএস / ফোরাম সফ্টওয়্যারটিতে 5000++ এর বেশি কোডের লাইন থাকে।
আমি প্যাকেজ এবং ক্লাস ডায়াগ্রাম তৈরি করতে হবে। প্যাকেজ ডায়াগ্রামে আমি যৌক্তিক উপায়ে গ্রুপ ক্লাস এবং ইন্টারফেসে আগ্রহী। আমি অভ্যন্তরীণ প্যাকেজ ইত্যাদি তৈরি করতে চাই ...
তবে প্রথমে আপনাকে ভাবতে হবে প্রোগ্রামটি কী করা উচিত। আপনি ইউসকেস ডায়াগ্রাম তৈরি করতে পারেন বা এটি ম্যানুয়ালি করতে পারেন। আমি এটি ক্লাস ডায়াগ্রামের সাথে ম্যানুয়ালি করি কারণ আমি তত্ক্ষণাত কোডটি পেতে পছন্দ করি এবং পরে ক্লাসের চিত্রগুলি প্যাকেজে বদলে নেওয়া আরও সহজ। ক্লাস ডায়াগ্রাম ব্যবহার করে আমার জাভা দেয়। যদি আমি এটি পছন্দ না করি তবে আমি নিজেই এটি পরিবর্তন করব। নতুন কোডটি স্বয়ংক্রিয়ভাবে আমার চিত্রগুলিতে আপডেট হয়েছে। আমার কোডটির আমার কাছে ভিজ্যুয়াল উচ্চ স্তরের আপডেট উপস্থাপনা রয়েছে। সত্যই সহায়ক কারণ আমি কোড দিলেও আমার প্রকল্পটি গ্রাফিকাল পদ্ধতিতে চলছে সেদিকে নজর দিতে সর্বদা কয়েক মিনিট সময় নিতে পারি। এটিকে সংগঠিত করার জন্য আমি সঠিকভাবে প্যাকেজটিতে সত্ত্বাটিকে ম্যানুয়ালি টেনে এনে ফেলেছি। আমি মনে করি যে আমার কোডটি উচ্চ স্তরের বিমূর্ত প্যাকেজ এবং শ্রেণি চিত্রগুলি ব্যবহার করে আরও ভাল।
(উত্স: ejb3.org )
আমার কয়েকজন সহকর্মী বলেছিলেন যে আমার কাজ করার পদ্ধতিটি বকাঝকা .... তবে আমি এটি পছন্দ করি :-)
স্পষ্টভাবে. এই ধরণের জিনিসটির জন্য আমার কাছে একটি ছোট "ট্যাবলেট" শুকনো মুছে ফেলার বোর্ড রয়েছে তবে আপনি যেটি স্বাচ্ছন্দ্যযুক্ত তা ব্যবহার করুন। গুরুত্বপূর্ণ বিষয়টি হল আপনি নিজের চিন্তা সহজেই নামতে পারেন এবং কীভাবে সমস্ত কিছু একসাথে ফিট হয় তার বড় চিত্রটি দেখতে পারেন।
কিছু লোক ইউএমএল ডায়াগ্রামের মতো আরও আনুষ্ঠানিক পরিকল্পনা পছন্দ করে তবে আমি অনুভব করি যে প্রতিটি পদ্ধতির দেখতে কেমন হওয়া উচিত মাইক্রোম্যানেজিংয়ে ধরা খুব সহজ। যদিও আবার আপনি স্বাচ্ছন্দ্য বোধ করেন তা ব্যবহার করুন।
সম্পাদনা: আপনি সাক্ষর প্রোগ্রামিং আগ্রহী হতে পারে । ধারণাটি হ'ল আপনি এটি সমস্ত পরিকল্পনা করতে পারেন এবং ধীরে ধীরে আরও সুনির্দিষ্ট হয়ে উঠতে পারেন। উদাহরণস্বরূপ, আপনি বলতে পারেন যে আপনার প্রোগ্রামটি এতে অন্তর্ভুক্ত:
তারপরে আপনি হয়ত এই লেখাকে একটি চিত্রে রূপান্তর করার ধারণাটি পরিমার্জন করতে পারেন। যাতে দেখতে হতে পারে:
তারপরে আপনি এলোমেলো রঙ বাছাই করার ধারণাটি পরিমার্জন করতে পারেন এবং শীঘ্রই আপনি কেবল নিয়মিত কোড লিখছেন।
আমার কাছে, সফ্টওয়্যার বিকাশের ক্রিয়াকলাপ একটি নির্দিষ্ট সমস্যা সমাধানের জন্য ক্রমহ্রাসমান সূক্ষ্ম ডিজাইনগুলির একটি সিরিজ। আপনি কী তৈরি করছেন সে সম্পর্কে যখন আপনার কেবলমাত্র একটি উচ্চ-স্তরের ধারণা রয়েছে, আপনার নকশাটি খুব উচ্চ স্তরের কিছু হতে পারে যেমন "একটি ওয়েব অ্যাপ্লিকেশন থাকবে যা একটি এসকিউএল ডাটাবেস এবং একাধিক ওয়েব পরিষেবাদির সাথে কথা বলে" বা এর মতো কিছু। তারপরে, আপনি প্রতিটি টুকরোটির বিশদটি সন্ধান করার সাথে সাথে আপনি নকশায় আরও সূক্ষ্ম দানা পাবেন। সমাধানের জটিলতার উপর নির্ভর করে ডিজাইনের প্রচেষ্টার কম-বেশি পুনরাবৃত্তি হবে। চূড়ান্ত পুনরাবৃত্তিতে নকশার উচ্চ স্তরের প্রয়োগ করে এমন প্রকৃত কোড তৈরি করা জড়িত।
আমার জন্য, আর্কিটেকচার এবং ডিজাইনের মধ্যে পার্থক্যটি ন্যূনতম এবং আমি উপরে বর্ণিত প্রক্রিয়াটির কেবলমাত্র পৃথক পুনরাবৃত্তি। দুজনের মধ্যে লাইনটি অস্পষ্ট এবং বিভিন্ন লোকের জন্য পৃথক।
ডিজাইনের বিশদটি কী স্তরে প্রবেশ করতে হবে, অ্যাপ্লিকেশনটির কোন অংশগুলির জন্য, এবং প্রকল্পের জীবদ্দশায় কোন বিন্দুতে সিদ্ধান্ত নেওয়ার একটি শিল্প রয়েছে। উচ্চ ঝুঁকির জন্য, উচ্চ জটিলতা প্রকল্পগুলির জন্য আপনি কোনও কোডের একটি লাইন লেখার আগে আপনার খুব বিশদ ডিজাইন থাকতে পারে। ছোট প্রকল্পগুলির জন্য, আপনি সামনের ডিজাইনটি খুব সামান্য করে এবং কেবল কিছু কোড বের করে এবং তারপরে কী কাজ করে না তা দেখে এবং সেই অঞ্চলগুলিকে নতুন করে ডিজাইন করে পালিয়ে যেতে পারেন। এখানে কেবল একটি লেখার উত্তর নেই। সাধারণত এটি দুটি চূড়ান্ত মধ্যে কোথাও হয়।
আমার একটি ব্লগ পোস্ট রয়েছে যা আর্কিটেকচারের কাছে যাওয়ার সময় আমি যে কয়েকটি নীতি ব্যবহার করি সে সম্পর্কে কথা বলি। এই লাইনগুলি ধরে চিন্তা করার সময় এটি আপনার পক্ষে সহায়ক হতে পারে। কিছু নিবন্ধটি নেট থেকে নির্দিষ্ট তবে এটি বেশিরভাগটি নয়।
আমি নিজেকে খুব একই প্রশ্ন জিজ্ঞাসা করতাম। এখন আমি কেবল পরীক্ষা-চালিত বিকাশের অনুশীলন করি এবং এটি নিয়ে চিন্তা করবেন না। আমি নির্বাচিত আর্কিটেকচারের মান অনুসরণ করা ব্যতীত কোডটি একেবারে "পরিকল্পনা" করি না। যখন আমি কোনও প্রকল্প শুরু করি তখন আমার কী প্রয়োজন হবে তা সম্পর্কে আমার কিছু ধারণা আছে তবে বিকাশ এগিয়ে চলার সাথে সাথে আমি মুক্ত মন রাখার চেষ্টা করি। পরীক্ষামূলকভাবে চালিত বিকাশ অনুসরণ করে এবং কোডটি অবিচ্ছিন্নভাবে পুনরায় চুল্লি করে, আমাকে কোডটি "পরিকল্পনা" করতে হবে না। আমি কেবল একের পর এক পরীক্ষার কেস সন্তুষ্ট করি এবং ডিজাইনটি রিফ্যাক্টরিং থেকে উঠে আসে। কোডিংয়ের আগে আমি যে কোনও পরিকল্পনা করতে পারি তার চেয়ে এটি সর্বদা ভাল ডিজাইন।