আমার উত্স গাছটি কীভাবে সংগঠিত করব?


89

আমি বেশিরভাগ ওয়েব-প্রকল্পে (ডাব্লু / এলএএমপি) এবং প্রায়শই গড়ে প্রায় স্কেলের সি / সি ++ (নন-জিইউআই) প্রকল্পগুলিতে কর্মরত একজন স্বতন্ত্র বিকাশকারী am

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

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

আমি জিজ্ঞাসা করতে চাই:

  • এমন কোনও নীতি / যুক্তি / সেরা-অনুশীলন রয়েছে যা আমার উত্স গাছের কাঠামোয় আরও ভালভাবে সহায়তা করতে পারে?
  • প্রকল্পের বিশ্লেষণের উপর ভিত্তি করে এমন কোনও গ্রাফিকাল / ডায়াগ্রাম্যাটিক কৌশল রয়েছে (উদাহরণস্বরূপ: ডেটাফ্লোয়ের ক্ষেত্রে ডিএফডি) যা আমাকে আমার উত্স বৃক্ষটি আগে কল্পনা করতে সহায়তা করতে পারে?
  • প্রকল্পের সাথে যুক্ত মাল্টি-মিডিয়া ফাইল-ট্রি গঠনের জন্য কোন কৌশল অবলম্বন করবেন?

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


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

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

3
সম্ভবত আপনি যখন এই ধরণের প্রশ্ন করার বিষয়টিতে পৌঁছে যান, তখন কিছু সরঞ্জাম আপনার জন্য কিছু কাজ করার সুযোগ দেবে। এবং লগিং স্পষ্টভাবে ক্রস-ক্রিয়ামূলক উদ্বেগ, অ্যাপ্লিকেশনটির সমস্ত অংশ দ্বারা ব্যবহৃত হয় (যদি আপনি লগিংয়ের প্রয়োজন এমন কোড ব্যবহার করেন)। আরেকটি ছোট্ট কথাটি হ'ল, "কোডটি যে কোড ব্যবহার করে তার উপরে রাখুন", তাই লগিং শীর্ষের কাছাকাছি হওয়া উচিত, সম্ভবত \ ইউটিলিটিগুলিতে।
জন স্যান্ডার্স

@ জন: অনেক প্রশংসা করেছেন হতে পারে আমার কোনও আইডিই সন্ধান করা উচিত। গ্রহণটি আশাব্যঞ্জক বলে মনে হচ্ছে।
চেক 123

1
@ চেক 123 "... টুকরাগুলি তিন-চারবার পুনরায় সাজানো ..." প্রচলিত অনুশীলন: "সুতরাং ম্যানেজমেন্ট প্রশ্নটি পাইলট সিস্টেম তৈরি করে ফেলে দেওয়া হবে কিনা তা নয়। আপনি এটা করবেন। শুধু প্রশ্ন আগাম পরিকল্পনা কিনা বিজ্ঞাপন তৈরি, অথবা গ্রাহকদের বিজ্ঞাপন প্রদান করা প্রতিশ্রুতি হয় "- ফ্রেডেরিক পি ব্রুকস জুনিয়র, পৌরাণিক ম্যান-মাসের। সফটওয়্যার ইঞ্জিনিয়ারিং প্রবন্ধ
shawnhcorey

উত্তর:


25

উত্স ট্রি লেআউটটি স্থাপত্য প্রতিফলন করা উচিত; রূপান্তর হিসাবে, একটি সু-কাঠামোগত আর্কিটেকচার একটি সু-কাঠামোগত উত্স গাছের বিন্যাসে নিয়ে যেতে পারে। আমি POSA1 স্তর প্যাটার্নটি পড়ার পরামর্শ দিচ্ছি , আপনার আর্কিটেকচারকে একটি স্তরযুক্ত কাঠামোর সাথে ফিট করার চেষ্টা করুন, তারপরে ফলস্বরূপ প্রতিটি স্তরকে নামকরণ করুন এবং এটি আপনার উত্স শ্রেণিবদ্ধের ভিত্তি হিসাবে ব্যবহার করুন। বেসলাইন হিসাবে একটি সাধারণ তিন স্তরের আর্কিটেকচার গ্রহণ :

  • উপস্থাপনা / ওয়েব সার্ভিস (আমাদের ব্যবসায়িক যুক্তিতে একটি ওয়েব-পরিষেবা ইন্টারফেস উপস্থাপন করুন)
  • যুক্তি / * (ব্যবসায়িক লজিক মডিউলগুলি এখানে প্রবেশ করে)
  • স্টোরেজ / এসকিউএল (এখানে ব্যাক-এন্ড স্টোরেজ এপিআইগুলি - এটি একটি ডাটাবেসে সঞ্চয় করতে একটি এসকিউএল ইন্টারফেস ব্যবহার করে)
  • ব্যবহার / * (ইউটিলিটি কোড - অন্যান্য সমস্ত স্তর দ্বারা ব্যবহারযোগ্য, কিন্তু এটি বাইরের ব্যবহারকে উল্লেখ করে না, এখানে যায়)

