জাভাতে ইউটিলিটি ক্লাসের নামকরণের সম্মেলন


115

জাভাতে ইউটিলিটি ক্লাস লেখার সময়, কিছু ভাল নির্দেশিকা অনুসরণ করা কি?

প্যাকেজগুলি "ব্যবহার" বা "ব্যবহারগুলি" হওয়া উচিত? এটা কি ClassUtil বা ClassUtils? ক্লাস কখন "সহায়ক" বা "ইউটিলিটি" হয়? ইউটিলিটি বা ইউটিলিটিস? না আপনি এগুলির মিশ্রণ ব্যবহার করেন?

স্ট্যান্ডার্ড জাভা গ্রন্থাগারটি ইউটিল এবং ইউটিলিটি উভয়ই ব্যবহার করে:

  • javax.swing.Utilities
  • javax.print.attribute.AttributeSetUtilities
  • javax.swing.plaf.basic.BasicGraphicsUtils

অ্যাপাচি বিভিন্ন ইউটিল এবং ইউটিল ব্যবহার করে, যদিও বেশিরভাগ ইউটিলস:

  • org.apache.commons.modeler.util.DomUtil
  • org.apache.commons.modeler.util.IntrospectionUtils
  • org.apache.commons.io.FileSystemUtils
  • org.apache.lucene.wordnet.AnalyzerUtil
  • org.apache.lucene.util.ArrayUtil
  • org.apache.lucene.xmlparser.DOMUtils

বসন্তে প্রচুর সহায়ক এবং উপযোগী ক্লাস ব্যবহার করে:

  • org.springframework.web.util.UrlPathHelper
  • org.springframework.core.ReflectiveVisitorHelper
  • org.springframework.core.NestedExceptionUtils
  • org.springframework.util.NumberUtils

সুতরাং, আপনি কীভাবে আপনার ইউটিলিটি ক্লাসের নাম রাখবেন?

উত্তর:


82

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

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


9
এবং চতুর্থ সংখ্যা :-) এর জন্য - - তবে ফ্রেইট , ফ্রেইটকোস্ট এবং ফ্র্যাগ্টের মধ্যে পার্থক্য কী ছিল ?
কাজম্যাগনাস

4
@ কেম্যাগনাস এই পোস্টটি এক বছর আগে শেষ হয়েছিল, তবে আমার মনে আছে, অর্ডারের বিষয়বস্তু পরিবর্তন করার আগে এবং তার মধ্যে একটি ছিল রেকর্ডের বর্তমান মালামাল ব্যয়; অন্যটি ছিল একটি টেবিল থেকে নেওয়া স্ট্যান্ডার্ড মালামাল খরচ; এবং তৃতীয়টি হ'ল বিদেশী চালানের মতো কিছু বিশেষ ক্ষেত্রে ব্যবহৃত একটি গণনা খরচ cost তারা কেন কমপক্ষে তাদের ডেকে নিতে পারেনি তার মতো, "কারারফ্রেইট", "এসটিডিফ্রেট", এবং "ক্যালকফ্রেইট" বলুন। এটি কমপক্ষে একটি ক্লোজ দেওয়া হত।
জয়

ঠিক আছে, ব্যাখ্যার জন্য ধন্যবাদ :-) আমি মনে করি একটি আকর্ষণীয় অদ্ভুত কোডের উদাহরণটি
KajMagnus

31

জাভা বিশ্বে এর জন্য কোনও মান নিয়ম / সম্মেলন নেই। যাইহোক, @ColinD উল্লিখিত হিসাবে আমি ক্লাসের নামের শেষে "s" যুক্ত করতে পছন্দ করি।

এটি মাস্টার জাভা এপিআই ডিজাইনার জোশ ব্লচ যা করেন তার কাছে বেশ মানদণ্ড বলে মনে হচ্ছে (জাভা সংগ্রহের পাশাপাশি গুগল সংগ্রহ)

হেল্পার এবং ইউটিল যতক্ষণ না চলে যাবে ততক্ষণ আমি কোনও হেল্পারকে কল করব যখন এতে এমন এপিআই রয়েছে যা প্যাকেজের নির্দিষ্ট কার্যকারিতা অর্জনে সহায়তা করে (মডিউল প্রয়োগ করার ক্ষেত্রে একটি প্যাকেজ বিবেচনা করে); মানে কোনও ইউটিলে কোনও প্রসঙ্গে ডাকা যেতে পারে।

