ডিউপল্ড আর্কিটেকচার তৈরি করতে প্যাকেজ (রত্ন, ডিম ইত্যাদি) ব্যবহার করা


10

মূল বিষয়

ভাল সমর্থন অধিকাংশ আধুনিক প্রোগ্রামিং প্ল্যাটফর্মের প্যাকেজ ব্যবস্থাপনা (মনে জন্য আছে দেখে gem, npm, pipতাই হিসাবে উন্নীত করা এবং একটি ঢিলেঢালাভাবে মিলিত স্থাপত্য তৈরি করতে, ইত্যাদি), এটা কি ঠিক একটি অ্যাপ্লিকেশন বা সিস্টেম অভ্যন্তরীণভাবে উন্নত প্যাকেজ গঠিত হতে ডিজাইন করতে?

উদাহরণ

এর উদাহরণ হ'ল ডাটাবেস অ্যাক্সেসের জন্য প্যাকেজ তৈরি করা, পাশাপাশি প্রমাণীকরণ এবং সিস্টেমের অন্যান্য উপাদানগুলির জন্য। এগুলি অবশ্যই বাহ্যিক প্যাকেজগুলি ব্যবহার করে। তারপরে, আপনার সিস্টেমটি এই প্যাকেজগুলি আমদানি করে এবং ব্যবহার করে - তার নিজস্ব কোড বেসের মধ্যে কোডগুলি অন্তর্ভুক্ত না করে।

বিবেচ্য বিষয়

আমার কাছে, মনে হয় এটি কোড ডিকপলিং এবং রক্ষণাবেক্ষণকে সহায়তা করবে, প্রায় কোনও ওয়েব-ভিত্তিক বনাম-ডেস্কটপ-অ্যাপ্লিকেশন ধরণের (আপডেটগুলি প্রায় স্বয়ংক্রিয়ভাবে প্রয়োগ হয়, একক কার্যকারিতার জন্য একক কোড বেস ইত্যাদি)।

এটিকে কি যৌক্তিক এবং বুদ্ধিমান ডিজাইনের ধারণা বলে মনে হচ্ছে? এটি কি আজ অ্যাপ্লিকেশনগুলির কাঠামোগত স্ট্যান্ডার্ড পদ্ধতি হিসাবে ব্যবহার করা হয়?

উত্তর:


12

আমি এখন দু'বারের মতো প্রকল্পগুলিতে জড়িত হয়েছি (উভয়। নেট দিয়ে নিউজ ব্যবহার করছি), এবং আমি বলব যে ভারসাম্যে এটি একটি ভাল ধারণা। কিন্তু আপনার মাইলেজ পরিবর্তিত হতে পারে।

এক মিনিটের জন্যও ভাববেন না যে এটি একটি অদৃশ্য রোগ, এটি নতুন সমস্যা সৃষ্টি না করেই আপনার সমস্ত সমস্যার সমাধান করবে। রিলিজ ম্যানেজমেন্ট জটিলতার সম্পূর্ণ নতুন স্তর অর্জন করবে, আপনাকে এমন সংস্করণ-নির্ভরতা সম্পর্কিত সমস্যাগুলি মোকাবেলা করতে হবে যা আপনি কখনও জানতেন না এবং আপনি যখন সিদ্ধান্তটি শাপ দিবেন তখন আপনি সময় পাবেন কারণ আপনি চারটি ভিন্ন প্যাকেজ আপগ্রেড করার কারণে পেয়ে গেছেন কারণ ছোট বাগ যা আপনার দ্রুত সমাধান এবং দ্রুত প্রকাশ করা দরকার।

অন্যদিকে, আপনি ঠিক বলেছেন যে এটি জিনিসগুলিকে সুন্দরভাবে ডিকোপল করে। আপনি যদি এটিকে অতিরিক্ত না করেন, আপনি সম্ভবত "ওহ, যা খুব ভালভাবে কাজ করেছে" "" "যে" প্রচুর পরিশ্রম যোগ করেছে think যদি আপনার একাধিক অ্যাপ্লিকেশনগুলির মধ্যে কোড ভাগ করা থাকে তবে এটি বিশেষভাবে কার্যকর কারণ আপনি সহজেই আপনার অ্যাপ্লিকেশনগুলি স্বাধীনভাবে আপগ্রেড করতে পারেন।

এবং, আপনি যদি আমার মতো কিছু হন তবে আপনি দ্রুত আপনার বাগ-সন্ধান প্রক্রিয়া থেকে অ্যাপ্লিকেশনটির সম্পূর্ণ স্তর সরিয়ে ফেলতে আপনার অ্যাপ্লিকেশনগুলি ব্যবহার করে এমন পরীক্ষামূলক অ্যাপ্লিকেশনগুলি লেখা শুরু করবেন। এবং এটি, নিজেই, দামের চেয়ে বেশি হতে পারে।


বিস্ময়কর ইনপুট। সাধারণভাবে, সমস্ত জিনিস ভারসাম্যযুক্ত হওয়া উচিত এবং আপনার মন্তব্য কীভাবে সেই লাইনে থাকে on এটা শুনে আপনারা দুর্দান্ত ভাবেন যে আপনি এটির চেয়ে বেশি ক্ষেত্রে ভাল কাজ করে বলে মনে করেন ... এবং সমস্যাগুলির উপস্থিতি যাইহোক স্থির is আমি অ্যাপ্লিকেশন পরীক্ষার বিষয়ে আপনার টিপটি পছন্দ করি :)। +1 টি।
হুয়ান কার্লোস কটো

