প্রকল্পগুলিতে কোডের ক্ষুদ্র স্নিপেটগুলি ভাগ করার জন্য সেরা অনুশীলন


102

আমি সর্বদা কাজের জায়গায় DRY নীতি অনুসরণ করার চেষ্টা করি ; প্রতিবার আমি যখন অলসতার বাইরে কোডটি পুনরাবৃত্তি করেছি তখন এটি পরে কামড় দেয় যখন আমার এই কোডটি দুটি জায়গায় বজায় রাখা দরকার।

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

এই কোডটি পুনরায় ব্যবহারের স্ট্যান্ডার্ড উপায় হ'ল পুনরায় ব্যবহারযোগ্য কোডের জন্য একটি স্বাধীন প্রকল্প তৈরি করা এবং সেই প্রকল্পটি আপনার প্রয়োজন হলে রেফারেন্স করা। এটির সাথে সমস্যাটি হ'ল আমরা আদর্শের চেয়ে কম দুটি দৃশ্যের মধ্যে শেষ করি:

  1. আমরা দশ / শতাধিক ক্ষুদ্র প্রকল্পের কাজ শেষ করি - প্রতিটি ছোট্ট ক্লাস / পদ্ধতি যা আমাদের পুনঃব্যবহার করতে হবে তা রাখার জন্য। .DLLকেবলমাত্র একটি ক্ষুদ্র ক্ষুদ্র কোডের জন্য এটি কি সম্পূর্ণ নতুন তৈরি করা মূল্যবান ?
  2. আমরা একটি একক প্রকল্পের সাথে অবশেষে সম্পর্কিত methods এই পদ্ধতির জন্যই আমি কোন সংস্থা কাজ করতাম; তাদের একটি প্রকল্প base.commonছিল যার নাম ফোল্ডার ছিল যেমন আমি উপরে উল্লেখ করেছি: নেটওয়ার্কিং, স্ট্রিং ম্যানিপুলেশন, এমভিভিএম ইত্যাদি এটি অবিশ্বাস্যভাবে সহজ ছিল, তবে এটি উল্লেখ করার সাথে সাথে আপনার সমস্ত অপ্রাসঙ্গিক কোডের প্রয়োজন নেই এটি এটিকে টেনে নিয়ে যান।

সুতরাং আমার প্রশ্নটি হ'ল:

কোনও সফ্টওয়্যার দল কীভাবে প্রকল্পগুলির মধ্যে কোডের ছোট বিটগুলি পুনরায় ব্যবহার করতে পারে?

আমি আগ্রহী বিশেষত যদি কেউ এই অঞ্চলে নীতিমালা তৈরি করে এমন কোনও সংস্থায় কাজ করে থাকে বা আমার মতো ব্যক্তিগতভাবে এই দ্বিধাটি পেরিয়ে আসে।


দ্রষ্টব্য: "প্রকল্প", "সমাধান" এবং "রেফারেন্স" শব্দগুলির আমার ব্যবহারটি ভিজ্যুয়াল স্টুডিওতে .NET বিকাশের একটি পটভূমি থেকে আসে। তবে আমি নিশ্চিত যে এই সমস্যাটি ভাষা এবং প্ল্যাটফর্মটি স্বাধীন।


21
+1, যদিও আমি মনে করি কারও সাথে কাজ করার মধ্যে হাস্যরসের একটি উপাদান রয়েছে N নেট কোনও ডিএলএল রেফারেন্সের মাধ্যমে অপ্রাসঙ্গিক কোডে টেনে আনার বিষয়ে উদ্বিগ্ন।
জেডিবি

2
@ কোল জনসন। নেট নিজেই একটি বিশাল রেফারেন্স! সম্ভবত আমি যে ঘর তৈরি করেছি তার চেয়ে অনেক বড়
জর্জ পাওয়েল

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

1
সত্য। যদিও আপনাকে এখনও আপনার পণ্যটি ব্যবহার করতে চায় এমন কাউকে পুরো নেট নেট ফ্রেমওয়ার্ক বিতরণ করতে হবে এবং বড় প্রকল্প এবং জটিল সমাধান পরিচালনা করা আরও কঠিন are
জর্জ পাওয়েল

উত্তর:


75

