কখনও না বল না"
আমি মনে করি না যে এটি অগত্যা খারাপ, আপনি কেবল এটি খারাপ ব্যবহার করলে এবং এটির অপব্যবহার করলেই এটি খারাপ।
আমাদের সকলের সরঞ্জাম এবং ইউটিলিটিগুলির প্রয়োজন
প্রারম্ভিকদের জন্য, আমরা সকলেই কিছু লাইব্রেরি ব্যবহার করি যা কখনও কখনও প্রায় সর্বব্যাপী এবং আবশ্যকীয় হিসাবে বিবেচিত হয়। উদাহরণস্বরূপ, জাভা বিশ্বে গুগল পেয়ারা বা কিছু অ্যাপাচি কমন্স ( অ্যাপাচি কমন্স ল্যাং , অ্যাপাচি কমন্স সংগ্রহ , ইত্যাদি ...)।
সুতরাং এগুলির জন্য স্পষ্টতই একটি প্রয়োজন রয়েছে।
হার্ড-ওয়ার্ড, সদৃশকরণ এবং বাগগুলি উপেক্ষা করুন
আপনি যদি এগুলি সম্পর্কে ভাবছেন তবে Util
আপনি বর্ণনা করেছেন এমন ক্লাসগুলির মধ্যে খুব বড় একটি গুচ্ছ , কেউ যদি এগুলি (তুলনামূলকভাবে) সঠিকভাবে পাওয়ার জন্য বড় পরিসরে যায় না, এবং তারা সময় পেয়েছে - অন্যদের দ্বারা পরীক্ষিত এবং ভারী চোখে পড়ে।
সুতরাং আমি থাম্বের প্রথম নিয়মটি বলব যখন কোনও Util
ক্লাস লিখতে চুলকানির অনুভূতি হয় তা পরীক্ষা করা যে Util
শ্রেণিটি ইতিমধ্যে বিদ্যমান নেই।
এর জন্য আমি একমাত্র পাল্টা যুক্তি দেখলাম যখন আপনি নিজের নির্ভরতা সীমাবদ্ধ করতে চান কারণ:
- আপনি আপনার নির্ভরতার মেমরির পদচিহ্ন সীমাবদ্ধ করতে চান,
- অথবা আপনি বিকাশকারীদের কী ব্যবহার করার অনুমতি দেওয়া হয়েছে তা দৃ tight়ভাবে নিয়ন্ত্রণ করতে চান (অবসেসিভ বড় দলগুলিতে ঘটে যায় বা কোনও নির্দিষ্ট কাঠামোটি কোথাও এড়াতে বিজোড় সুপার-ক্রেপি শ্রেণীর জন্য পরিচিত হয়)।
তবে উভয়ই প্রোগুয়ার্ড বা সমতুল্য ব্যবহার করে লিবটি পুনরায় প্যাকেজিংয়ের মাধ্যমে , বা নিজেকে আলাদা করে নেওয়ার মাধ্যমে মোকাবেলা করা যেতে পারে ( ম্যাভেন ব্যবহারকারীদের জন্য, মাভেন -শেড-প্লাগইন আপনার বিল্ডের অংশ হিসাবে এটি সংহত করার জন্য কিছু ফিল্টারিং নমুনা সরবরাহ করে)।
সুতরাং, যদি এটি কোনও bষুধে থাকে এবং আপনার ব্যবহারের সাথে মেলে এবং কোনও মানদণ্ড আপনাকে অন্যথায় না বলে, এটি ব্যবহার করুন। এটি যদি আপনার থেকে কিছুটা পৃথক হয় তবে এটি প্রসারিত করুন (সম্ভব হলে) বা এটি প্রসারিত করুন বা শেষ অবলম্বনে এটি আবার লিখুন।
নামকরণ অনুষ্ঠান
যাইহোক, এখন পর্যন্ত এই উত্তরে আমি তাদেরকে Util
আপনার মতো বলেছি । তাদের নাম রাখবেন না
তাদের অর্থপূর্ণ নাম দিন। গুগল পেয়ারা কী করবেন তার একটি (খুব, খুব) ভাল উদাহরণ হিসাবে নিন এবং কেবল কল্পনা করুন যে com.google.guava
নামস্থানটি আপনার util
মূল।
আপনার প্যাকেজটি কল করুন util
, সবচেয়ে খারাপ, কিন্তু ক্লাসগুলি নয়। যদি String
স্ট্রিং কন্সট্রাক্টসগুলির অবজেক্ট এবং হেরফের নিয়ে ডিল করে তবে এটিকে কল করুন Strings
, না StringUtils
(দুঃখিত, অ্যাপাচি কমন্স ল্যাং - আমি আপনাকে এখনও পছন্দ করি এবং ব্যবহার করি!)। যদি এটি সুনির্দিষ্ট কিছু করে তবে একটি নির্দিষ্ট শ্রেণীর নাম (যেমন Splitter
বা Joiner
) চয়ন করুন।
ইউনিট পরীক্ষা
আপনি যদি এই ইউটিলিটিগুলি লেখার অবলম্বন করতে চান তবে সেগুলি ইউনিট-টেস্ট করার বিষয়টি নিশ্চিত করুন। ইউটিলিটিগুলি সম্পর্কে ভাল জিনিসটি হ'ল এগুলি সাধারণত স্ব-অন্তর্ভুক্ত উপাদান থাকে যা নির্দিষ্ট ইনপুট নেয় এবং নির্দিষ্ট ফলাফলগুলি দেয়। এটাই ধারণা। সুতরাং তাদের ইউনিট-পরীক্ষা না করার কোনও অজুহাত নেই।
এছাড়াও, ইউনিট-পরীক্ষা আপনাকে তাদের API এর চুক্তি সংজ্ঞায়িত এবং ডকুমেন্ট করার অনুমতি দেবে। পরীক্ষাগুলি যদি ভেঙে যায়, হয় আপনি কোনও ভুল উপায়ে কিছু পরিবর্তন করেছেন, বা এর অর্থ আপনি আপনার এপিআই এর চুক্তিটি পরিবর্তন করার চেষ্টা করছেন (বা আপনার মূল পরীক্ষাগুলি বক্রতা ছিল - এটি থেকে শিখুন, এবং এটি আবার করবেন না) ।
এপিআই ডিজাইন
আপনি এই এপিআইগুলির জন্য যে নকশার সিদ্ধান্ত নেবেন তা সম্ভবত আপনাকে দীর্ঘ সময় অনুসরণ করবে। সুতরাং, Splitter
-ক্লোন লেখার জন্য ঘন্টা ব্যয় না করার সময় , আপনি কীভাবে সমস্যাটির দিকে যান সে সম্পর্কে সতর্ক থাকুন।
নিজেকে কয়েকটি প্রশ্ন জিজ্ঞাসা করুন:
- আপনার ইউটিলিটি পদ্ধতিটি নিজেই কোনও শ্রেণিকে ওয়ারেন্ট দেয়, বা স্থিতিশীল পদ্ধতিটি কি যথেষ্ট ভাল, যদি এটি একইভাবে দরকারী পদ্ধতির একটি গ্রুপের অংশ হওয়ার জন্য বোধ করে?
- অবজেক্ট তৈরি করতে এবং আপনার এপিআইগুলিকে আরও পঠনযোগ্য করে তুলতে আপনার কি কারখানার পদ্ধতি দরকার ?
- পঠনযোগ্যতার কথা বললে আপনার কি ফ্লুইট এপিআই , বিল্ডার ইত্যাদি দরকার হয় ...?
আপনি চান যে এই ব্যবহারগুলি ব্যবহারের ক্ষেত্রে একটি বৃহত্তর প্রস্থকে coverাকতে পারে, দৃ rob়, স্থিতিশীল, ভাল-নথিভুক্ত হতে হবে, অন্তত বিস্ময়ের নীতি অনুসরণ করে এবং স্বনির্ভর থাকতে পারে। আদর্শভাবে, আপনার ব্যবহারগুলির প্রতিটি উপ-প্যাকেজ বা কমপক্ষে আপনার সম্পূর্ণ ব্যবহার প্যাকেজটি সহজেই পুনরায় ব্যবহারের জন্য একটি বান্ডলে রফতানিযোগ্য হবে।
যথারীতি, দৈত্যদের কাছ থেকে এখানে শিখুন:
হ্যাঁ, এর মধ্যে বেশিরভাগের সংগ্রহ এবং ডেটা-স্ট্রাকচারের উপর জোর রয়েছে, তবে আমাকে তা বলবেন না যে আপনি সাধারণত বা অপ্রত্যক্ষভাবে আপনার বেশিরভাগ ব্যবহারগুলি বাস্তবায়নের সম্ভাবনা কোথায় বা কিসের জন্য নয়।
Util
আপনার ক্লাসের নাম ব্যবহার বন্ধ করুন । সমস্যা সমাধান.