মনে রাখবেন যে স্তরগুলিতে সরাসরি কোড থাকে না, বরং মডিউলগুলি সংগঠিত করার জন্য কঠোরভাবে ব্যবহৃত হয়।

একটি মডিউলের মধ্যে, আমি নিম্নলিখিত ধরণের লেআউটটি ব্যবহার করি:

  • <module> (সরাসরি মডিউল যাওয়ার পথ; মডিউলার ইন্টারফেস সংজ্ঞায়িত করা হয়)
  • <module>/impl/<implName> (মডুলার ইন্টারফেসের একটি নির্দিষ্ট প্রয়োগ)
  • <module>/doc (মডিউলটি ব্যবহারের জন্য ডকুমেন্টেশন)
  • <module>/tb (মডিউলটির জন্য ইউনিট-পরীক্ষা কোড)

যেখানে এটি <module>নির্ভর করে তার স্তর অনুসারে সংগ্রহস্থলটিতে অবস্থিত।



আপনি কীভাবে সুরক্ষিত ফাইলগুলি পরিচালনা করবেন - যে ফাইলগুলি কেবলমাত্র অনুমোদিত ব্যবহারকারীরা পোস্ট লগইন অ্যাক্সেস করতে পারে?
চেক 123

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

48

আমি আপনাকে সত্যিই ওয়েবপ্রজেক্ট সম্পর্কিত অনেক পরামর্শ দিতে পারি না, তবে আমি এখানে একটি প্রোগ্রামিং প্রকল্পে আমার গাছটিকে কীভাবে গঠন করি (মূলত একটি সি / সি ++ দৃষ্টিকোণ থেকে):

  • /
    • src - উত্স ফাইলগুলি আমার দ্বারা লিখিত
    • ext - তৃতীয় পক্ষের লাইব্রেরি রয়েছে
      • libname-1.2.8
        • অন্তর্ভুক্ত - শিরোনাম
        • lib - সংকলিত lib ফাইল
        • Donwload.txt - ব্যবহৃত সংস্করণটি ডাউনলোড করতে লিঙ্ক ধারণ করে
    • আদর্শ - আমি এখানে প্রকল্প ফাইল সঞ্চয় করি
      • vc10 - আমি IDE এর উপর নির্ভর করে প্রজেক্ট ফাইলগুলি সাজাই
    • বিন - সংকলিত উদাহরণ এখানে যায়
    • বিল্ড - সংকলক এর বিল্ড ফাইল
    • ডক - কোনও প্রকারের ডকুমেন্টেশন
    • README
    • INSTALL
    • কপি

কয়েকটি নোট:

  1. যদি আমি একটি লাইব্রেরি লিখছি (এবং আমি সি / সি ++ ব্যবহার করছি) আমি আমার উত্স ফাইলগুলি প্রথমে "অন্তর্ভুক্ত" এবং "এসসিআর" নামে দুটি ফোল্ডারে এবং তারপরে মডিউল দ্বারা সংগঠিত করতে যাচ্ছি। যদি এটি কোনও অ্যাপ্লিকেশন হয়, তবে আমি কেবল তাদের মডিউল দ্বারা সংগঠিত করতে যাচ্ছি (শিরোনাম এবং উত্সগুলি একই ফোল্ডারে যাবে)।

  2. আমি উপরের তালিকাগুলিতে তালিকাভুক্ত ফাইল এবং ডিরেক্টরিগুলি আমি কোড ভাণ্ডারে যুক্ত করব না।


