নোট করুন যে আইডিইএর জাভাতেও এই পরিদর্শন রয়েছে , একে বলা হয় মেথডটি 'স্ট্যাটিক' হতে পারে ,
এই পরিদর্শনটি এমন কোনও পদ্ধতির প্রতিবেদন করে যা নিরাপদে স্থির হয়ে উঠতে পারে। কোনও পদ্ধতি স্থিতিশীল হতে পারে যদি এটি তার শ্রেণীর কোনও 'অ স্থিত পদ্ধতি এবং অ স্থির ক্ষেত্রগুলিকে উল্লেখ না করে এবং উপশ্রেণিতে ওভাররাইড না করে ...
বিষয়টি যদিও জাভা কোডের জন্য, এই পরিদর্শনটি ডিফল্ট হিসাবে বন্ধ করা হয় (প্রোগ্রামার তাদের বিবেচনার ভিত্তিতে এটি চালু করতে পারে)। এর কারণ সম্ভবত বেশ কয়েকটি অনুমোদনের উত্সের ভিত্তিতে এই ধরনের পরিদর্শনটির বৈধতা / উপযোগিতা চ্যালেঞ্জ করা যেতে পারে।
শুরু করার জন্য, অফিশিয়াল জাভা টিউটোরিয়ালটি বরং পদ্ধতিগুলি স্থিতিশীল হওয়া উচিত তার উপর সীমাবদ্ধ:
স্থির পদ্ধতিগুলির জন্য একটি সাধারণ ব্যবহার হ'ল স্থির ক্ষেত্রগুলি অ্যাক্সেস করা।
উপরে প্রদত্ত, যে কেউ তর্ক করতে পারে যে পূর্বনির্ধারিত উল্লিখিত পরিদর্শন দ্বারা চালু করা জাভায় স্থির পরিবর্তনকারী ব্যবহারের প্রস্তাবিত ব্যবহারের সাথে সম্মতি দেয় না।
এ ছাড়াও, এমন আরও কয়েকটি উত্স রয়েছে যা এই পরিদর্শনটির পিছনে থাকা ধারণাগুলি ব্যবহার করতে বা এমনকি নিরুৎসাহিত করার ক্ষেত্রে ন্যায়বিচারের দৃষ্টিভঙ্গির পরামর্শ দেয়।
উদাহরণস্বরূপ জাভা ওয়ার্ল্ড নিবন্ধটি দেখুন - মিঃ হ্যাপি অবজেক্ট স্থির পদ্ধতি শেখায় :
উদাহরণস্বরূপ রাষ্ট্রের স্বাধীন যে কোনও পদ্ধতি স্থিতিশীল হিসাবে ঘোষণার জন্য প্রার্থী।
নোট করুন যে আমি "স্ট্যাটিক হিসাবে ঘোষণার জন্য প্রার্থী" বলেছি। এমনকি পূর্ববর্তী উদাহরণে কোনও কিছুই আপনাকে instances()
স্থির হিসাবে ঘোষণা করতে বাধ্য করে না । এটিকে স্থিতিশীল হিসাবে ঘোষণা করা কল করা আরও সুবিধাজনক করে তোলে যেহেতু আপনাকে পদ্ধতিটি কল করার জন্য কোনও উদাহরণের প্রয়োজন নেই। কখনও কখনও আপনার এমন পদ্ধতি থাকবে যা দেখে মনে হয় না যে দৃষ্টান্তের রাজ্যের উপর নির্ভর করে। আপনি এই পদ্ধতিগুলি স্থির করতে নাও চান। বাস্তবে আপনি সম্ভবত কেবলমাত্র তাদের স্থির হিসাবে ঘোষণা করতে চাইবেন যদি আপনার কোনও উদাহরণ ছাড়াই এগুলি অ্যাক্সেস করার প্রয়োজন হয়।
তদুপরি, আপনি যদি এ জাতীয় পদ্ধতিটিকে স্থিতিশীল হিসাবে ঘোষণা করতে পারেন তবে উত্তরাধিকার সংক্রান্ত সমস্যাগুলির কারণে এটি আপনার নকশায় অন্তর্ভুক্ত হওয়ার কারণে আপনি এটি নাও চান। কটাক্ষপাত "কার্যকরী অবজেক্ট ওরিয়েন্টেড ডিজাইন" দেখতে বিষয় কিছু যে আপনি সম্মুখীন হবে ...
গুগল টেস্টিং ব্লগের একটি নিবন্ধ এমনকি স্ট্যাটিক পদ্ধতিগুলি টেস্টেবলির মৃত্যুর দাবি হিসাবেও গেছে :
একটি মানসিক অনুশীলন করতে দিন। ধরুন আপনার অ্যাপ্লিকেশনটিতে স্থির পদ্ধতি ছাড়া আর কিছু নেই। (হ্যাঁ, এর মতো কোডটি লেখা সম্ভব, একে প্রসেসরিয়াল প্রোগ্রামিং বলে)) এখন সেই অ্যাপ্লিকেশনটির কল গ্রাফটি কল্পনা করুন। আপনি যদি কোনও পাত পদ্ধতি কার্যকর করার চেষ্টা করেন তবে আপনার রাজ্যটি সেট আপ করতে এবং কোণার সমস্ত ক্ষেত্রে জোর দেওয়ার কোনও সমস্যা থাকবে না। কারণটি হ'ল একটি পাতার পদ্ধতিটি আর কল করে না। আপনি পাতা থেকে আরও দূরে সরে যাওয়ার সাথে সাথে রুট main()
পদ্ধতির কাছাকাছি যাওয়ার সাথে সাথে আপনার পরীক্ষায় রাষ্ট্র নির্ধারণ করা আরও কঠিন এবং জিনিসকে দৃ to় করা শক্ত। অনেক কিছুই দৃ impossible় করা অসম্ভব হয়ে উঠবে। আপনার পরীক্ষাগুলি ক্রমান্বয়ে আরও বড় হবে get একবার আপনি পৌঁছেছেনmain()
পদ্ধতিতে আপনার আর ইউনিট-পরীক্ষা নেই (আপনার ইউনিট পুরো প্রয়োগ হিসাবে) আপনার এখন একটি দৃশ্যের পরীক্ষা আছে। আপনি যে অ্যাপ্লিকেশনটি পরীক্ষার চেষ্টা করছেন এটি একটি ওয়ার্ড প্রসেসর Ima মূল পদ্ধতি থেকে আপনি এতটা দৃsert়তার সাথে বলতে পারবেন না ...
কখনও কখনও স্থিতিশীল পদ্ধতিগুলি অন্য বস্তুর জন্য কারখানা হয়। এটি পরীক্ষার সমস্যাটিকে আরও সুস্পষ্ট করে তোলে। পরীক্ষাগুলিতে আমরা এই সত্যের উপর নির্ভর করি যে আমরা মোককে বিভিন্ন গুরুত্বপূর্ণ নির্ভরশীলতা প্রতিস্থাপনের পরিবর্তে বস্তুগুলিকে আলাদাভাবে তারে রাখতে পারি। কোনও new
অপারেটর বলা হয়ে গেলে আমরা উপ-শ্রেণীর সাথে পদ্ধতিটি ওভাররাইড করতে পারি না। এই জাতীয় স্ট্যাটিক কারখানার কলকারী স্থায়ীভাবে কংক্রিটের ক্লাসে আবদ্ধ থাকে যা স্থির কারখানার পদ্ধতি তৈরি করে। অন্য কথায় স্থির পদ্ধতির ক্ষতি স্থির পদ্ধতির থেকে অনেক দূরে। স্ট্যাটিক পদ্ধতিতে বাটিং অবজেক্ট গ্রাফ ওয়্যারিং এবং কনস্ট্রাকশন কোডটি অতিরিক্ত খারাপ, যেহেতু অবজেক্ট গ্রাফ ওয়্যারিং হ'ল আমরা কীভাবে পরীক্ষার জন্য জিনিসগুলিকে বিচ্ছিন্ন করি ...
আপনি দেখুন, উপরে দেওয়া এটি কেবল প্রাকৃতিক দেখায় যে জাভাটির জন্য উল্লিখিত পরিদর্শনটি ডিফল্ট দ্বারা বন্ধ করা আছে।
আইডিই বিকাশকারীদের বিস্তৃতভাবে স্বীকৃত প্রস্তাবনা এবং সেরা অনুশীলনের বিপরীতে ডিফল্টরূপে এটি সেট করা কেন এত গুরুত্বপূর্ণ বলে তা ব্যাখ্যা করার জন্য সত্যই কঠিন সময় কাটাতে হবে।
গ্রোভির পক্ষে বিষয়গুলি একেবারেই আলাদা। উপরে তালিকাভুক্ত যুক্তিগুলির কোনওটি প্রয়োগ হয় না, বিশেষত টেস্টাবিলিটি সম্পর্কিত একটি, যেমন জাভালবির গ্রোভির নিবন্ধে স্ট্যাটিক পদ্ধতিগুলি উপহাস করার ক্ষেত্রে ব্যাখ্যা করা হয়েছে :
আপনি যে গ্রুভি ক্লাসটি পরীক্ষা করছেন তা যদি অন্য গ্রোভী ক্লাসে স্থিতিশীল পদ্ধতি কল করে, তবে আপনি ExpandoMetaClass ব্যবহার করতে পারেন যা আপনাকে ক্রমবর্ধমান পদ্ধতি, নির্মাণকারী, বৈশিষ্ট্য এবং স্থিতিশীল পদ্ধতি যুক্ত করতে দেয় ...
এই পার্থক্যটি সম্ভবত গ্রোভির উল্লিখিত পরিদর্শনের জন্য ডিফল্ট সেটিংসের বিপরীত। জাভা ডিফল্টতে "অন" ব্যবহারকারীর বিভ্রান্তির উত্স হবে, গ্রোভিতে, বিপরীত সেটিংস আইডিই ব্যবহারকারীদের বিভ্রান্ত করতে পারে।
"আরে পদ্ধতিটি উদাহরণ ক্ষেত্রগুলি ব্যবহার করে না, কেন আপনি আমাকে এ সম্পর্কে সতর্ক করেননি?" এই প্রশ্নের উত্তর জাভা (যেমন উপরে বর্ণিত হয়েছে) হিসাবে দেওয়া সহজ হবে, তবে গ্রোভির পক্ষে কেবল কোনও বাধ্যবাধকতার ব্যাখ্যা নেই।