উদাহরণস্বরূপ ব্যাঙ্ক অ্যাকাউন্ট সম্পর্কিত একটি অ্যাপ্লিকেশনটিতে, সমস্ত নম্বর নির্দিষ্ট ইউটিলিটি স্ট্যাটিক এপিআইগুলিতে যাবে org.mycompany.util.Numbers

সমস্ত "অ্যাকাউন্ট" সুনির্দিষ্ট ব্যবসায়িক বিধি সাহায্যকারী এপিআইগুলিতে যাবে

org.mycompany.account.AccountHelper

সর্বোপরি, এটি আরও ভাল ডকুমেন্টেশন এবং ক্লিনার কোড সরবরাহ করার বিষয়।


5
এটি যুক্তিসঙ্গত বলে মনে হচ্ছে, সহায়কটি আরও নির্দিষ্ট যে ইউটিলস।
কাজম্যাগনুস

1
হ্যাঁ, আমি এই পদ্ধতিটি পছন্দ করি, এটি আরও যুক্তিযুক্ত।
কনান

3
লিঙ্কটি নষ্ট হয়ে গেছে। আমি অন্য একটি খুঁজে পেয়েছি ।
চাভজহ

22

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

আপনি যখন কোনও শ্রেণীর সাথে নিয়ন্ত্রণ করতে পারেন যখন আপনি নিয়ন্ত্রণ করতে পারেন তখন আমি বলতে পারি ইউটিলিটি পদ্ধতিগুলি সাধারণত শ্রেণীর মধ্যে থাকে।


2
গুগল পেয়ারা এই প্যাটার্নটিও ব্যবহার করে
ঝাড়িকো

11

আমি মনে করি যে 'ইউट्स' প্যাকেজের নাম হওয়া উচিত। শ্রেণীর নামগুলির মধ্যে এটির মধ্যে যুক্তির উদ্দেশ্য নির্দিষ্ট করা উচিত। সুফিক্স-ইউটি (গুলি) যুক্ত করা নিরর্থক।


2
কোনও 'প্যাকেজ বাই প্যাকেজ' পদ্ধতির ক্ষেত্রে এটি সঠিক জিনিস হবে না ।
jpangamarca

1
@jpangamarca আপনি যে নিবন্ধটি সংযুক্ত করেছেন তাতে "বৈশিষ্ট্য অনুসারে প্যাকেজ" এর উদাহরণে একটি "ব্যবহার" প্যাকেজ রয়েছে। আমি মনে করি অনুশীলনে কিছু ধরণের ব্যবহার বৈশিষ্ট্য / স্তর প্রায়শই এড়ানো যায় না।
কেপেক্স

1
@ কেপেক্স আমি যে অনুমান লেখকের কাছ থেকে একটি পর্যবেক্ষণ। একটি tld.organization.app.utilপ্যাকেজ উপস্থিত থাকতে হবে না (পারে, কিন্তু হওয়া উচিত নয়), যে কোনও সংখ্যক tld.organization.app.feature.utilপ্যাকেজ পুরোপুরি ঠিক আছে।
jpangamarca

3

আমি নিশ্চিত যে "সহায়ক" এবং "ইউটিলিটিস" শব্দগুলি পরস্পরের পরিবর্তে ব্যবহৃত হয়। যাইহোক যাইহোক আপনি প্রদত্ত উদাহরণগুলি বিচার করে আমি বলব যে যদি আপনার ক্লাসের নামটি সংক্ষেপণ হয় (বা "DomUtil" এর মতো সংক্ষিপ্ত বিবরণ রয়েছে) তবে আপনার প্যাকেজটিকে "যা কিছু হোক WWWWUUTIL" (বা ইউটিলস) যদি আপনার প্যাকেজে একাধিক ইউটিলিটি থাকে তবে কল করুন )। অন্যথায় যদি এর সংক্ষিপ্তসার পরিবর্তে পুরো নাম থাকে, তবে এটিকে "যাই হোক না কেন। যাহা কিছু উপযোগিতা" বলুন।

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

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