(জাভা) প্যাকেজ সংস্থার জন্য কি সেরা অনুশীলন রয়েছে? [বন্ধ]


201

কিছুক্ষণ আগে, আমি জাভা প্যাকেজগুলির সূক্ষ্ম দান করা সংস্থা সম্পর্কে এখানে একটি প্রশ্নের উত্তর দেখেছি। উদাহরণস্বরূপ, my.project.util, my.project.factory, my.project.service, ইত্যাদি

আমি এখন এটি খুঁজে পাচ্ছি না, তাই আমি পাশাপাশি প্রশ্ন জিজ্ঞাসা করতে পারি।

জাভাতে প্যাকেজগুলির সংগঠনের বিষয়ে সর্বোত্তম অনুশীলন রয়েছে এবং সেগুলিতে কী ঘটে?

আপনি আপনার জাভা প্রকল্পে আপনার ক্লাসগুলি কীভাবে সংগঠিত করবেন?

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

আপনার মতামত এবং মন্তব্য প্রশংসা করা হয়।


74
এই প্রশ্নটি বন্ধ হওয়ার সাথে আমি একমত নই। আমি একমত নই যে সেরা অনুশীলনের প্রশ্নগুলি প্রায়শই অভিজ্ঞতা এবং মতামতের ভিত্তিতে থাকে তবে আমি এই বিষয়ে একমত নই যে এই প্রশ্নগুলি স্ট্যাক ওভারফ্লোতে বন্ধ করা উচিত। এটি সেরা প্রোগ্রামিংয়ের কৌশল, সর্বোত্তম অনুশীলনগুলি ব্যবহার করে এবং সর্বোত্তম সমাধান সন্ধান করা এই মতামত এবং অভিজ্ঞতাগুলি ব্যবহার করে। এই প্রশ্নটি আবার খুলুন।
সিনটেক 3'15

আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি এই পড়ুন: satisfice.com/blog/archives/5164 । টিএল; ডিআর ... "সেরা অনুশীলন" এর পুরো ধারণাটি ভেঙে গেছে। সর্বোপরি এটি একটি বিভ্রান্তিকর মিথ্যোমোজার, সবচেয়ে খারাপ এটি নিখুঁত ক্ষতিকারক।
স্টিফেন সি

উত্তর:


174

প্যাকেজ সংগঠন বা প্যাকেজ কাঠামো সাধারণত উত্তপ্ত আলোচনা হয়। নীচে প্যাকেজ নামকরণ এবং কাঠামোগত সম্পর্কিত কিছু সহজ নির্দেশিকা রয়েছে:

  • জাভা প্যাকেজ নামকরণের সম্মেলনগুলি অনুসরণ করুন
  • আপনার প্যাকেজগুলি তাদের কার্যকরী ভূমিকা এবং তাদের ব্যবসায়ের ভূমিকা অনুসারে কাঠামো করুন
    • আপনার প্যাকেজগুলির কার্যকারিতা বা মডিউল অনুসারে ভেঙে দিন। যেমন com.company.product.modulea
    • আরও বিরতি আপনার সফ্টওয়্যার স্তর উপর ভিত্তি করে হতে পারে। আপনার যদি প্যাকেজে কেবলমাত্র কয়েকটি ক্লাস থাকে তবে ওভারবোর্ডে যাবেন না, তবে প্যাকেজে সমস্ত কিছু থাকার তা বোঝা যায়। যেমন com.company.product.module.webবা com.company.product.module.utilইত্যাদি
    • স্ট্রাকচারিংয়ের সাথে ওভারবোর্ডে যাওয়া এড়িয়ে চলুন, কোনও চাপের প্রয়োজন না হলে আইএমও ব্যতিক্রম, কারখানা ইত্যাদির জন্য পৃথক প্যাকেজিং এড়ান।
  • আপনার প্রকল্পটি যদি ছোট হয় তবে কয়েকটি প্যাকেজ সহ এটি সহজ রাখুন। যেমন com.company.product.modelএবং com.company.product.util, ইত্যাদি
  • অ্যাপাচি প্রকল্পগুলিতে কয়েকটি জনপ্রিয় ওপেন সোর্স প্রকল্পগুলি দেখুন । বিভিন্ন আকারের প্রকল্পের জন্য তারা কীভাবে কাঠামোগত ব্যবহার করে তা দেখুন।
  • নামকরণের সময় বিল্ড এবং বিতরণকেও বিবেচনা করুন (আপনাকে অন্য কোনও প্যাকেজে আপনার এপিআই বা এসডিকে বিতরণ করার অনুমতি দেয়, সার্লেটটি এপিআই দেখুন)

