একটি জাভা প্রকল্পের জন্য প্যাকেজ কাঠামো?


116

জাভা ওয়েব অ্যাপ্লিকেশনটিতে প্যাকেজ কাঠামো স্থাপনের সেরা অনুশীলন কী?

আপনি কীভাবে আপনার এসসিআর, ইউনিট পরীক্ষার কোড ইত্যাদি সেটআপ করবেন?

উত্তর:


95

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


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

15
আপনি ডিরেক্টরি অনির্দিষ্টটি তৈরি করতে এই অনেলাইনারটি ব্যবহার করতে পারেন: mkdir -p src / {প্রধান / ava জাভা, সংস্থানসমূহ, ফিল্টারগুলি, সমাবেশ, কনফিগারেশন, ওয়েবঅ্যাপ}, পরীক্ষা / ava জাভা, সংস্থানসমূহ, ফিল্টারগুলি site, সাইট}
ড্যানিয়েল হিপার

1
মাভেনের স্ট্যান্ডার্ড প্রকল্পের লেআউটটি কুৎসিত ...: /
ইউশা আলেয়াউব

2
@ ইউসু আলেউউব আপনাকে এটি বিয়ে করতে হবে না
আশ্বিন শর্মা

59

এখানে কয়েকটি বিদ্যমান সংস্থান রয়েছে যা আপনি যাচাই করতে পারেন:

  1. আপনার জাভা ক্লাসগুলি যথাযথভাবে প্যাকেজ করুন
  2. স্প্রিং 2.5 আর্কিটেকচার
  3. জাভা টিউটোরিয়াল - একটি প্যাকেজের নামকরণ
  4. সান নামকরণ কনভেনশনস

এটির মূল্যের জন্য, আমার নিজের ব্যক্তিগত নির্দেশিকাগুলি যা আমি ব্যবহার করি তা নিম্নরূপ:

  1. বিপরীত ডোমেন দিয়ে শুরু করুন, যেমন "com.mycompany"।
  2. পণ্যের নাম ব্যবহার করুন, যেমন "মাই প্রোডাক্ট"। কিছু ক্ষেত্রে আমার সাধারণ প্যাকেজগুলি থাকে যা কোনও নির্দিষ্ট পণ্যের সাথে সম্পর্কিত নয়। এগুলি এই সাধারণ শ্রেণীর কার্যকারিতা অনুসারে শ্রেণিবদ্ধ করা হবে, যেমন "io", "ইউজার", "ইউআই" ইত্যাদি etc.
  3. এর পরে এটি আরও ফ্রি-ফর্ম হয়ে যায়। সাধারণত আমি প্রকল্প, কার্যকারিতা, স্থাপনা ইত্যাদি ক্ষেত্র অনুসারে গোষ্ঠী করি For

অন্যান্য কয়েকটি বিষয়:

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

2
বিপরীত ডোমেনের ক্ষেত্রে ("com.mycompany"), "মাইকম্পানি" সাবপ্যাকেজ বাদে সাধারণত "কম" প্যাকেজটি খালি থাকে?
অ্যালেক্স পার্কার

45

আমি আপনার প্যাকেজ কাঠামোটি বৈশিষ্ট্য দ্বারা তৈরি করার পরামর্শ দেব, বাস্তবায়ন স্তর দ্বারা নয়। এ সম্পর্কে একটি ভাল লিখন আপ জাভা অনুশীলন: বৈশিষ্ট্য অনুসারে প্যাকেজ, স্তর নয়


2
ধন্যবাদ। আমি এই
বিষয়টিকে

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

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

6

আমি সাধারণত নিম্নলিখিতগুলি পেতে পছন্দ করি:

  • বিন (বাইনারি)
  • ডক (নথি)
  • inf (তথ্য)
  • lib (গ্রন্থাগারসমূহ)
  • পুনরায় (সংস্থানসমূহ)
  • src (উত্স)
  • tst (পরীক্ষা)

এগুলিকে অপ্রচলিত হিসাবে বিবেচনা করা যেতে পারে তবে জিনিসগুলি সাজানোর জন্য এটি খুব সুন্দর উপায় বলে মনে করি।


"এইসব রীতিবিরুদ্ধ বিবেচনা করা হতে পারে" তারা আসলে রীতিবিরুদ্ধ এবং উপায় দ্বারা খারাপ হয় ...
mahieddine

2
@ মাহিয়াদেদিন আপনি এগুলি খারাপ কেন ভাবেন?
টমাস

তবে এটি আমার পক্ষে কে ছিল না, তবে এখানে আমার কিছু চিন্তাভাবনা রয়েছে: আপনার পরীক্ষার ক্লাসগুলি সোর্স কোড তাই ডিরেক্টরি "tst" (বেশিরভাগ মানুষ পরীক্ষার বিটিডব্লু সংক্ষেপ করে না) এসসিআর-র একটি উপ ডিরেক্টরি হতে হবে (উদাঃ " src "" src / main "এবং" tst "" src / test "হয়ে যায়)। এছাড়াও "inf" এমন সামগ্রী অন্তর্ভুক্ত বলে মনে হয় যা "ডক" এ থাকতে পারে।
নিকো ওয়াওরজিনিয়াক

6
The way I usually organise is
- src
        - main
                - java
                - groovy
                - resources
        - test
                - java
                - groovy
- lib
- build
        - test 
                - reports
                - classes
- doc

3

আমার সাধারণত যেভাবে ফোল্ডার- এর আমার শ্রেণিবিন্যাস রয়েছে -

  • প্রকল্পের নাম
    • src
    • বিন
    • পরীক্ষা
    • লিব
    • ডক্স

1

আর একটি উপায় হ'ল এপিআই, পরিষেবা এবং সত্ত্বাকে বিভিন্ন প্যাকেজের মধ্যে আলাদা করা।

এখানে চিত্র বর্ণনা লিখুন

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