'উটিল' ক্লাস করা কি উদ্বেগের কারণ? [বন্ধ]


14

আমি মাঝে মাঝে 'ইউটিল' ক্লাস তৈরি করি যা প্রাথমিকভাবে এমন পদ্ধতি এবং মান রাখে যেগুলি সত্যই অন্য কোথাও সম্পর্কিত বলে মনে হয় না। তবে যতবারই আমি এই ক্লাসগুলির একটি তৈরি করি, আমি মনে করি "আহ-ওহ, আমি পরে এটি অনুশোচনা করব ...", কারণ আমি কোথাও পড়েছি এটি খারাপ।

তবে অন্যদিকে, তাদের জন্য দুটি আকর্ষণীয় (কমপক্ষে আমার জন্য) মামলা রয়েছে বলে মনে হচ্ছে:

  1. প্যাকেজের মধ্যে একাধিক ক্লাসে ব্যবহৃত হয় এমন বাস্তবায়ন গোপনীয়তা
  2. কোনও শ্রেণিটির ইন্টারফেসটি বিশৃঙ্খলা না করে বাড়ানোর জন্য কার্যকর কার্যকারিতা সরবরাহ করে

আমি কি ধ্বংসের পথে? তুমি কী বল !! আমার কি চুল্লি করা উচিত?


11
Utilআপনার ক্লাসের নাম ব্যবহার বন্ধ করুন । সমস্যা সমাধান.
ইয়ানিস

3
@ ম্যাটফেনউইক ইয়ান্নিস একটি ভাল পয়েন্ট আছে। শ্রেণীর নামকরণ SomethingUtilকিছুটা অলস এবং কেবল শ্রেণীর আসল উদ্দেশ্যকেই অস্পষ্ট করে - নামযুক্ত SomethingManagerবা ক্লাসগুলির সাথে একই SomethingService। এই শ্রেণীর যদি একক দায়িত্ব থাকে তবে এটির অর্থপূর্ণ নাম দেওয়া সহজ হওয়া উচিত। যদি তা না হয় তবে এটিই মোকাবেলা করার আসল সমস্যা ...
ম্যাটড্যাভি

1
@ এমডি ডেভির ভালো কথা, এটি সম্ভবত ব্যবহারের জন্য একটি খারাপ শব্দ পছন্দ ছিল Util, যদিও স্পষ্টতই আমি আশা করি না যে এটি স্থির হয়ে যাবে এবং বাকী প্রশ্নটি উপেক্ষা করা হবে ...

1
যদি আপনি একাধিক * ইউটিলি ক্লাস তৈরি করেন যা তারা কোন ধরণের বস্তু দ্বারা পৃথক করে আলাদা করে রাখে, তবে আমার মনে হয় এটি ঠিক আছে। স্ট্রিংগিল, লিস্টআপিল ইত্যাদি থাকাতে আমি কোনও সমস্যা দেখতে পাচ্ছি না যদি আপনি সি # তে না থাকেন তবে আপনার আটকে রাখার পদ্ধতিগুলি ব্যবহার করা উচিত।
মার্কো ফিসেট

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

উত্তর:


26

আধুনিক ওও ডিজাইন গ্রহণ করে যে সবকিছুই একটি বস্তু নয়। কিছু জিনিস আচরণ বা সূত্র এবং কিছুগুলির স্থিতি নেই। এই নকশার সুবিধা পেতে এই জিনিসগুলিকে খাঁটি ফাংশন হিসাবে মডেল করা ভাল।

জাভা এবং সি # (এবং অন্যদের) আপনাকে একটি ব্যবহার শ্রেণি তৈরি করতে হবে এবং এটি করতে হুপের মধ্য দিয়ে ঝাঁপিয়ে পড়ুন। বিরক্তিকর, তবে পৃথিবীর শেষ নেই; এবং ডিজাইনের দৃষ্টিকোণ থেকে সত্যই অসুবিধাজনক নয়।


হ্যাঁ, আমি যা ভাবছিলাম তা সেটাই। উত্তরের জন্য ধন্যবাদ!

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

2
@ নোনতাপীর - এক্সটেনশন পদ্ধতির প্রয়োগ ব্যতীত আপনাকে মূলত এক্সটেনশন পদ্ধতির সাহায্যে একটি
শ্রেণিবদ্ধ করতে বাধ্য

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