যদি সেগুলি সত্যিই পুনরায় ব্যবহারযোগ্য পদ্ধতি / ক্লাস হয় তবে আপনি এগুলি সংখ্যক 'সুইস আর্মি নাইফ' লাইব্রেরিতে লিখতে পারেন। আমরা আমার সংস্থায় প্রায়শই এটি করি; আমরা তাদের ফ্রেমওয়ার্ক গ্রন্থাগার বলি:

  • Framework.Data - ডাটাবেস প্রশ্নের সাথে কাজ করার জন্য ইউটিলিটিস।
  • Framework.ESB - আমাদের এন্টারপ্রাইজ পরিষেবা বাসের সাথে যোগাযোগের জন্য স্ট্যান্ডার্ড পদ্ধতি
  • Framework.Logging - ইউনিফাইড লগিং সিস্টেম
  • Framework.Services - ওয়েব পরিষেবাদির সাথে ইন্টারঅ্যাক্ট করার উপযোগিতা ities
  • Framework.Strings - উন্নত স্ট্রিং ম্যানিপুলেশন / ফাজি স্ট্রিং অনুসন্ধানের জন্য ইউটিলিটিস etc.
  • ...

সব মিলিয়ে প্রায় এক ডজন বা তার মতো লাইব্রেরি রয়েছে। আপনি যা দেখতে চান ঠিক তেমন কোডটি আপনি বিতরণ করতে পারেন, তাই আপনাকে শত শত দিয়ে শেষ করতে হবে না বা সমস্ত কিছু একটি বিশাল সমাবেশে ফেলে দিতে হবে না। আমি এই পদ্ধতির সাথে খাপ খাইয়ে দেখছি কারণ কেবলমাত্র আমাদের কিছু প্রকল্পের প্রয়োজন হবে Framework.Dataএবং কেবলমাত্র কয়েকটি কয়েকটি প্রয়োজন হবে Framework.Strings, তাই গ্রাহকরা তাদের নির্দিষ্ট প্রকল্পের সাথে প্রাসঙ্গিক কাঠামোর কেবলমাত্র সেই অংশগুলিই চয়ন করতে পারেন।

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


4
+1 এটি আমার পদ্ধতিরও হবে। দুই বা ততোধিক দিক থেকে স্টাফের সাথে কোড করে এমন কোডটি কোথায় রাখবেন তা আপনি কীভাবে সিদ্ধান্ত নিয়েছেন তা জানতে আগ্রহী। উদাহরণস্বরূপ IPAddressToString। এবং আপনি এই লাইব্রেরিগুলিকে একে অপরকে ব্যবহার করার অনুমতি দিন কিনা। উদাহরণস্বরূপ পরিষেবাদি এবং ডেটা লগিংয়ের মাধ্যমে সম্ভবত অনেক উপকৃত হতে পারে ...
মার্জন ভেনেমা

5
@ মারজানভেনেমা ক্রস-কাটিং কোডের জন্য, এটি কীভাবে গ্রাহকরা পদ্ধতিটি আরও কার্যকর খুঁজে পাবেন তার উপর নির্ভর করে। কারণ IPAddressToStringএটি সম্ভবত প্রোটোকলগুলির সাথে লেনদেনকারী গ্রাহকদের তা ব্যবহার করতে হবে তবে যে গ্রাহকরা স্ট্রিং দিয়ে প্রচুর পরিমাণে ঝাঁকুনি দেয় তারা আসলেই আইপি অ্যাড্রেসগুলির মোটেই পাত্তা না দেয়। এটি সম্ভবত একটি নেটওয়ার্কিং প্যাকেজের পরিবর্তে শেষ হবে Framework.Strings
পিএসডাব্লু

@ মারজানভেনেমা আমরা আন্তঃনির্ভরতা এড়াতে চেষ্টা করি। আমাদের পরিষেবা এবং ডেটা ফ্রেমওয়ার্কগুলি এমনভাবে লিখিত হয় যাতে তারা নিজেরাই কোনও লগিং না করে, তবে ভোক্তার পক্ষে যথাযথ লগিং কোড লিখতে সহজ করে তোলে। ফ্রেমওয়ার্ক লাইব্রেরিগুলিকে একে অপরকে রেফারেন্স দেওয়ার অনুমতি দেওয়া হয় তবে কেবল এক্সটেনশন দ্বারা - যেমন Framework.Logging.Gibraltarলগিং সিস্টেমে একটি বিশেষ অ্যাড-অন।
PSWg