কয়েকটি পরীক্ষা-নিরীক্ষার পরেও আপনি এমন কাঠামো তৈরি করতে সক্ষম হবেন যা আপনি স্বাচ্ছন্দ্যযুক্ত are একটি সম্মেলনে স্থির করা হবে না, পরিবর্তনের জন্য উন্মুক্ত।


আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ. এটি মূলত আমরা অন্তর্ভুক্ত করার চেষ্টা করেছি, তবে প্রচুর সম্পর্কযুক্ত কোডটি আমাদের মটরশুটি প্যাকেজে intoুকেছে, এটিই আমার প্রশ্নটি এসেছে।
সিনটেক

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

আপনার বিষয়গুলির সাথে একমত প্যাকেজে কিছু সময় কোম্পানির নাম সম্পর্কে হাইলাইট করার জন্য এক পয়েন্টটি কোম্পানির অর্জিত পণ্য বিক্রি হয়ে যায়। পরিচালন কোম্পানির নাম মুছে ফেলতে চায় want ওভারহেড হতে পারে।
তুষার ডি

182

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

  • beans
  • factories
  • collections

ভুল.

আমি পছন্দ করি, উদাহরণস্বরূপ:

  • orders
  • store
  • reports

সুতরাং আমি প্যাকেজ দৃশ্যমানতার মাধ্যমে প্রয়োগের বিশদটি গোপন করতে পারি । অর্ডার কারখানা ordersপ্যাকেজে থাকা উচিত যাতে অর্ডার কীভাবে তৈরি করা যায় সে সম্পর্কে বিশদ গোপন করা হয়।


10
এই পোস্টটি প্যাকেজ দৃশ্যমানতা সম্পর্কে একটি ভাল পয়েন্ট তোলে। আমি জাভা প্যাকেজ স্কোপ ব্যবহারে কখনও দেখিনি, তবে সঠিক প্যাকেজ কাঠামোটি বিকাশকারীদের এটির আরও ভাল সুবিধা নিতে দেয়।
জেপিএনএইচ

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

আপনার কি এর উদাহরণ আছে? আমি স্প্রিং-এমভিসি ব্যবহার করছি এটি বৈশিষ্ট্য / মডিউল দ্বারা এটি সংগঠিত করা আমার পক্ষে কঠিন মনে হচ্ছে কারণ বসন্তটি কনফিগার এক্সএমএল ব্যবহার করে।
এরিক হুয়াং

2
@ এর আগেও আমি আমার কোডটি বৈশিষ্ট্য অনুসারে সংগঠিত করেছি তবে সমস্ত বৈশিষ্ট্য দ্বারা ভাগ করা বেস ক্লাসগুলির জন্য সেরা অনুশীলনগুলি কী?
মার্ক

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

40

সংক্ষিপ্ত উত্তর: মডিউল / বৈশিষ্ট্য প্রতি একটি প্যাকেজ, সম্ভবত সাব-প্যাকেজ সহ। একই প্যাকেজে ঘনিষ্ঠভাবে সম্পর্কিত জিনিসগুলি একসাথে রাখুন। প্যাকেজগুলির মধ্যে বিজ্ঞপ্তি নির্ভরতা এড়িয়ে চলুন।

দীর্ঘ উত্তর: আমি এই নিবন্ধটির বেশিরভাগের সাথে একমত


2
সাব প্যাকেজগুলি এনক্যাপসুলেশন বিরতি দেয়। একটি "সাব-প্যাকেজ" হ'ল নিজেই একটি সম্পূর্ণ স্বাধীন প্যাকেজ
রিকার্ডো গাম্বা

21

আমি স্তরগুলির আগে বৈশিষ্ট্যটি পছন্দ করি তবে আমার ধারণা এটি আপনার প্রকল্পের উপর নির্ভর করে। আপনার বাহিনী বিবেচনা করুন:

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

উদাহরণ:

com/company/module
  + feature1/
    - MainClass          // The entry point for exploring
    + api/               // Public interface, used by other features
    + domain/
      - AggregateRoot
      + api/             // Internal API, complements the public, used by web
      + impl/ 
    + persistence/       
    + web/               // presentation layer 
    + services/          // Rest or other remote API 
    + support/            
  + feature2/
  + support/             // Any support or utils used by more than on feature
    + io
    + config
    + persistence
    + web