16

কখনও না বল না"

আমি মনে করি না যে এটি অগত্যা খারাপ, আপনি কেবল এটি খারাপ ব্যবহার করলে এবং এটির অপব্যবহার করলেই এটি খারাপ।

আমাদের সকলের সরঞ্জাম এবং ইউটিলিটিগুলির প্রয়োজন

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

সুতরাং এগুলির জন্য স্পষ্টতই একটি প্রয়োজন রয়েছে।

হার্ড-ওয়ার্ড, সদৃশকরণ এবং বাগগুলি উপেক্ষা করুন

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

সুতরাং আমি থাম্বের প্রথম নিয়মটি বলব যখন কোনও Utilক্লাস লিখতে চুলকানির অনুভূতি হয় তা পরীক্ষা করা যে Utilশ্রেণিটি ইতিমধ্যে বিদ্যমান নেই।

এর জন্য আমি একমাত্র পাল্টা যুক্তি দেখলাম যখন আপনি নিজের নির্ভরতা সীমাবদ্ধ করতে চান কারণ:

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

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

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

নামকরণ অনুষ্ঠান

যাইহোক, এখন পর্যন্ত এই উত্তরে আমি তাদেরকে Utilআপনার মতো বলেছি । তাদের নাম রাখবেন না

তাদের অর্থপূর্ণ নাম দিন। গুগল পেয়ারা কী করবেন তার একটি (খুব, খুব) ভাল উদাহরণ হিসাবে নিন এবং কেবল কল্পনা করুন যে com.google.guavaনামস্থানটি আপনার utilমূল।

আপনার প্যাকেজটি কল করুন util, সবচেয়ে খারাপ, কিন্তু ক্লাসগুলি নয়। যদি Stringস্ট্রিং কন্সট্রাক্টসগুলির অবজেক্ট এবং হেরফের নিয়ে ডিল করে তবে এটিকে কল করুন Strings, না StringUtils(দুঃখিত, অ্যাপাচি কমন্স ল্যাং - আমি আপনাকে এখনও পছন্দ করি এবং ব্যবহার করি!)। যদি এটি সুনির্দিষ্ট কিছু করে তবে একটি নির্দিষ্ট শ্রেণীর নাম (যেমন Splitterবা Joiner) চয়ন করুন।

ইউনিট পরীক্ষা

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

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

এপিআই ডিজাইন

আপনি এই এপিআইগুলির জন্য যে নকশার সিদ্ধান্ত নেবেন তা সম্ভবত আপনাকে দীর্ঘ সময় অনুসরণ করবে। সুতরাং, Splitter-ক্লোন লেখার জন্য ঘন্টা ব্যয় না করার সময় , আপনি কীভাবে সমস্যাটির দিকে যান সে সম্পর্কে সতর্ক থাকুন।

নিজেকে কয়েকটি প্রশ্ন জিজ্ঞাসা করুন:

  • আপনার ইউটিলিটি পদ্ধতিটি নিজেই কোনও শ্রেণিকে ওয়ারেন্ট দেয়, বা স্থিতিশীল পদ্ধতিটি কি যথেষ্ট ভাল, যদি এটি একইভাবে দরকারী পদ্ধতির একটি গ্রুপের অংশ হওয়ার জন্য বোধ করে?
  • অবজেক্ট তৈরি করতে এবং আপনার এপিআইগুলিকে আরও পঠনযোগ্য করে তুলতে আপনার কি কারখানার পদ্ধতি দরকার ?
  • পঠনযোগ্যতার কথা বললে আপনার কি ফ্লুইট এপিআই , বিল্ডার ইত্যাদি দরকার হয় ...?

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

যথারীতি, দৈত্যদের কাছ থেকে এখানে শিখুন:

হ্যাঁ, এর মধ্যে বেশিরভাগের সংগ্রহ এবং ডেটা-স্ট্রাকচারের উপর জোর রয়েছে, তবে আমাকে তা বলবেন না যে আপনি সাধারণত বা অপ্রত্যক্ষভাবে আপনার বেশিরভাগ ব্যবহারগুলি বাস্তবায়নের সম্ভাবনা কোথায় বা কিসের জন্য নয়।


+1 এর জন্যIf deals with String objects and manipulation of string constructs, call it Strings, not StringUtils
টিউলাইনস কর্ডোভা