5
+1 আপনি এই ফ্রেমওয়ার্ক লাইব্রেরিগুলি নিয়ে যেতে পারেন এবং এগুলি একটি অভ্যন্তরীণ নুগেট সংগ্রহস্থলে (নেটওয়ার্ক ফোল্ডারের মতো সহজ) স্থাপন করতে পারেন এবং এটি পরিচালনা করার জন্য আপনার একটি দুর্দান্ত উপায় রয়েছে।
স্টিভেন এভার্স

2
@ স্টিভএভার্স আমি এটি স্থাপনের জন্য এখনই কাজ করছি। : পি
পিএসডব্লিউ

21

আমি অনেক কারণে গৃহীত উত্তরের সাথে একমত নই।

আমার অভিজ্ঞতায় আমি যখন স্বীকৃত উত্তরের মতো "বিবিধ" লাইব্রেরি দেখি তখন তারা চাকাটিকে পুনরায় উদ্ভাবন করার জন্য একটি অজুহাত (অথবা এখানে আবিষ্কার করেনি (এনআইএইচ) ) - ড্যান্ট রিপিট ইয়ুয়েলস (ডিআরওয়াই) লঙ্ঘন করার চেয়ে আরও বড় পাপ ।

কখনও কখনও ডিআরওয়াই লঙ্ঘন করা যুক্তিসঙ্গত আপস হতে পারে, আঁটসাঁট পোশাকের পরিচয় দেওয়ার চেয়ে এটি ভাল। ভাল অবজেক্ট ওরিয়েন্টড ডিজাইনের তুলনায় পুনঃব্যবহার একটি গৌণ উদ্বেগ। একটি স্প্যাগেটি কোড বেসের চেয়ে ডুপ্লিকেশনটির কিছুটা (অর্থাত্ স্বল্প পরিমাণ, তিনটির বিধি প্রয়োগ করুন ) বোঝা সহজ।

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

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

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

মানকযুক্ত প্রযুক্তি ব্যবহার করে (। নেট ফ্রেমওয়ার্ক এবং জনপ্রিয় তৃতীয় পক্ষ / ওপেন সোর্স লাইব্রেরিগুলির মতো) বেনিফিট রয়েছে যা প্রায়শই এটি তৈরির তুলনামূলক প্রযুক্তিগত লাভকে ছাড়িয়ে যায়। এই প্রযুক্তিগুলি জানে এমন প্রতিভা খুঁজে পাওয়া আরও সহজ এবং আপনার বিদ্যমান বিকাশকারীরা এটি শিখতে আরও বিনিয়োগ করবে।

আমার সুপারিশ:

  • এই কোডটি ভাগ করে নেবেন না।
  • একটি নতুন গ্রন্থাগার তৈরি করুন যদি এর সমন্বিত উদ্দেশ্য থাকে তবে কাদা ডিজাইনের ধরণের বলটি ব্যবহার করবেন না ।
  • যেখানে সম্ভব তৃতীয় পক্ষের 3 টি লাইব্রেরি পুনরায় ব্যবহার করুন।
  • কোডটি কোথায় বাস করা উচিত সে সম্পর্কে সহজ নিয়ম সহ কম সংখ্যক সমাবেশকে বেশি পছন্দ করুন।

1
ওপেন সোর্স লাইব্রেরিগুলি যেখানে পাওয়া যায় সেগুলি ব্যবহার করার জন্য একটি সীমাবদ্ধ সুবিধা - যদি আপনি কিছু উন্নতি নিয়ে আসে তবে আপনি সেগুলি সম্প্রদায়টিতে আবার ভাগ করে নিতে পারেন! উদাহরণস্বরূপ। নেট এমএসের সাহায্যে একটি এন্টারপ্রাইজ লাইবারি (এখন ওপেন সোর্স) প্রকাশিত হয়েছে যা সাধারণ পরিস্থিতিগুলির জন্য সরঞ্জামগুলির একটি দুর্দান্ত সেট দেয়, সেখানে এমন কিছু সন্ধান করুন যা উন্নত হতে পারে এবং আরে প্রেস্টো! সবাই উপকৃত!
glenatron