মধ্যে পার্থক্য কি IDE এবং বিল্ড ?
এম ডুডলি

3
ideআমি যেখানে প্রকল্পের ফাইলগুলি নিজেরাই সঞ্চয় করি। buildসংকলক দ্বারা উত্পাদিত অবজেক্ট ফাইল রয়েছে। বিভিন্ন IDEs একই সংকলক ব্যবহার করতে পারে, তাই আমি আইডিই প্রকল্প ফাইলগুলি সংকলক দ্বারা নির্মিত অবজেক্ট ফাইল থেকে পৃথক রাখি।
পল

সুতরাং বিল্ড == আপত্তি (অন্যান্য অনেক সিস্টেমে ব্যবহৃত শব্দটি)
gbjbaanb

@ জিবিজ্বানব হ্যাঁ, আমি অনুমান করি। ডিরেক্টরিটি সংগ্রহস্থলটির দিকে ধাক্কা দেয় না বলে এটি আসলেই গুরুত্বপূর্ণ নয়। :) আমি এটিকে 'বিল্ড' বলেছি কারণ এটিই আমি যে আইডিই ব্যবহার করছিলাম সেটি এটি (ভিজ্যুয়াল স্টুডিও) বলে called
পল

আপনার এক্সিকে চালানোর জন্য কিছুটা ডিএল প্রয়োজন হলে কী হবে? আপনি কি সমস্ত dll ফাইলকে একই দির যেমন এক্সপি হিসাবে অনুলিপি করছেন? আপনি কি কিছু পোস্ট-বিল্ড ইভেন্ট ব্যবহার করেন?
ওয়াকান টানকা

14

যদিও ম্যাভেন স্ট্যান্ডার্ড ডিরেক্টরি লেআউট জাভা সম্পর্কিত নির্দিষ্ট ধরণের, তবে এটি অন্যান্য ধরণের প্রকল্পের জন্যও ভাল ভিত্তি হিসাবে কাজ করতে পারে।

এখানে মূল কাঠামোটি রয়েছে (আপনি 'জাভা' ডিরেক্টরিগুলি 'পিএইচপি', 'সিপিপি', ইত্যাদি দিয়ে প্রতিস্থাপন করতে পারেন):

src/main/java       Application/Library sources 
src/main/resources  Application/Library resources  
src/main/filters    Resource filter files 
src/main/assembly   Assembly descriptors 
src/main/config     Configuration files 
src/main/webapp     Web application sources 
src/test/java       Test sources 
src/test/resources  Test resources 
src/test/filters    Test resource filter files 
src/site            Site 
LICENSE.txt         Project's license 
NOTICE.txt          Notices and attributions required by libraries
README.txt          Project's readme

কাঠামোটি মূলত 'src / main' এবং 'src / test' এ বিভক্ত হয় তারপরে টাইপ অনুসারে গোষ্ঠীভুক্ত হয়।


5

আমি কনভেনশন সম্পর্কে সত্যই জানি না তবে আমার সমস্ত প্রধান প্রকল্পগুলি সিমফনি ফ্রেমওয়ার্ক ব্যবহার করে সম্পন্ন হয়েছে এবং আমি গাছের কাঠামোর সাথে অভ্যস্ত হয়ে উঠছি:

