"Lib" এবং "বিক্রেতা" ফোল্ডারগুলির মধ্যে পার্থক্য কী?


103

উত্স ফোল্ডার শ্রেণিবিন্যাস সম্পর্কে, সর্বদা কিছু সাধারণ বৈশিষ্ট্য থাকে যেমন src, docবা testফোল্ডারগুলি, যা সহজে বোঝার মতো সামগ্রী রয়েছে।

যাইহোক, আমি বুঝতে পেরেছি যে বড় প্রকল্পগুলির একটি libএবং vendorফোল্ডার উভয়ই রয়েছে , এবং আমি সর্বদা ভেবেছিলাম যে সেগুলি একই, কারণ তাদের নামগুলি " librariesবাহ্যিক থেকে তৃতীয় পক্ষ" অন্তর্ভুক্ত করার ইঙ্গিত হিসাবে vendors। যদিও উভয় একই প্রকল্পে এইজন্য মানে হল একটি পার্থক্য।

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


এখানে সিমফোনি সহ আরও বিশদ উদাহরণ রয়েছে : একবার আপনি একটি প্রকল্প তৈরি করলে আপনি libআপনার প্রকল্পের মূলের একটি ফোল্ডার পাবেন । এই ফোল্ডারে, নিম্নলিখিত কাঠামোটি পাওয়া যায়:

lib
+--filter
+--form
+--…
+--vendor
    +--simpletest
    +--symfony

এখানে, symfonyফোল্ডারে সিমফোনির সমস্ত মূল রয়েছে।


3
@ ইয়ানিসরিজস আমি জানি এটি তাদের উত্সে নেই। একবার আপনি কোনও প্রকল্পে কাজ শুরু করে মডিউল তৈরি করতে শুরু করলেও, আপনি lib/vendorএবং অন্যান্য ডিরেক্টরিগুলি সমাপ্ত করবেন vendor। এবং তারা একমাত্র না"সবাই যে কোনও ডিয়ার স্ট্রাকচার নির্বাচন করতে পারে" হ্যাঁ, ধন্যবাদ। প্রত্যেকে চাইলেই কোড করতে পারে। যদি আমি src"ওউডজিগৌগা" কল করতে পারি তবে আমি পারি। আমি জিজ্ঞাসা করছি না আমি পারব কিনা তবে গুরুতর ও সুপরিচিত অন্যরা কেন এমন কিছু করে যা ভাল অনুশীলনের মতো দেখায়।
ম্যাটিএসজি

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

1
বিটিডব্লিউ, আপনি নিজেরাই প্রশ্নটিতে মন্তব্যগুলিতে স্পষ্টতা যুক্ত করতে পারবেন?
ইয়ানিস

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

1
আপনি / lib / এ জিনিসগুলি স্পর্শ করতে পারেন, আপনি / বিক্রেতা / তে জিনিসগুলিকে স্পর্শ করতে পারবেন না
টিমো হুভিনেন

উত্তর:


64

আমি যখন কোনও ডিরেক্টরি libবা librariesডিরেক্টরি দেখি , তখন আমার মনে হয়:

  • গ্রন্থাগারগুলি, প্লাগইনগুলি, মডিউলগুলি নয় etc.
  • পদ্ধতিগত পরিবর্তে ওওপি, যেখানে এটি প্রযোজ্য (যেমন পিএইচপি)

আমি যখন কোনও vendorডিরেক্টরি দেখি , তখন আমার মনে হয়:

  • লাইব্রেরি, প্লাগইনস, মডিউলগুলি, উপাদানগুলি ইত্যাদি libra কেবল গ্রন্থাগার নয়, তৃতীয় পক্ষের সরবরাহকৃত কিছু।
  • এবং স্টাফ যা আইকন সেটের মতো কোড নয়।

আমি যখন দেখি libএবং vendorডিরেক্টরিগুলি দেখি তখন আমি কয়েকটি স্বাতন্ত্র্য মনে করি:

  1. libকেবল গ্রন্থাগার ধারণ করে, vendorসত্যিই কিছু থাকতে পারে,
  2. libযেখানে আমার লাইব্রেরিগুলি রাখা উচিত, vendorযেখানে আমার তৃতীয় পক্ষের কিছু রাখা উচিত (মূল লেখকের কোড সহ),
  3. libযেখানে প্রকল্পের মূল লেখকের লাইব্রেরিগুলি অবস্থিত (যদি তা আমি না হয়), vendorযেখানে মূল লেখক তৃতীয় পক্ষকে কিছু রেখেছিলেন।
  4. আপনি নিরাপদে ধরে নিতে পারেন যে যা আছে তা libপ্রকল্পের বাকি অংশের মতো একই লাইসেন্সের আওতায় লাইসেন্সযুক্ত।

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