2
আমি গ্রহণযোগ্য উত্তরটির সাথে সত্যই এখানে মতবিরোধ দেখতে পাচ্ছি না :-)। "কোডটি কোথায় বাস করা উচিত তার সরল নিয়ম সহ কম অ্যাসেমব্লি" গৃহীত উত্তরের বিরোধী নয়। উত্তরটি কেবল যুক্তিসঙ্গত বলে মনে হয় এমন অনেকগুলি পৃথক সমাবেশগুলি ব্যবহার করার পক্ষে পরামর্শ দেয়।
sleske

পাঁচ বছর পরে মাইক্রোসার্চিস গাইডেন্স এই অনুশীলনে রূপান্তরিত হয়েছে: मध्यम.com
ডেভ হিলিয়ার

11

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

প্রথমত, কোডটি সহজে হাতে পাওয়া সহজ, বিশেষত যখন বিল্ডিং এবং ডিবাগিংয়ের জিনিসগুলি।

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

সুতরাং এটির নিজের নামের জায়গার জন্য এটি যদি যথেষ্ট পরিমাণে মাংসহীন না হয় তবে আমরা কেবলমাত্র প্রকল্পের উপযুক্ত বিটগুলিতে এটি চাপিয়ে দিন এবং এটি একটি দিন বলি।


5
আমি এই পদ্ধতির সাথে একমত নই আমি কোডের ছোট ছোট টুকরো পরিচালনা করার ক্ষেত্রে রক্ষণাবেক্ষণের সমস্যাগুলির প্রশংসা করি তবে আমি যুক্তি দেব যে @sw এর পরামর্শ অনুসারে এগুলির সমস্ত কিছু থেকে কিছু সাধারণ গ্রন্থাগার তৈরি করা যেতে পারে। এতে ছোটখাটো টুইটের সাথে কোডের নকল অনুলিপি থাকা সমস্যা জিজ্ঞাসা করছে। অনুমান করা হবে, বাগ ফিক্স মিস করা হবে।
অ্যান্ড্রু টি ফিনেল

2
-1 (উত্তরে) প্রত্যেকের নিজস্ব প্রোগ্রামগুলির নিজস্ব সংস্করণগুলির নিজস্ব অনুলিপি থাকা সহজতর কাজ। 80 এর দশকে এভাবেই সফটওয়্যার তৈরি হয়েছিল। আমি তখন থেকে শিখেছি - দীর্ঘমেয়াদী - এটি একটি গোলযোগের দিকে নিয়ে যায়। সঠিক কাজটি করা এবং একটি সাধারণ লাইব্রেরি রাখা আরও কঠিন কারণ লোকেরা তাদের কাজ সম্পর্কে আরও অনেক বেশি যোগাযোগ করতে হবে। ঠিক আছে, তাদের উচিত।
মাইকেল ডুরান্ট

3
+1 - আমি মনে করি এটি আপনার কাছে প্রায়শই ব্যবহার করতে চান এমন না হলেও এই পদ্ধতির উল্লেখ করা ভাল। কিছু স্নিপেটগুলি নকশার নিদর্শনগুলির মতো হয় - আপনি তাদের আবার ব্যবহার করতে পারেন, তবে সর্বত্র কিছুটা ভিন্ন, এবং সম্ভবত বিভিন্ন ভাষায় এবং সম্ভবত আপনি সেগুলি পরিবর্তন করতে চান। এছাড়াও, একটি বিস্তৃতভাবে পুনঃব্যবহৃত লাইব্রেরি এটির মধ্যে জটিল নয় যে এর API এ পরিবর্তনগুলি খুব ঝুঁকিপূর্ণ। অবশেষে, ফলব্যাক হিসাবে এই পদ্ধতির উপস্থিতি পরীক্ষামূলক জিনিসগুলি কিছুটা বেশি দূরে রেখে ভাগ করে নেওয়া লাইব্রেরিগুলির গুণমানকে বাড়িয়ে তোলে।
ইমন নেরবোন

6