রুট /

  • অ্যাপস
  • অ্যাপ্লিকেশন নাম
    • কনফিগার (অ্যাপ্লিকেশন নির্দিষ্ট কনফিগার ফাইল)
    • lib (অ্যাপ্লিকেশন নির্দিষ্ট পিএইচপি ফাইল)
    • মডিউল (কার্যকারিতার মডুলার বিতরণ)
      • module_name
        • টেমপ্লেটস (এইচটিএমএল)
        • ক্রিয়া (পিএইচপি কোড)
  • কনফাইং (প্রকল্পের কনফিগারেশন ফাইল)
  • lib (পিএইচপি কোড যা গর্ত প্রকল্পে ব্যবহৃত হতে পারে)
  • মডেল (ক্লাস যা প্রকল্পের তথ্য উপস্থাপন করে)
    • ভিত্তি
  • ফর্ম (পিএইচপি ফাইলগুলি যা ফর্মগুলি পরিচালনা করে, এটি সিমফনি ছাড়াই অর্জন করা বেশ কঠিন হতে পারে)
    • বেস (বেস ফর্ম ক্লাস)
  • ওয়েব
  • CSS
    • চিত্র
    • file.css
  • JS
  • লগ (লগ ফাইল যা উত্পন্ন হতে পারে)
  • ডেটা (ডাটা সুনির্দিষ্ট তথ্য, যেমন এসকিউএল প্যাচ, বা যা কিছু)
  • SQL
  • প্লাগইনস (প্রকল্পের যে কোনও অ্যাপ্লিকেশনের সাথে একত্রীকরণযোগ্য গ্রন্থাগারগুলি)

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


আপনার সিএসএস ফোল্ডারটি কেন্দ্রীভূত? মানে আপনার সমস্ত সিএসএস (প্রকল্প জুড়ে) একই ডিরেক্টরিতে আছেন?
123

অগত্যা, আপনি এটি ভাগ করতে পারেন, তবে আমার বেশিরভাগ প্রকল্পে কেবলমাত্র দুটি অ্যাপ্লিকেশন রয়েছে (সম্মুখভাগ এবং ব্যাকএন্ড),
এতগুলি

5

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

...\products\
...\products\productName\
...\products\productName\doc\

...\systems\
...\systems\systemName\
...\systems\systemName\doc\
...\systems\systemName\res\
...\systems\systemName\build\
...\systems\systemName\test\

...\library\
...\library\libraryName\
...\library\libraryName\doc\
...\library\libraryName\build\
...\library\libraryName\test\

...\devops\

পণ্য

পণ্য প্রতি এক ফোল্ডার; সফ্টওয়্যার কীভাবে ব্যবসাকে সমর্থন করে তা যোগাযোগ করতে সহায়তা করে।

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

পণ্য এবং সিস্টেমগুলি পৃথক করে আমরা ব্যবসায়ের গ্রাহক-মুখের দিকে পুনঃব্যবহারের সম্ভাবনাটি যোগাযোগ করি এবং প্রতি পণ্য সিলোগুলি ভেঙে ফেলি। (এটি একই সমস্যার সাথে "পণ্য লাইন" পদ্ধতির সাথে বিপরীতে রয়েছে)

সিস্টেম

প্রতি সিস্টেমের জন্য একটি ফোল্ডার; সংগ্রহস্থলের সামগ্রীর প্রাথমিক ক্ষমতা এবং সুযোগ / মান যোগাযোগ করতে সহায়তা করে।

  1. বিল্ড ও স্থাপনার পরিবেশ নির্দিষ্ট করে "কনফিগারেশন পরিচালন" ফাইলগুলি।
  2. সিস্টেম-স্তর পরীক্ষার কনফিগারেশন (তাৎপর্যপূর্ণ পরিমাণ হতে পারে)।
  3. শীর্ষ স্তরের যুক্তি & কার্যকারিতা; গ্রন্থাগার ফাংশন দ্বারা সবচেয়ে ভারী উত্তোলন করা হচ্ছে।

গ্রন্থাগার

পুনরায় ব্যবহারযোগ্য উপাদানগুলি বিভিন্ন সিস্টেম দ্বারা চালিত। বেশিরভাগ উন্নয়ন কর্মকাণ্ডগুলি সিস্টেমের চেয়ে লাইব্রেরি উত্পাদনকে ঘিরে সংগঠিত হয়, তাই পুনরায় ব্যবহারটি বিকাশ প্রক্রিয়াটিতে "বেকড ইন" করা হয় is

devops

বিল্ড, ক্রমাগত একীকরণ এবং অন্যান্য বিকাশ অটোমেশন কার্যকারিতা।

উপসংহার

উত্স ট্রি হ'ল ডকুমেন্টেশনের একটি মূল টুকরো এবং ব্যবসায়ের মালিকানা প্রযুক্তির সাথে সম্পর্কের পদ্ধতির কাঠামো এবং মনোবিজ্ঞানকে আকার দেয়।