+ নেট এপিআই ডিজাইনের জন্য,। নেট এর স্থপতিদের বইটি পড়ুন। ফ্রেমওয়ার্ক ডিজাইনের গাইডলাইন: কনভেনশন,
আইডিয়ামস

আপনি এটিকে স্ট্রিং ইউটিল (গুলি) এর পরিবর্তে স্ট্রিংস বলবেন কেন? আমার কাছে স্ট্রিংগুলি কোনও সংগ্রহের অবজেক্টের মতো শোনাচ্ছে।
বিডিআরএক্স

@ বিডিআরএক্স: আপনি StringsCollectionTypeHereযদি কংক্রিট বাস্তবায়ন করতে চান তবে আমার কাছে একটি সংগ্রহের বিষয় হবে । অথবা এই অ্যাপ্লিকেশনের প্রসঙ্গে যদি এই স্ট্রিংগুলির নির্দিষ্ট অর্থ থাকে তবে আরও নির্দিষ্ট নাম। এই বিশেষ ক্ষেত্রে, কম্বস ল্যাং-এর Stringsবিপরীতে পেয়ারা তার স্ট্রিং-সম্পর্কিত সাহায্যকারীদের ব্যবহার করে StringUtils। আমি এটি পুরোপুরি গ্রহণযোগ্য বলে মনে করি, এটি কেবল আমার কাছে বোঝায় যে ক্লাসগুলি Stringস্ট্রিংস পরিচালনা করার জন্য কোনও সাধারণ উদ্দেশ্য শ্রেণি।
হাইলেম

@ বিডিআরএক্স: সাধারণ স্টাফগুলিতে NameUtilsআমাকে শেষ করতে হবে না কারণ এটি যদি স্পষ্টভাবে লেবেলযুক্ত প্যাকেজ নামের অধীনে বসে থাকে তবে আমি ইতিমধ্যে জানতাম এটি একটি ইউটিলিটি শ্রেণি (এবং যদি না হয় তবে এটি এপিআইয়ের দিকে তাকানো থেকে তা দ্রুত বের করে আনতে পারে)। মানুষের যেমন কাপড় ঘোষণা করে আমাকে এই বিরক্তিকর হিসাবে SomethingInterface, ISomethingঅথবা SomethingImpl। সি তে কোডিং করার সময় এবং আইডিই ব্যবহার না করার সময় আমি এই জাতীয় নিদর্শনগুলির সাথে ঠিকঠাক হয়েছি। আজ আমি সাধারণত এই ধরনের জিনিস প্রয়োজন হবে না।
হাইলেম

8

ইউটিলি ক্লাস একত্রে নয় এবং সাধারণত খারাপ ডিজাইন হয় কারণ ক্লাসের পরিবর্তনের একক কারণ থাকতে হয় (একক দায়িত্বের নীতিমালা)।

তবুও, আমি দেখেছি মত খুব জাভা API এ ক্লাস, "util": Math, Collectionsএবং Arrays

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

কোনও ইউটিলিটি ক্লাসে সম্পূর্ণরূপে সম্পর্কিত নয় এমন পদ্ধতি ব্যবহার করার চেষ্টা করুন। যদি এটি হয় তবে সম্ভাবনা হ'ল আপনি সেগুলি যেখানে সত্যই তাদের অন্তর্ভুক্ত অন্যত্র রাখতে পারেন।

ক্লাস util থাকতে হবে তাহলে চেষ্টা তাদের থিম দ্বারা পৃথক করা জাভার মত Math, Collectionsএবং Arrays। এটি, অন্ততপক্ষে, কেবলমাত্র সুনির্দিষ্ট স্থানের পরেও ডিজাইনের কিছু অভিপ্রায় প্রদর্শন করে।

আমি একজনের পক্ষে সর্বদা ইউটিলিটি ক্লাস এড়িয়ে চলি এবং কখনও কখনও এটির তৈরি করার প্রয়োজন পড়েনি ।


উত্তরের জন্য ধন্যবাদ. সুতরাং, এমনকি যদি ব্যবহারের ক্লাসগুলি প্যাকেজ-ব্যক্তিগত হয়, তারা এখনও একটি ডিজাইনের গন্ধ?

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