এইটা শুধুমাত্র একটা উদাহরণ. এটি বেশ আনুষ্ঠানিক। উদাহরণ হিসেবে বলা যায় এটা জন্য 2 ইন্টারফেসগুলি সংজ্ঞায়িত feature1 । সাধারণত এটি প্রয়োজন হয় না, তবে বিভিন্ন লোক যদি আলাদাভাবে ব্যবহার করে তবে এটি একটি ভাল ধারণা হতে পারে। আপনি অভ্যন্তরীণ এপিআই জনসাধারণকে বাড়িয়ে দিতে পারেন।

আমি 'ইমপ্ল' বা 'সমর্থন' নাম পছন্দ করি না তবে তারা গুরুত্বপূর্ণ (ডোমেন এবং এপিআই) থেকে কম গুরুত্বপূর্ণ জিনিস আলাদা করতে সহায়তা করে। নামকরণ করার সময় আমি যতটা সম্ভব কংক্রিট হতে পছন্দ করি। আপনার যদি 20 ক্লাস সহ 'ইউসস' নামে একটি প্যাকেজ থাকে তবে StringUtilsসমর্থন / স্ট্রিংয়ে, HttpUtilসমর্থন করতে / এইচটিপি এবং আরও কিছুতে যান।


13

জাভাতে প্যাকেজগুলির সংগঠনের বিষয়ে সর্বোত্তম অনুশীলন রয়েছে এবং সেগুলিতে কী ঘটে?

আসলেই না। প্রচুর ধারণা এবং প্রচুর মতামত রয়েছে, তবে আসল "সেরা অনুশীলন" হ'ল আপনার সাধারণ জ্ঞানটি ব্যবহার করা!

(দয়া করে "সেরা অনুশীলনগুলি" এবং তাদের প্রচার করার জন্য লোকের দৃষ্টিভঙ্গির জন্য সর্বোত্তম অনুশীলনগুলি পড়ুন read )

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

(একটি প্যাকেজ / মডিউলের ক্লাসগুলির মধ্যে চক্র নির্ভরতা ঠিক আছে, তবে আন্তঃ-প্যাকেজ চক্রগুলি আপনার অ্যাপ্লিকেশনটির আর্কিটেকচারকে কঠোরভাবে বোঝায় এবং কোড পুনরায় ব্যবহারের ক্ষেত্রে বাধা হতে পারে particular বিশেষত, আপনি যদি মাভেন ব্যবহার করেন তবে আপনি সেই চক্রটি দেখতে পাবেন) আন্তঃ-প্যাকেজ / আন্তঃ-মডিউল নির্ভরতা বলতে বোঝায় যে পুরো আন্তঃসংযুক্ত জগাখিচুড়ি একটি ম্যাভেন আর্টফ্যাক্ট হতে হবে))

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


9

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

এর বাইরে আমি আরও জানতে পেরেছি যে একটি হাইব্রিড: 'মডিউল দ্বারা প্যাকেজ, স্তর তারপরে বৈশিষ্ট্য' কৌশলটি বাস্তবে অত্যন্ত ভালভাবে কাজ করে কারণ এর 'বৈশিষ্ট্য অনুসারে প্যাকেজ' এর অনেক সুবিধা রয়েছে:

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

আমি এখানে গভীরতার সাথে ব্যাখ্যা করছি: জাভা প্যাকেজ নাম কাঠামো এবং সংস্থা কিন্তু আমার মান প্যাকেজ কাঠামোটি হ'ল:

revdomain.moduleType.moduleName.layer। [layerImpl] .feature.subfeatureN.subfeatureN +1 ...

কোথায়:

রেভডোমেন বিপরীত ডোমেন যেমন com.mycompany

মডিউলটাইপ [অ্যাপ * | ফ্রেমওয়ার্ক | ব্যবহার]

moduleName যেমন myAppName মডিউল টাইপ একটি অ্যাপ্লিকেশন বা 'ফাইনান্স' হলে যদি তার একটি অ্যাকাউন্টিং ফ্রেমওয়ার্ক

স্তর [মডেল | ui | জেদী | সুরক্ষা ইত্যাদি,]

স্তরImpl উদাহরণস্বরূপ, উইকেট, জেএসপি, জেপিএ, জেডিও, হাইবারনেট (দ্রষ্টব্য: স্তরটি মডেল হলে ব্যবহৃত হয় না)

বৈশিষ্ট্য যেমন, অর্থ

subfeatureN যেমন।, অ্যাকাউন্টিং

subfeatureN + 1 যেমন, অবচয় dep

* কখনও কখনও 'অ্যাপ্লিকেশন' যদি মডিউল টাইপ কোনও অ্যাপ্লিকেশন থাকে তবে এটিকে সেখানে রাখলে প্যাকেজ কাঠামোটি সমস্ত মডিউল প্রকারের সাথে সামঞ্জস্য করে।


5

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

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

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

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