এই পদ্ধতির জন্য চালকদের এই প্রশ্নের আমার উত্তরে কিছুটা গভীরতার সাথে ব্যাখ্যা করা হয়েছে: https://softwareengineering.stackexchange.com/questions/43733/Wo-organizes-your-matlab-code/59637#59637


দ্রষ্টব্য: INCOSE সিস্টেম ইঞ্জিনিয়ারিং হ্যান্ডবুকে আলোচিত পণ্যের স্তরক্রমের সাথে সামঞ্জস্যপূর্ণ এমনভাবে ফোল্ডারগুলির নাম রাখা কার্যকর হতে পারে।
উইলিয়াম পায়েেন

3

প্রতিটি প্রকল্পের জন্য আমি যা করার চেষ্টা করছি তার মতো:

  • src - উত্স ফাইলগুলি, সহজেই ফাইলগুলি পুনরুদ্ধার করতে প্রতিটি নেমস্পেস / প্যাকেজের ফোল্ডার (এমনকি সি / সি ++ এর জন্য শিরোনাম ফাইলগুলি)
  • এক্সটোরাল / তৃতীয় পক্ষের লাইব্রেরিগুলির জন্য এক্সটার্নালগুলি যুক্ত করা সহজ (যেমন এসভিএন সংগ্রহস্থল)। ভিতরে, প্রতিটি লাইব্রেরির জন্য একটি ফোল্ডার (বাইনারি এবং ফাইল অন্তর্ভুক্ত)
  • বিন - নির্মিত বাইনারিগুলির জন্য, দ্রুত মুক্তির জন্য রফতানি করা যেতে পারে
    • ইনক - সি / সি ++ হেডার ফাইলের জন্য (আইডিই / মেকফিল / ইত্যাদি দ্বারা অনুলিপি করা হয়েছে)
  • আউট - সমস্ত অস্থায়ীভাবে উত্পন্ন ফাইলগুলির (.class, .obj ইত্যাদি ...) জন্য এবং এটি উপেক্ষা করা যেতে পারে (উদাহরণস্বরূপ এসভিএন দ্বারা)
  • ডক - কোনও ডকুমেন্টেশনের জন্য, সাধারণত অক্সিজেন দিয়ে তৈরি
  • পুনরায় - এখানে সংস্থান স্থাপন করে, প্রোগ্রাম দ্বারা ব্যবহৃত টেক্সট উত্স ফাইল এবং বাইনারি সংস্থানগুলি পৃথক করা সম্ভব। সত্যিই আমার ভিতরে নির্দিষ্ট শ্রেণিবদ্ধতা নেই।
    • কনফিগারেশন - কিছু কনফিগারেশন ফাইলের জন্য
    • অঙ্কনযোগ্য - কিছু ছবি বা আইকনগুলির জন্য

আপনি যদি কেবলমাত্র সেগুলির মধ্যে একটি ব্যবহার করেন তবে সমস্ত আইডিইর ফাইল বা মেকফিলগুলি সরাসরি মূলে সংরক্ষণ করা হয়।


2

আমি এরকম কিছু করি। ক্রস প্ল্যাটফর্ম গেমের জন্য ভাল কাজ করে যা আমি আমার অতিরিক্ত সময়ে করছি। দুর্ভাগ্যক্রমে কাজের ক্ষেত্রে বিষয়গুলি খুব কম সংগঠিত হয় ...

Output                      <-- Build outputs
Docs
External
   <libname>
      Include
      Lib
Data
<ProjectName>.xcodeproj
<ProjectName>VS2010
Source
Temp                        <-- Intermediate stuff from builds and other tools
Tools

2

আমার দলগুলির জন্য, আমরা টিম প্রসঙ্গে স্যুইচ করে এবং প্রতিবারের মতো পুনরায় বিতরণ করা এড়াতে যেমন বিষয়গুলি সন্ধান করা যায় তবে প্রজেক্টগুলিতে একটি স্ট্যান্ডার্ড কাঠামো প্রয়োগ করার চেষ্টা করি। সমস্ত প্রকল্পের সমস্ত সিস্টেমের প্রয়োজন হয় না তাই আমরা ন্যূনতম সেট দিয়ে শুরু করি।

/ উৎসে / কম্পোনেন্ট / ভাষা