1
ভাল, ইউটিলিটি ক্লাসগুলির কতগুলি পদ্ধতি খুব বেশি তা আপনাকে জানানোর জন্য একটি নকশার নীতি নেই, যেহেতু শুরু করার কোনও সমন্বয় নেই। কীভাবে থামতে হয় জানবেন? 30 পদ্ধতি পরে? 40? 100? অপরদিকে ওওপি নীতিগুলি আপনাকে কখন একটি পদ্ধতি নির্দিষ্ট শ্রেণীর অন্তর্ভুক্ত নয় এবং শ্রেণিটি যখন খুব বেশি করে চলেছে তখন আপনাকে একটি ধারণা দেয়। এটাকে একত্রীকরণ বলে। তবে আমি আপনাকে আমার উত্তরে যেমন বলেছিলাম, জাভা ডিজাইন করেছিলেন এমন খুব লোকেরা util আপনি এটা করতে পারবেন না। আমি ইউটিলিটি ক্লাস তৈরি করি না এবং এমন পরিস্থিতিতে পড়ি না যখন কিছু সাধারণ শ্রেণীর অন্তর্ভুক্ত না।
তুলিনাস কর্ডোভা

1
ইউটিলেস ক্লাসগুলি সাধারণত ক্লাস হয় না এগুলি কেবলমাত্র খাঁটি, ফাংশনগুলির একগুচ্ছ নামের নামের স্থান। খাঁটি ফাংশনগুলি আপনি যেমন পেতে পারেন ততই সম্মিলিত।
জে কে।

1
@ জে কে আমি ইউটিলস বোঝাতে চাই ... যাইহোক নামগুলির সাথে আসার মতো Mathবা Arraysনকশার কমপক্ষে কিছু উদ্দেশ্য দেখায়।
তুলাইনস কর্ডোভা

3

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

এবং সহায়ক ক্লাসগুলি নিয়ে সরে যাবেন না।


0

আমি দুটি টায়ার্ড পন্থা ব্যবহার করি। একটি "গ্লোবালস" একটি "ব্যবহার" প্যাকেজে ক্লাস (ফোল্ডার)। কোনও "গ্লোবালস" শ্রেণিতে বা "ব্যবহার" প্যাকেজে যাওয়ার জন্য এটি অবশ্যই হওয়া উচিত:

  1. সরল,
  2. অপরিবর্তনীয়,
  3. আপনার আবেদনের অন্য কোনও কিছুর উপর নির্ভরশীল নয়

এই পরীক্ষাগুলিতে পাস হওয়া উদাহরণগুলি:

  • সিস্টেম-প্রশস্ত তারিখ এবং দশমিক ফর্ম্যাট
  • অপরিবর্তনীয় গ্লোবাল ডেটা, যেমন EARLIEST_YEAR (যে সিস্টেমটি সমর্থন করে) বা IS_TEST_MODE বা এরকম কিছু সত্যিকারের বিশ্বব্যাপী এবং অপরিবর্তনীয় (সিস্টেম চলাকালীন)।
  • খুব ছোট সহায়ক পদ্ধতি যা আপনার ভাষা, কাঠামো বা টুলকিটের ফাঁকে ফাঁকে কাজ করে

এখানে খুব ছোট সহায়ক সহায়তার একটি উদাহরণ রয়েছে, বাকি প্রয়োগের থেকে সম্পূর্ণ স্বতন্ত্র:

public static String ordinal(final int i) {
    return (i == 1) ? "1st" :
           (i == 2) ? "2nd" :
           (i == 3) ? "3rd" :
           new StringBuilder().append(i).append("th").toString();
}

এটি দেখে আমি একটি বাগ দেখতে পাচ্ছি যে 21 "21st" হওয়া উচিত, 22 "22 তম" ইত্যাদি হওয়া উচিত তবে এটি বিন্দুটির পাশে beside

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

গ্লোবালস ক্লাস বা ব্যবহার প্যাকেজটিতে যা আছে তার জন্য সর্বোত্তম জায়গা কেন নেই তা প্রমাণ করার পক্ষে আপনাকে সক্ষম হতে হবে এবং উপরের পরীক্ষাগুলি ব্যবহার করে আপনাকে পর্যায়ক্রমে এটি পরিষ্কার করা উচিত। অন্যথায়, আপনি কেবল একটি গণ্ডগোল তৈরি করছেন।

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