আপনি যে দ্বিতীয় সমাধানটি বর্ণনা করেছেন সেটি খারাপ নয়। .NET এ আপনি জিএসি থেকে কোনও অ্যাসেমব্লিকে উল্লেখ করেন এমনকি আপনি এটির একটি একক শ্রেণি ব্যবহার করেন না কেন। 'অপ্রাসঙ্গিক কোড টেনে তোলা' এমন সমস্যা নয় যা আপনি ভাবেন। এক্ষেত্রে কমপক্ষে বিভিন্ন পদ্ধতি এবং ক্লাসগুলি বিভিন্ন নেমস্পেসে পরিষ্কার-পরিচ্ছন্নভাবে পরিচালনা করা জরুরী। এই সমাধানটি গোলমাল হতে না দেওয়ার জন্য অতিরিক্তভাবে এপিআই ডিজাইনের জন্য ভাল অভ্যাস প্রয়োগ করা উচিত।

যদি কোডটির খুব সামান্য বিটগুলির ক্ষেত্রে আসে তবে আমি মনে করি যে নিম্নলিখিত পদ্ধতির কোনও সাধারণ প্রকল্পের জন্য একটি ভাল পরিপূরক: এগুলিকে বিভিন্ন সমাধানে সদৃশ করার অনুমতি দিন। সর্বোত্তম অনুশীলনের মতো তাদের সাথে ডিল করুন: দস্তাবেজ করুন এবং তাদের সাথে দলে যোগাযোগ করুন।


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

6

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

যাইহোক, গত সপ্তাহে একটি স্টার্ট-আপ যারা তাদের নিজস্ব নুগেট সার্ভার চালাচ্ছে তাদের সাথে কাটিয়েছি আমি এটিকে একটি কার্যকর বিকল্প হিসাবে প্রস্তাব করতে চাইছি। অবশ্যই যে বিষয়গুলি আমি উত্থাপনের প্রত্যাশা করব সেগুলি আবিষ্কার-সক্ষমতার আশেপাশে থাকবে।

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


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

অই হ্যাঁ. তারাও। আবিষ্কার-সক্ষমতার চারপাশের ইস্যুগুলির দ্বারা আমি বোঝাতে চাইছি যে নির্দিষ্ট ফাংশন সহ পর্যাপ্ত সংখ্যক সামান্য প্যাকেজ দেওয়া সম্ভবত প্রতিটি ক্যাটালগ করা (এবং খুঁজে পাওয়া) আরও কঠিন হয়ে পড়ে। উদাহরণস্বরূপ, আপনার দলটি কীভাবে প্যাকেজগুলিতে বিভিন্ন ফাংশন ধারণ করে তা জানায়? (এখানে নিউজ সন্ধান অজ্ঞতা দেখানো হচ্ছে)
কোফি সরফো

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

@ এসফারফায়্ট আপনি যদি নুগেট সার্ভারটি যা কিছু হয় তার একটি লিঙ্ক ভাগ করে নিতে এবং এটি সম্পর্কে কিছুটা বলতে পারলে ভাল লাগবে।
হ্যান্স-পিটার স্টার

6

আমি সম্প্রতি এটি সম্পর্কে ভেবেছিলাম এবং আমার কাছে যা ঘটেছিল তা সাধারণ পদ্ধতির একটি বৃহত গ্রন্থাগার ছিল যা এ পর্যন্ত বলা হয়েছে, তবে একটি মোচড় দিয়ে। লাইব্রেরি প্রকল্পটি আপনাকে সংকলনের সময় কনফিগার করার অনুমতি দেয় যা ব্যাসিবক্স প্রকল্পের মতো টুকরো অন্তর্ভুক্ত রয়েছে । এই পদ্ধতির সাহায্যে আপনার একটি রান্নাঘরের সিঙ্ক স্টাইলের লাইব্রেরি রেপো থাকতে পারে তবে সংকলনের সময় কেবলমাত্র আপনার প্রয়োজনীয় সরঞ্জামগুলি ধরুন।


5

কোড স্নিপেটগুলি সঞ্চয় করার জন্য গিটহাবের একটি দুর্দান্ত সরঞ্জাম রয়েছে https://gist.github.com/

এটি আপনার স্নিপেটগুলি গিট সংগ্রহস্থল হিসাবে সংরক্ষণ করে যা আপনি ব্যক্তিগত রাখতে পারেন, বা স্নিপেটগুলি অন্য ব্যক্তির সাথে ভাগ করে নিতে ব্যবহার করতে পারেন।


