নিম্নলিখিত জিনিসগুলির জন্য `ব্যবহারের চেয়ে শব্দার্থগতভাবে আরও উপযুক্ত প্যাকেজের নাম?


18

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

একটি উদাহরণ হিসাবে, ক্লাসটি UUIDকী সেই শ্রেণীর জন্য শব্দার্থগতভাবে সঠিক প্যাকেজের নাম হত?

আমি UUIDআরও স্বল্প ওজনের জন্য নিজের ক্লাস বাস্তবায়নে কাজ করছি । আমি me.myproject.util.UUIDআমার প্যাকেজ নামটি ব্যবহার করতে চাই না ।

আমি বিবেচনা করেছি me.myproject.rfc4122.UUIDকিন্তু এটি ব্যবহারের শব্দার্থকে বোঝায় না UUID

আমি বিবেচনা করেছি me.myproject.uuid.UUIDকিন্তু আমি তাতে টাউটোলজি পছন্দ করি না, যদিও পাইথনের একই নামযুক্ত একটি মডিউলে একটি ক্লাস স্থাপন করা একটি জনপ্রিয় পদ্ধতি এবং packagesজাভাতে শব্দার্থগতভাবে modulesপাইথনের সমতুল্য নয় ।

আমি এটিকে বিবেচনা করেও me.myproject.UUIDপ্রত্যাখ্যান করেছি কারণ আমি নেমস্পেসের সেই অংশটি সম্পর্কিত নয় এমন জিনিসগুলির সাথে দূষিত করতে চাই না। এটি কেবল সমস্যাটিকে একটি স্তরের উপরে নিয়ে যায়।

আমিও বিবেচনা করেছি me.myproject.lib.UUIDতবে .utilসমস্যার নতুন নামকরণের চেয়ে এর আর কোনও অর্থগত অর্থ নেই ।

semantics: ভাষাবিদ্যা এবং যুক্তিবিদ্যা সঙ্গে সংশ্লিষ্ট শাখা অর্থ


কীভাবে me.myproject.UUID? বাme.UUID
রবার্ট হার্ভে

আমার কাছে, from me.myproject.uuid import UUID, GetUUIDInfoদেখতে কিছুটা ঠিক আছে। মডিউলে একাধিক রফতানি জিনিস থাকতে পারে।
9000

2
আইডিসিতে কাজ করার জন্য জেএক্সটিএর একটি 'আইডি' প্যাকেজ রয়েছে।
গ্রেগ -449

@ গ্রেগ -৪৪৯ - আমি আপনার পরামর্শটির দিকে ঝুঁকছি identityবা identifiersউত্তর হিসাবে এটি আরও একটি ব্যাখ্যা দিয়ে রেখেছি সম্ভবত এটি গৃহীত হবে।

উত্তর:


11

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

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

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

অন্যথায়, যদি আপনার এই ইউইউডি টাইপটি অন্যান্য প্রকল্পেও ব্যবহৃত হতে পারে, তবে এটি কিছু কাঠামোর অংশ হিসাবে দেখা দরকার। সুতরাং, এটি সেই কাঠামোর মূল উত্স ফোল্ডারে বা মেইনমা প্রস্তাবিত কিছু 'প্রকারের' উপ-প্যাকেজটিতে বা এমনকি সেই কাঠামোর কিছু উপ-প্যাকেজে 'ইউজার' বা 'মিস' নামে থাকতে পারে। কিছুতেই ভুল হয়নি।


2
উত্তরের মন্তব্যগুলিকে সীমাবদ্ধ করার চেষ্টা করুন যা উত্তরের কার্যকারিতাটিতে সত্যই যুক্ত হয় না। মন্তব্য বিভাগ যেমন অস্বীকারকারীদের জন্য সংরক্ষিত। ধন্যবাদ.
maple_shaft

1

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

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

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


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

@ ডাঙ্ক, এটি আসলে একটি খুব ভাল বিষয় - প্রাক-পরিপক্কভাবে কিছুটা কৃত্রিম প্যাকেজ কাঠামো তৈরি করা আপনাকে আরও ভাল, আরও প্রাকৃতিক সংগঠনটি পথে দেখতে বাধা দেবে।
কিউবিডি

1

চাচা বব এর প্যাকেজ পৃথকীকরণ সম্পর্কে কিছু গাইডলাইন রয়েছে ।

প্রথম তিনটি প্যাকেজ নীতিগুলি প্যাকেজ সংহতি সম্পর্কে, তারা আমাদের প্যাকেজগুলির ভিতরে কী রাখবে তা বলে:

  1. পুনঃব্যবহারের গ্রানুল হ'ল মুক্তির দানা
  2. একসাথে পরিবর্তিত ক্লাসগুলি এক সাথে প্যাকেজ করা হয়
  3. একসাথে ব্যবহৃত ক্লাসগুলি একসাথে প্যাকেজ করা হয়

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

আপনার উত্তরের উপর নির্ভর করে, সম্ভবত আপনি এটিকে me.myproject.identity প্যাকেজ, me.myproject.serialization প্যাকেজ, me.myproject বলা উচিত। ডিটিও বা সম্পূর্ণ অন্য কিছু else হতে পারে, ইউআইডি ক্লাসটি আপনার মডেলগুলির সাথে একত্রে রাখা উচিত এবং আপনি এটি ইতিমধ্যে me.myproject.models এর মতো একটি প্যাকেজে রাখবেন


1
dtoপ্রায় হিসাবে libবা শব্দার্থগতভাবে অকেজো utils, পুরো dtoধারণাটি 90-এর দশকের মাঝামাঝি থেকে একটি নির্বোধ বিরোধী প্যাটার্ন, modelএকই অকেজো

আপনাকে আরও দরকারী নাম দেওয়ার জন্য আমরা আপনার প্রকল্প সম্পর্কে পর্যাপ্ত পরিমাণে জানি না
Hbas

-2

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

  • আপনি ক্লাসগুলি তাদের বসিন মান দ্বারা আলাদা করতে বেছে নিতে পারেন, উদাহরণস্বরূপ com.example.identifier;
  • বা উদাহরণস্বরূপ তাদের প্রযুক্তিগত মান দ্বারা com.example.uuid

আইটি সরল রাখুন


2
জাভা ALLCAPS শ্রেণীর উদাহরণ: java.util.UUID, java.net.URL, java.util.zip.CRC32, ইত্যাদি
scriptin

@ স্ক্রিপ্টিন যদি কোনও বিকাশকারীর পক্ষে সহজ না হয় তবে তিনি কেবল ক্যাপস স্টাইল থেকে "ধ্রুবক", প্যাকেজের নাম থেকে কোনও সদস্য এবং অন্য কোনও শ্রেণীর থেকে পৃথক করতে পারতেন? আপনি কেন মনে করেন যে সিআরসি 32, ইউআইডি একটি শ্রেণীর জন্য একটি ভাল নাম, কারণ জাভা এটি করেছে? বা এটি "সার্বজনীন অনন্য সনাক্তকারী" বা "চক্রীয় রিডানডেন্সি চেক" এর সংক্ষিপ্ত রূপ হিসাবে ... তবে কিছুটা অপেক্ষা করুন! এই java.util.zip.GZIPOutputStreamশ্রেণীর সাথে কী আছে ? GZIP... ? there is also a java.util.zip.ZipOutputStreamSt
টাইবেরিউ সি

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

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

1
প্যাকেজের নাম লেখার সময় কোন লেটার কেসটি ব্যবহার করা উচিত তার সাথে মূল প্রশ্নের কোনও সম্পর্ক ছিল না। শব্দার্থগতভাবে ইউইউডি ইউইড, ইউইড, ইউইআইডি, ইউইআইডি বা অন্য যে কোনও নির্বিচারে মূলধন স্কিমটিকে আপনি "সেরা" বলে মনে করেন তার থেকে আলাদা নয়।
ব্র্যান্ডিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.