জাভা প্যাকেজ নাম কনভেনশন ত্রুটিযুক্ত? [বন্ধ]


28

আমরা সকলেই ডোমেইনের নাম ঘুরিয়ে দেওয়ার জাভা প্যাকেজ নাম কনভেনশনটির সাথে পরিচিত। অর্থাত্ www.evilcorp.comকনভেনশন করে তাদের জাভা প্যাকেজগুলি বেছে নেবে com.evilcorp.stuff

ক্রমশ আমি এতে বিরক্ত হয়ে যাচ্ছি। একটি বাণিজ্যিক প্রোগ্রামার হিসাবে আমি বারবার মুখোমুখি হয়েছি যে সফটওয়্যার প্যাকেজের নাম কিছু রিব্র্যান্ড, অধিগ্রহণ বা অনুরূপ কারণে সম্পূর্ণ অপ্রাসঙ্গিক।

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

সফ্টওয়্যার প্রকল্পগুলি বিপণন বিভাগের নেতৃত্ব গ্রহণ করে ডু যাত্রা নাম ব্যবহার করে যা তারা কোনও নির্দিষ্ট প্রকল্পের উল্লেখ করে often এমন একটি নাম যা ব্যর্থ না হয়ে সম্রাটের নতুন পোশাককে সতেজ এবং নতুন মনে করতে months মাস ধরে রেখায় পরিবর্তিত হবে।

এ কারণে, আমি বেশিরভাগ বিপরীত ডোমেনটি প্যাকেজের নাম হিসাবে ব্যবহার বন্ধ করে দিয়েছি। মঞ্জুর, এটি যদি বড় আকারে করা হয় তবে নামের সংঘর্ষের ঝুঁকি রয়েছে, তবে অবশ্যই এটি "অনন্য" সফ্টওয়্যার নামগুলি ব্যবহার করে, জেনেরিক শব্দগুলি এড়ানো বা লাইব্রেরি হিসাবে বিক্রি / প্রকাশের উদ্দেশ্যে প্রকল্পগুলির জন্য বিপরীত ডোমেন ব্যবহার করে প্রশমিত করা যায় ।

অন্যান্য চিন্তা?


2
We're all familiar with the Java package name convention of turning the domain name around.- উম..না আমরা নই ... :)
ডাঃ হ্যানিবাল

8
@ ডিআর হ্যানিবাল লেস্টার: খুব সহজ। জাভা (সাইটে জাভা.কম) তাদের প্যাকেজগুলির নাম দেয় com.java.etc.etc। অ্যাপাচি (সাইটে অ্যাপাচি.অর্গ সাইটে) তাদের প্যাকেজগুলির নাম দেয় org.apache.etc.etc। আপনি প্যাটার্ন দেখুন।
doppelgreener

3
@ ডিআর হ্যানিবাল লেস্টার: সিএফ। docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
ব্যবহারকারী 359996

1
"ওপেনসোর্স ওয়ার্ল্ডে নাম কম পরিবর্তিত হয়" - এমনকি এটিরও সমস্যা আছে, প্রায়শই আমি দেখি যে প্রকল্পগুলি এখন গিথুব হয় তবে তাদের প্যাকেজের নামগুলি প্রকাশ করে যে তারা নেট.সোর্সফোর্স.এক্সএক্সএক্স বা কমের বিপরীতে ছিল। googlecode.xxx
nafg

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

উত্তর:


23

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

একটি নেমস্পেস নামের সাধারণ ফর্ম্যাটটি নিম্নরূপ:

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

উদাহরণস্বরূপ Microsoft.WindowsMobile.DirectX,।

বিভিন্ন সংস্থা থেকে নাম এবং উপসর্গ থাকা থেকে বিরত রাখতে সংস্থার নামের সাথে উপসর্গের নামস্থানীয় নামগুলি করুন।

একটি নেমস্পেস নামের দ্বিতীয় স্তরে স্থিতিশীল, সংস্করণ-স্বতন্ত্র পণ্যের নাম ব্যবহার করবেন না।