3

দল / প্রকল্প / সংস্থার আকারের উপর নির্ভর করে এটি দক্ষতার সাথে কাজ করা বরং কঠিন কাজ হবে, যদি না এটি ইতিমধ্যে আপনার পরিবেশের মধ্যে কোনওভাবে নির্মিত হয়, এবং প্রতিটি সমাধান আপনি খুঁজে পাবেন (যদি আপনি এটি বাস্তবায়ন করেন) কিছু অর্থ ব্যয় করতে হবে। (এটি আপনাকে আরও সুরক্ষিত করতে পারে তবে আপনি সহজেই পরিমাপ করতে সক্ষম হবেন না)। আপনি এটি মূল্য মূল্য কিনা তা পরীক্ষা করতে হবে। এছাড়াও মনে রাখবেন যে পুনরায় ব্যবহারযোগ্য সমাধানগুলি বিমূর্ত হয়ে ওঠে এবং প্রায়শই অনেক পরিস্থিতিতে ফিট করে তবে অনুকূল না হয়ে।

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

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

যদিও এই জাতীয় dlls তৈরি করা কৌতুকটি করার পক্ষে যথেষ্ট হবে না। এগুলিকে দরকারী করে তুলতে আপনাকে তাদের বিজ্ঞাপনদাত করতে হবে (ব্যবহারকারী এবং অবদানকারীদের কাছে) এবং সফ্টওয়্যারের অন্য কোনও অংশের মতো এগুলি বজায় রাখতে হবে, যার অর্থ সাধারণত আপনাকে দীর্ঘকাল ধরে কাউকে দায়িত্বে রাখতে হবে। আপনার নির্ভরযোগ্য ডকুমেন্টেশনও প্রয়োজন হবে, যার পরে রক্ষণাবেক্ষণও প্রয়োজন। কিছু ভাগ্য এবং সহযোগিতার সাথে আপনি কিছু সেরা অনুশীলনগুলি শেষ করতে পারেন, তবে এটি জড়িত দলের আকার এবং সংখ্যার উপর নির্ভর করে এটি সহজেই এর নিজস্ব একটি প্রকল্পে বিকশিত হতে পারে। এবং এর জন্য আপনার এখনও পরিচালনা সহায়তা প্রয়োজন।


3

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

  1. সহজ অ্যাক্সেস এবং ভাগ করা সহজ। সিভিএস / এসএনএন / এন্টারপ্রাইজ-রেপোস বলতে একাধিক আইডিই ওয়ার্কস্পেসে প্রকল্প পরীক্ষা করে দেখা হয় এবং কখনও কখনও একটি ছোট কোড স্নিপেট উল্লেখ করার জন্য ওয়ার্কস্পেস বা কম্পিউটারগুলি স্যুইচ করতে হয়।
  2. এই ধরণের কোডগুলির স্নিপেটগুলি মালিকানাধীন / কোডের শ্রেণিবদ্ধ টুকরা নয় এবং এটি সর্বজনীনভাবে উপলব্ধ জ্ঞানের বিভিন্নতা, এগুলি গিথুবের মতো একটি পাবলিক রেপোতে পোস্ট করার অর্থ অন্যরা এটিকে দেখবে, এবং এমনকি অবদান রাখতে পারে।
  3. আপনার নামে জনসাধারণের ডোমেইনে কিছু পোস্ট করার সাথে খ্যাতির বাড়তি চাপ রয়েছে। আপনি ডাবল চেক এবং আপডেট করবেন, যেহেতু এটি একটি প্রোগ্রামার হিসাবে আপনার ক্ষমতা প্রতিফলিত করে।
  4. আপডেট। কোনও রেপোতে কোড স্নিপেটগুলি বজায় রাখার বিষয়টি হ'ল, যদি কোনও স্নিপেটটি দীর্ঘ সময় ব্যবহার না করা হয় তবে এটি বাসি হয়ে যেতে পারে (পুরানো এপিস / লিবিস ধারণ করে)। উদাহরণস্বরূপ - একটি ফাইল পড়ার জন্য জাভা কোড স্নিপেট। আপনি এটি করার সবচেয়ে ভাল উপায়টি 2009 সালে সন্ধান করতে পারেন, তবে 2014 সালে একটি নতুন ফাইল এপিআই এসেছে যা সমস্ত কিছু পরিবর্তন করে। তোমার স্নিপেট? এখনও ২০০৯ এ আটকে গেছে a একটি পাবলিক রেপোতে, জিনিসগুলি আপডেট হবে, হয় আপনার দ্বারা (কারণ বুলেট 3), আপনার সতীর্থ বা সাধারণ প্রোগ্রামার জনসংখ্যার কোনও সদস্য এবং প্রক্রিয়াতে, আপনি এমন কিছু ঠিক করার পরামর্শও পেতে পারেন আপনি দীর্ঘকাল ধরে ভুল করছেন।