/ উত্স / উপাদান / তৃতীয় পক্ষ /

/ডকুমেন্টেশন প্রয়োজনীয়তা

/ নথিপত্র / ডিজাইন

/ টেস্টে / অটোমেটেড / ইউনিট

/ টেস্টে / অটোমেটেড / ToolName

/ টেস্টে / ম্যানুয়াল

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


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

2

আমি এই পৃষ্ঠাতে উপস্থাপনিত ধারণাগুলি পছন্দ করি www.javapractices.com/topic/TopicAction.do?Id=205 । মূলত, প্রস্তাবটি হ'ল আপনার প্রকল্পটি বৈশিষ্ট্যগুলিতে (বা মডিউলগুলি, উপাদানগুলি) সাজানো। সেখানে উপস্থিত কারণগুলি ছাড়াও:

  1. আপনি যে কোডটির উপরে কাজ করছেন তার সুযোগ সম্পর্কে আপনি যখন ভাবেন তখন কম জ্ঞানীয় লোড আপনার গ্যারান্টি রয়েছে যে আপনি যে বৈশিষ্ট্যটিতে কাজ করছেন তার কোনও কোডই "বৈশিষ্ট্য-বেসরকারী"।
  2. সুরক্ষার একটি অতিরিক্ত বোধ থাকে যখন আপনার গ্যারান্টি দেওয়া হয় যে আপনি কেবল কোনও বৈশিষ্ট্য দেওয়ার জন্য কোড পরিবর্তন করছেন। উদাহরণস্বরূপ, আপনি যে বৈশিষ্ট্যটিতে কাজ করছেন তা ব্যতীত অন্য কোনও কিছু ভাঙবেন না। আবার এটি "বৈশিষ্ট্য-বেসরকারী" কারণেই।
  3. কম জ্ঞানীয় লোড সহজ কারণ আপনি প্রদত্ত প্যাকেজের জন্য কম ফাইল দেখতে পারেন। আমি নিশ্চিত যে প্রত্যেকে একটি প্যাকেজ দেখেছেন যার মধ্যে 15 টিরও বেশি ফাইল রয়েছে।

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