নেমস্পেস হায়ারারচিগুলিতে নামের ভিত্তি হিসাবে সাংগঠনিক শ্রেণিবিন্যাস ব্যবহার করবেন না, কারণ কর্পোরেশনগুলির মধ্যে গ্রুপের নামগুলি স্বল্পস্থায়ী হয়।

নেমস্পেসের নামটি একটি দীর্ঘকালীন এবং অপরিবর্তনীয় সনাক্তকারী। সংস্থাগুলি বিকশিত হওয়ার সাথে সাথে পরিবর্তনগুলি নামের স্থানটিকে অপ্রচলিত করা উচিত নয়।

এমনকি আপনার সংস্থার নাম অস্থির থাকলেও আপনি কেবল পণ্যের নাম দিয়েই শুরু করতে চাইতে পারেন।


3
মাইক্রোসফ্ট কী প্রস্তাব দিচ্ছে যদি অন্য কোনও সংস্থার আপনার নাম একই থাকে?


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

4
হিসাবে @ Thorbjørn এর উত্তর নির্দিষ্ট, সমস্যার জন্য নিশ্চয়তা নয় জাভা নামকরণ সম্মেলন সমাধান দৃঢ়তা বরং নিশ্চয়তা স্বতন্ত্রতা । উল্লেখ্য মাইক্রোসফট সম্মেলন গ্যারান্টী তন্ন তন্ন
ব্যবহারকারী 359996

4
@ ব্যবহারকারী 359996: যেমনটি আমি বলেছিলাম, সার্বজনীন স্বতন্ত্রতা কেন এমন একটি সমস্যা যার সমাধান প্রয়োজন তা আমি দেখতে পাচ্ছি না। পারস্পরিক একচেটিয়া কোড বেসগুলিতে অনন্য হওয়ার জন্য আপনার নামগুলি কেন প্রয়োজন হবে? এবং জাভা শৈলী এটি গ্যারান্টি দেয় না, যেহেতু ডোমেন নামের মালিকানা হাত বদল করতে পারে। JUtils.com এর মালিক এমন বিকাশকারী একটি কম.জিটালস তৈরি করতে পারেন * বিদ্যমান গ্রন্থাগার
অ্যালন গুরালেক

15

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

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


+1 "আপনি অন্য সমস্যার সমাধান খুঁজছেন।"
ব্যবহারকারী 359996

10

সম্মেলন ত্রুটিযুক্ত নয়। লোকেরা ত্রুটিযুক্ত, যেমন আপনি নিজেকে সুন্দরভাবে চিত্রিত করেছেন।

আমি 2 টি সুবিধা সম্পর্কে ভাবতে পারি:

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

7

বিপরীত ডোমেন নাম ব্যবহারের ক্ষেত্রে নাম সংঘর্ষ এড়ানোর জন্য ব্যবহৃত হয়েছিল যদি বিভিন্ন সংস্থা তাদের লাইব্রেরিতে একই শ্রেণির নাম ব্যবহার করে। এটি একটি সহজ সমাধান এবং অফ ক্রোসসে কিছু ত্রুটি রয়েছে (যেমন একই সংস্থার ক্লাসগুলির জন্য নাম সংঘর্ষ সম্পর্কে কী?)

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

তবে বিকল্পগুলি বিবেচনা করুন। আপনি কীভাবে, উদাহরণস্বরূপ, লগফ্যাক্টরির জন্য দুটি সম্পূর্ণ যোগ্য শ্রেণীর নামের মতো:

a50e8400_e29b_41d4_a716_446655440000.LogFactory
f47ac10b_58cc_4372_a567_0e02b2c3d479.Logfactory

অথবা

org.apache.commons.logging.LogFactory
com.evilcorp.logging.LogFactory

সুতরাং, আমার চিন্তায়, যতক্ষণ না এতে আপনার জ্ঞানবোধ এবং আপনার গ্রন্থাগারের ব্যবহারকারীদের জন্য বিবেচনা অন্তর্ভুক্ত থাকে ততক্ষণ আপনার ব্যবহার করুন।


4

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

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

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