আমি একটি জিনিস সুপারিশ করব - আপনি নিজের স্নিপেটগুলি যেখানে রাখুন না কেন, আপনি ব্যবহার করার আগে সর্বদা গুগল স্টাফ আপ রাখুন। জিনিস সব সময় পরিবর্তন। সংরক্ষণ করা স্নিপেটগুলি সময় সাশ্রয় করে তবে আত্মতৃপ্তিও প্রজনন করে


2

আমাদের একটি পৃথক প্রকল্প "ইউটিলিটিস" রয়েছে যেখানে আমরা পরীক্ষার সাথে এই সমস্ত ছোট পদ্ধতি সংরক্ষণ করি।

যখন কোনও প্রকল্পের কিছু উপযোগ প্রয়োজন তখন এটি "লিঙ্ক হিসাবে যুক্ত করুন" এর সাথে প্রয়োজনীয় পদ্ধতির সাথে উত্স ফাইলটি যুক্ত করে।

এর অর্থ এই যে কোনও রান টাইম নির্ভরতা যুক্ত হয়নি (অন্তর্ভুক্ত ফাইলটির প্রয়োজন না হলে)।

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

ইউটিলিটি প্রকল্পের সাথে একটি জটিলতা হ'ল আইটেমগুলিতে দৃশ্যমানতার স্তর নির্ধারণ করা। থাম্বের একটি নিয়ম হল পদ্ধতিগুলি অভ্যন্তরীণ এবং ডেটা স্ট্রাকচারগুলি সর্বজনীন হওয়া উচিত।


2

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

স্পষ্টতই এটি কেবলমাত্র ইন্টারনেট অ্যাপ্লিকেশনগুলির সাথে কাজ করে (এবং একই স্থানীয় নেটওয়ার্কে কেবলমাত্র মিলিসেকেন্ড সময়ে কাজ করে) তবে এর কিছু দুর্দান্ত সুবিধা রয়েছে।


0

আমি সম্প্রতি এই পরিষেবাটি নিয়ে এসেছি: স্নিপ 2 কোড ( http://www.snip2code.com )।

আপনার দলের সাথে কেবলমাত্র আপনার স্নিপেটগুলি (সম্পূর্ণ গ্রন্থাগার নয়) ভাগ করার এটি একটি আকর্ষণীয় উপায়। এটি অন্যান্য প্রকল্পে উল্লেখ করা উচিত এমন সাধারণ লাইব্রেরি তৈরির স্বাভাবিক পয়েন্টটি ভেঙে দেয় এবং আমার মতে এটি একটি মূল্যবান দৃষ্টি।

তদুপরি, অনেকগুলি দৃশ্যধারণ রয়েছে যেগুলি একটি সাধারণ লাইব্রেরির ব্যবহার কেবল প্রয়োগ হয় না: আসুন উদাহরণস্বরূপ সিঙ্গলটন, কৌশল বা পর্যবেক্ষকের মতো কিছু নকশার প্যাটার্ন বিবেচনা করুন। আপনি এই জাতীয় নিদর্শনগুলিকে সমর্থন করতে লাইব্রেরি তৈরি করতে পারেন তবে এখনও 100% কভারেজ নেই।

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

(অস্বীকৃতি: আমি স্নিপ টু কোডের অন্যতম প্রতিষ্ঠাতা, এবং আমি আমার সহ-প্রতিষ্ঠাতাদের সাথে একসাথে ছিলাম - কিছুদিন আগে আপনার একই মানসিকতায়: এই কারণেই আমরা এই প্রকল্পটি শুরু করার সিদ্ধান্ত নিয়েছিলাম !!)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.