এখনও অবধি, আমি যে প্রকল্পগুলিতে / জড়িত ছিল সেগুলি এগুলি অনুসরণ করে না। অনেকগুলি কারণ রয়েছে তবে কয়েকটি এখানে রয়েছে:

  1. জাভা ডিফল্ট অ্যাক্সেস মডিফায়ারের ভুল বোঝাবুঝি (এই বই অনুসারে অ্যাক্সেস মডিফায়ারের সবচেয়ে ভুল বোঝাবুঝি )
  2. "আর্গুমেন্টাম অ্যাড পপুলাম": প্যাকেজ-বাই-লেয়ারের প্রচলিত সংস্কৃতি (সম্ভবত # 1 কারণে কারণে)

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

"যেহেতু কোনও ডিজাইনার আপনাকে বলবেন, এটি নকশা প্রক্রিয়ার প্রথম পদক্ষেপ যা বেশিরভাগের জন্য গণনা করা হয় the - ক্রিস্টোফার আলেকজান্ডার

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


2

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

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

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

সুতরাং আমি কোনও বিকাশের সাধারণ ফোল্ডার লেআউটটি জানাতে চেষ্টা করব:

এমভিসি (মডেল ভিউ কন্ট্রোলার) সংস্থার একটি ভাল উদাহরণ দেয়।

রুট উত্স কোডটি এসআরসি (সি ++) বা অ্যাপ (ওয়েব বিকাশ) হতে পারে

এমন একটি ফাইল কাঠামো যাতে শ্রেণিগুলির ক্লাসগুলির স্পষ্ট উদ্দেশ্য না থাকে তা অবশ্যই বিভ্রান্তির কারণ ঘটবে। এটি কেবল কোডটি সংগঠিত করার জন্য নয়, পরিবর্তে এটি অটো-লোডার, শ্রেণি কারখানা, স্থানীয় সঞ্চয়স্থান মোড়ক, দূরবর্তী স্টোরেজ এবং নেমস্পেসিং বজায় রাখতে পারে।

এই ফোল্ডারটির কাঠামোটি লারাভেল ফ্রেমওয়ার্ক থেকে উত্পন্ন এবং সরলিকৃত । এই পোস্টে আমার পছন্দটি বহুবচন নামকরণ তবে আমি আমার প্রকল্পগুলিতে একক শব্দ ব্যবহার করি।


এসআরসি / স্টোরেজ (মডেল / ফাইল-স্টোরেজ / এপিআই / মাইএসকিএল / এসকিএল-লাইট / মেমক্যাচ / পুনরায় প্রয়োগগুলি)

src / repositories (কিছু স্টোরেজ লজিক, একটি সাধারণ ইন্টারফেস এবং রিটার্ন রেজাল্ট কনভেনশন সহ 'স্টোরেজ বাস্তবায়নগুলির একটি মোড়ক))

src / পরিষেবাদি | যুক্তি | সত্তা (অ্যাপ্লিকেশন ব্যবসা যুক্তি)

এসআরসি / কন্ট্রোলার (আপনার পরিষেবায় সার্ভারের অনুরোধগুলি রুটের জন্য ওয়েব বিকাশে ব্যবহৃত হয়)

src / মডিউল | সিস্টেমগুলি (মডিউলার সিস্টেমগুলি যা আপনার কাঠামোর সাধারণ কার্যকারিতা বাড়িয়ে দেয় Services পরিষেবাগুলি মডিউলগুলি ব্যবহার করতে পারে তবে বিপরীতে নয়)

src / helpers (সহায়িকা বা মোড়কের ক্লাস যেমন যেমন স্ট্রিং ম্যানিপুলেশন Many

src / প্রকার (নামযুক্ত এনাম)

সর্বজনীন | বিল্ড | আউটপুট (ওয়েব বা সি ++)

কনফিগারেশন (ফাইল সেটআপ করুন। YAML ক্রস-প্ল্যাটফর্ম কনফিগারেশন ফাইলের জন্য জনপ্রিয় হয়ে উঠছে)

ক্যাশে

লগ

ল্যাং (এনএস / এসইউ / রু / ...)

বুটস্ট্র্যাপ (ফ্রেমওয়ার্ক এবং অ্যাপ্লিকেশন শুরু হয়)

ডকস (মার্কডাউন ফর্ম্যাটে ডকুমেন্টেশন লিখিত। এমডি)

পরীক্ষা (ইউনিট পরীক্ষা)

ডাটাবেস / মাইগ্রেশন (স্ক্র্যাচ থেকে ডাটাবেস কাঠামো তৈরি করুন)

ডাটাবেস / বীজ (পরীক্ষা করার জন্য ডেমি ডেটা দিয়ে আপনার ডাটাবেস পূরণ করে)

libs | বিক্রেতা (সমস্ত তৃতীয় পক্ষের সফ্টওয়্যার। সি ++ এ 'লিবিস' এবং সাধারণত পিএইচপিতে 'বিক্রেতা')

সম্পদ | সংস্থানসমূহ (চিত্র / শব্দ / স্ক্রিপ্ট / জেসন / কোনও মিডিয়া)


1

অবজেক্ট ওরিয়েন্টেটেড ভাষাগুলির সাথে আপনার কাছে নেমস্পেস তৈরির ক্ষমতা রয়েছে। সংযুক্তি এড়ানোর জন্য অ্যাপ্লিকেশনটির অংশগুলি পৃথক করার জন্য ব্যবহৃত লজিক্যাল ব্রেকডাউনটি হ'ল লজিক্যাল ফাইল অবস্থানের ভাঙ্গনের প্রাথমিক উত্স। নাম স্থানগুলি বিচ্ছিন্ন করার কারণ হিসাবে কাপলিং ব্যবহার করা http://en.wikedia.org/wiki/Software_package_metics শুরু করার জন্য ভাল জায়গা ।

অন্যরা বিল্ডের সাথে সম্পর্কিত প্রকল্প স্থাপনের কথা বলেছে, তবে একবার আপনি উত্সটিতে প্রবেশ করলে, এর অর্থ কী তা বোঝায় - আপনি যেভাবে যুক্তিযুক্তভাবে কীভাবে কোডটি বিচ্ছিন্ন করেন তা ব্যবহার করুন।

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