নির্দিষ্ট সিমফনি উদাহরণ হিসাবে: সিমফনি একটি কাঠামো এবং আমি মনে করি যে বিকাশকারীরা কী বলতে চাইছেন তা হ'ল একটি সিমফোনির অ্যাপ্লিকেশনটিতে ফ্রেমওয়ার্কের মূল লাইব্রেরিগুলি বিক্রেতার কোড, অর্থাত্ কোনও তৃতীয় পক্ষ থেকে আসে এবং অ্যাপ্লিকেশনটির মূল লেখকের কাছ থেকে আসে না (আপনি).


2
আইএমএইচও-তে "(স্টাফ যা কোড নয়)" dataবা resources(বা এর লাইন ধরে আরও সুনির্দিষ্ট কিছু img) থাকবে। তদুপরি, আমাদের সিমফোনির উদাহরণে, vendorসমস্ত সিম্ফনি কোর অন্তর্ভুক্ত রয়েছে, সুতরাং আমি যদি আপনার "মূল লেখক"
প্রজ্ঞা

1
@ মাটিএসজি আহা, দুঃখিত, আমি বলছি না এটি চারটি পয়েন্ট মাপসই করা উচিত। শুধু একটি. এবং "স্টাফ যা কোড নয়" একটি ডিরেক্টরি resourcesবা assetsডিরেক্টরিতে থাকা উচিত , তবে প্রকল্পের উপর নির্ভর করে এটি কোনও vendorডিরেক্টরিতে উপলব্ধি করতে পারে (আমি assetsসত্যিই পছন্দ করি)।
ইয়ানিস

4
একক বা বহুবচন এর চেয়ে ভাল আর কী? libবনাম libsএবং vendorবনাম vendors?
কোয়াং

4
@ কোয়াং সর্বাধিক জনপ্রিয় প্রকল্পগুলিতে আমি একক ব্যবহার করেছি, তবে কোনটি ভাল তা আমার কোনও ধারণা নেই।
ইন্নিস

@ ইন্নিসরিজস: আপনাকে প্রক্রিয়াগত পরিবর্তে ওওপি সম্পর্কে কী ভাবতে বাধ্য করে?
ম্যাট ও'ব্রায়ান

21

@ ওয়েনএম এর উত্তরকে সাধারণীকরণ করা তবে এটিকে এত সম্পাদনা করার সাহস নেই।

সুতরাং, মনে হয় অ্যাপ্লিকেশন ফ্রেমওয়ার্কগুলিতে এই কাঠামোটি পর্যবেক্ষণ করা যেতে পারে (কমপক্ষে রেলস এবং সিমফনি)।

এটা তোলে রাখার একটি উপায় হল lib/ srcযখন অন্যান্য যোগ গঠন আবেদন ডেভেলপারদের জন্য অক্ষত, দূরত্বের স্তর একটি কাঠামো ব্যবহার দ্বারা এসেছে: vendorফোল্ডারের আসলে ফ্রেমওয়ার্ক এর লাইব্রেরি, যাব রয়েছে libলাইব্রেরি অন্তর্ভুক্ত অ্যাপ্লিকেশনের জন্য ফোল্ডার এবং srcতার উৎসের জন্য নথি পত্র.

এটি একটি "আরও দূরের" lib, যেহেতু কাঠামো ছাড়াই প্রয়োজনীয়, অ্যাপ্লিকেশনটি অকেজো, তবে অ্যাপ্লিকেশনটির বিকাশকারী দ্বারা স্পর্শ করা উচিত নয়: এটি ফ্রেমওয়ার্ক বিক্রেতার লাইব্রেরি


10

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


2

থেকে পাগল অ্যাসেট পাইপলাইন নির্দেশিকা :

  • app/assets অ্যাপ্লিকেশনটির মালিকানাধীন সম্পদের জন্য যেমন কাস্টম চিত্র, জাভাস্ক্রিপ্ট ফাইল বা স্টাইলশিট।

  • lib/assets এটি আপনার নিজের লাইব্রেরির কোডের জন্য যা অ্যাপ্লিকেশন বা অ্যাপ্লিকেশন জুড়ে ভাগ করা লাইব্রেরির ক্ষেত্রের সাথে সত্যই ফিট করে না।

  • vendor/assets বিদেশী সত্তা যেমন জাভাস্ক্রিপ্ট প্লাগইন এবং সিএসএস ফ্রেমওয়ার্কের কোড হিসাবে মালিকানাধীন সম্পদের জন্য।

আমি জানি এটি কোনও রেল-নির্দিষ্ট প্রশ্ন নয়, তবে ব্যাখ্যাটি ভাল এবং পরিষ্কার এবং সম্ভবত অন্যান্য ফ্রেমওয়ার্ক / প্রকল্প কাঠামো পর্যন্ত প্রসারিত।

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