1
আমি যুক্ত করব এমন অনেকগুলি প্রকল্প রয়েছে যা * নিক্স বিশ্বেও এটি করে। আপনার প্রায়শই লাইব্রেরিগুলি সামনের দিকের প্রান্ত থেকে গুই থেকে উন্নয়ন সংস্থান ইত্যাদি থেকে পৃথক করে থাকে
ডেভিড কাউডেন

মজাদার. এটি জটিল পদ্ধতিতে সংগঠিত করার মতো সুন্দর উপায়গুলির মতো শোনাচ্ছে তবে আমি এটি ওভার ইঞ্জিনিয়ারিংয়ের ক্ষেত্রে ভয় পেয়েছিলাম। দেখে মনে হচ্ছে সাবধানতার সাথে প্রয়োগ করা হলেও এটি হওয়া উচিত নয়। ধন্যবাদ!
হুয়ান কার্লোস কোটো

3

এটি একটি ভাল ধারণা, সব মিলিয়ে। আপনাকে অভ্যন্তরীণ প্যাকেজ সংগ্রহস্থল স্থাপন করার কথা ভাবতে হবে (সাধারণত জাভা বিশ্বে "আর্টিফ্যাক্ট রিপোজিটরি" বা পাইথন ওয়ার্ল্ডে "পাইপি সার্ভার" বলা হয়), যাতে আপনি সেই প্যাকেজগুলি রাখতে চান না বা করতে পারেন না ' ওপেন সোর্স হিসাবে প্রকাশ

যেমন @ পিডিআর উল্লেখ করেছে, আপনার নিজস্ব নির্ভরতা জাহান্নামের জন্য প্রস্তুত থাকুন , যেখানে কিছু প্যাকেজের পরিবর্তনের জন্য প্রথমে অন্য প্যাকেজের পরিবর্তনের প্রয়োজন হয়, এবং এর অর্থ কেবল কোডের একটি লাইন পরিবর্তন করা নয়, এটি পরীক্ষা করা হয়, সম্ভবত পরিবর্তনগুলি গ্রহণ করা, একটি রিলিজ নির্মাণ, এবং পূর্বোক্ত প্যাকেজ সংগ্রহস্থলে রিলিজটি আপলোড করা। এবং তারপরে আপনি কী পরিবর্তন করতে চেয়েছিলেন তা পরিবর্তন করছে।

এটিকে চেষ্টা এবং হ্রাস করার জন্য আমার অভিজ্ঞতা থেকে আমি আপনাকে দিতে পারি এমন একমাত্র রেসিপি: আপনার প্যাকেজগুলি থেকে "সাধারণ" বা "কাঠামো" প্যাকেজের মধ্যে সাধারণ ধারণাটিকে সম্পূর্ণ বিমূর্ত করার উপর নির্ভর করবেন না । এটি করা খুব উদ্দেশ্যমূলক জিনিস মনে হতে পারে তবে এটি একটি দৈত্য প্যাকেজের দিকে নিয়ে যায় যা ঘন ঘন, সম্ভবত পরস্পরবিরোধী পরিবর্তন এবং প্রকাশের প্রয়োজন হয়। আরও ভাল, আপনার সিস্টেমে কার্যকারিতা সম্পর্কে চিন্তাভাবনা করুন এবং তাদের প্রত্যেকের জন্য একটি সহায়ক প্যাকেজ তৈরি করুন, যেমন আপনি আপনার প্রশ্নের উল্লেখ করেছেন।

এ ছাড়া, আপনি যে প্রধান সুবিধা পাবেন তা হ'ল আপনার অ্যাপগুলি (অনেক) নির্ভরতা থেকে অন্তরক করা হয়, তাই আপনি ব্যথা ছাড়াই এগুলি বিনিময় করতে পারেন।


দুর্দান্ত টিপ। আমি কোনও commonপ্যাকেজটিকে বিকল্প হিসাবে বিবেচনা করি নি , তবে, আপনি যেমন বলেছিলেন, ভবিষ্যতে এটি একটি "যুক্তিসঙ্গত" সিদ্ধান্ত হতে দেখলাম। আমার উদ্দেশ্যটি কোডের পরিবর্তে উপাদানগুলির লাইনের সাথে আরও ছিল - সুতরাং আদর্শিকভাবে আপনার কোডের খুব বেশি টুকরো থাকা উচিত নয় যা বিভিন্ন প্যাকেজগুলিতে একই কাজ করে কারণ তারা বিভিন্ন জিনিস করতে বোঝায়। আমি অনুমান করব যে প্যাকেজগুলির মধ্যে যদি মিল থাকে তবে এই ধরণের পুনরাবৃত্তি ভাল প্রোগ্রামিং নীতি লঙ্ঘন করবে না, কারণ প্রকল্পগুলি পৃথক সংজ্ঞা অনুসারে পৃথক।
হুয়ান কার্লোস কটো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.