আমি আগে থেকেই জিনিসগুলি পরিকল্পনা করার চেষ্টা করেছি, তবে আমি কিছু কোড হাতুড়ি শুরু না করা পর্যন্ত সত্যিই সমস্ত কিছু প্রত্যাশা করতে পারি না।
এটা ভাবতে লোভনীয় যে নিখুঁত পরিকল্পনা আপনাকে নিখুঁত সফ্টওয়্যার ডিজাইন / আর্কিটেকচার দেবে, তবে এটি স্পষ্টতই মিথ্যা বলে প্রমাণিত হয়। এটি নিয়ে দুটি বড় সমস্যা রয়েছে। প্রথমত, "কাগজে" এবং "কোড" খুব কমই মেলে, এবং এটি করা খুবই সহজ কারণ কারণ নেই বলে এটা কিভাবে যেমন উল্টোদিকে সম্পন্ন করতে হবে আসলে এরকম । দ্বিতীয়ত, প্রয়োজনীয়তাগুলিতে অপ্রত্যাশিত পরিবর্তনগুলি বিকাশের প্রক্রিয়াতে দেরিতে স্পষ্ট হয়ে যায় যা শুরু থেকেই যুক্তিযুক্ত হতে পারে না।
আপনি কি চপলতা আন্দোলনের কথা শুনেছেন? এটি এমন একটি চিন্তাভাবনার উপায় যেখানে আমরা "পরিকল্পনার অনুসরণে" (অন্যান্য বিষয়গুলির মধ্যে) এর বিপরীতে "পরিবর্তনের প্রতিক্রিয়া ব্যক্তিকে" মূল্য দিই। এই ইশতেহারটি এখানে দেওয়া হয়েছে (এটি দ্রুত পঠনযোগ্য)। আপনি বিগ ডিজাইন আপ ফ্রন্ট (বিডিইউএফ) এবং কী কী ক্ষতি রয়েছে তা সম্পর্কেও পড়তে পারেন।
দুর্ভাগ্যক্রমে, "এগিল" এর কর্পোরেট সংস্করণটি একগুচ্ছ বোগাস (শংসাপত্রিত স্ক্রাম মাস্টারস, "এগিল" নামে ভারী প্রক্রিয়া, স্ক্রামকে জোর করে, 100% কোড কভারেজ ইত্যাদি জোর করে) এবং সাধারণত অ্যাসিনিন প্রক্রিয়া পরিবর্তনের কারণ পরিচালকগণ মনে করুন চটপটি একটি প্রক্রিয়া এবং একটি সিলভার বুলেট (যার মধ্যে এটি কোনওটি নয়)। চৌকস ইশতেহারটি পড়ুন, যারা আঙ্কেল বব এবং মার্টিন ফাউলারের মতো এই আন্দোলন শুরু করেছিলেন তাদের কথা শুনুন এবং "কর্পোরেট অ্যাগিলি" এর বাজে সংস্করণে চুষবেন না।
বিশেষত, আপনি সাধারণত বৈজ্ঞানিক কোডে কেবল টিডিডি (টেস্ট চালিত বিকাশ) করে পালিয়ে যেতে পারেন , এবং আপনার সফ্টওয়্যার প্রকল্পটি খুব সুন্দরভাবে রূপান্তরিত করার একটি ভাল সম্ভাবনা রয়েছে। এটি কারণ সফল বৈজ্ঞানিক কোডটির বেশিরভাগ ক্ষেত্রে অতি-ব্যবহারযোগ্য ইন্টারফেস থাকে, যার সাথে গৌণ (এবং কখনও কখনও প্রতিযোগিতামূলক) উদ্বেগ হিসাবে পারফরম্যান্স থাকে এবং আপনি আরও "লোভী" নকশা নিয়ে দূরে সরে যেতে পারেন। টিডিডি ধরণ আপনার সফ্টওয়্যারকে অতি-ব্যবহারযোগ্য হতে বাধ্য করে , কারণ আপনি কীভাবে জিনিসগুলি বাস্তবে প্রয়োগের আগে আপনি (আদর্শভাবে) কল করতে চান তা লিখেন । এটি ছোট ইন্টারফেসগুলির সাথে ছোট ফাংশনগুলিও জোর করে যা দ্রুত একটি সাধারণ, "ইনপুট" / "আউটপুট" ফ্যাশনে ডাকা যেতে পারে এবং এটি আপনাকে চুল্লি থেকে ভাল অবস্থানে রাখে ক্ষেত্রে প্রয়োজনীয়তা পরিবর্তন।
আমি মনে করি আমরা সবাই একমত হতে পারি numpy
যা সফল বৈজ্ঞানিক কম্পিউটিং সফটওয়্যার। তাদের ইন্টারফেসগুলি ছোট, দুর্দান্ত ব্যবহারযোগ্য এবং সবকিছু এক সাথে দুর্দান্তভাবে খেলছে plays নোট করুন যে numpy
এর রেফারেন্স গাইডটি স্পষ্টভাবে TDD এর জন্য সুপারিশ করেছে: https://docs.scipy.org/doc/numpy-1.15.1/references/testing.html । আমি অতীতে এসএআর (সিনথেটিক অ্যাপ্রিয়েচার রাডার) ইমেজিং সফ্টওয়্যারটির জন্য টিডিডি ব্যবহার করেছি: এবং আমি এটিও দৃ can়ভাবে বলতে পারি যে এটি সেই নির্দিষ্ট ডোমেনের জন্য অত্যন্ত কার্যকরভাবে কাজ করে।
ক্যাভেট: টিডিডি ডিজাইনের অংশটি এমন সিস্টেমে কম ভাল কাজ করে যেখানে কোনও বিতরণ ব্যবস্থার মতো একটি মৌলিক রিফ্যাক্টরিং (যেমন আপনাকে নিজের সফ্টওয়্যারটি অত্যন্ত সমবর্তী হতে হবে তা সিদ্ধান্ত নেওয়ার মতো) শক্ত হতে পারে be উদাহরণস্বরূপ, যদি আপনি ফেসবুক ভালো কিছু যেখানে আপনি সমবর্তী লক্ষাধিক ব্যবহারকারী, TDD- এ করছেন ডিজাইন করার ছিল ভুল (এখনও ব্যবহার করা ঠিক (আপনার নকশা ও ড্রাইভ) হবে পরে আপনি একটি আছে প্রাথমিক নকশা, এবং মাত্র "পরীক্ষা প্রথম গঠন না ")। কোডে ঝাঁপ দেওয়ার আগে আপনার অ্যাপ্লিকেশনগুলির সংস্থানসমূহ এবং কাঠামো সম্পর্কে চিন্তা করা গুরুত্বপূর্ণ । টিডিডি আপনাকে কখনই একটি উচ্চ উপলব্ধ, বিতরণ ব্যবস্থায় নিয়ে যায় না।
আমি কীভাবে সবসময় এড়াতে পারি যদি আমি স্ক্র্যাচ থেকে আমার প্রোগ্রামটি পুরোপুরি পুনর্নির্মাণ করি তবে আমি এটি আরও ভাল করতে পারি?
উপরের দিক থেকে, এটি কিছুটা স্পষ্ট হওয়া উচিত যে একটি নিখুঁত নকশা অর্জন করা অসম্ভব, সুতরাং একটি নিখুঁত নকশার তাড়া করা একটি বোকা খেলা। আপনি সত্যিই কেবল কাছাকাছি যেতে পারেন। এমনকি যদি আপনি মনে করেন আপনি স্ক্র্যাচ থেকে নতুন করে ডিজাইন করতে পারেন, তবে এখনও সম্ভবত লুকানো প্রয়োজনীয়তা রয়েছে যা সেগুলি নিজেরাই প্রদর্শিত হয়নি। তদুপরি, নতুন কোডগুলি মূল কোডটি বিকাশ করতে কমপক্ষে সময় নেয়। এটি প্রায় অবশ্যই সংক্ষিপ্ত হবে না, যেহেতু সম্ভবত এটি সম্ভবত নতুন ডিজাইনের নিজস্ব অপ্রচলিত সমস্যা রয়েছে, এবং আপনাকে পুরানো সিস্টেমের সমস্ত বৈশিষ্ট্য পুনরায় প্রয়োগ করতে হবে।
আরেকটি বিষয় বিবেচনা করার বিষয় হ'ল প্রয়োজনীয়তাগুলি পরিবর্তিত হলেই আপনার নকশাটি সত্যই গুরুত্বপূর্ণ ।কোনও কিছুই যদি কখনও পরিবর্তন না হয় তবে ডিজাইনটি কতটা খারাপ তা বিবেচনা করে না (বর্তমান ব্যবহারের ক্ষেত্রে এটি সম্পূর্ণরূপে কার্যকর) ধরে নেওয়া যায় না। আমি একটি বেসলাইনে কাজ করেছি যার 22,000 লাইনের সুইচ স্টেটমেন্ট ছিল (ফাংশনটি আরও দীর্ঘ ছিল)। এটি কি ভয়ানক নকশা ছিল? হ্যাঁ হ্যাঁ, এটা ভয়াবহ ছিল। আমরা কি এটি ঠিক করেছি? এটি ঠিক যেমন ঠিক তেমন কাজ করেছিল এবং সিস্টেমের সেই অংশটি কখনই ক্র্যাশ বা ত্রুটি ঘটেনি। আমি এই প্রকল্পটিতে যে দু'বছর ছিলাম কেবল একবারেই এটি স্পর্শ পেয়েছিল এবং কেউ, আপনি এটি অনুমান করেছিলেন, স্যুইচটিতে অন্য একটি মামলা .োকালেন। তবে এতটা স্পর্শ করা এমন কোনও কিছু ঠিক করার জন্য সময় নেওয়া উচিত নয়, এটি ঠিক নয়। অপূর্ণ নকশাটি যেমন হয় তেমন হোক এবং এটি যদি ভেঙে যায় (বা ক্রমাগত ভাঙছে) তবে এটি ঠিক করবেন না। সুতরাং আপনি আরও ভাল করতে পারে ... তবে এটি কি আবার লিখতে হবে? কী লাভ হবে?
আছে HTH।