জাভা লগার: স্ট্যাটিক ব্লক সূচনা বা পরিবর্তনশীল ঘোষণায় সূচনা in


15

বর্তমানে আমি আমার প্রকল্পে লগারটি নিম্নলিখিত উপায়ে ব্যবহার করছি:

private static final Logger LOGGER;

static{
  LOGGER = logger.getLogger();
}

লগার ভেরিয়েবল শুরু করার জন্য আমি স্ট্যাটিক ব্লক ব্যবহারের জন্য একটি কোড পর্যালোচনা পেয়েছি। আমাকে ঘোষণার বিবৃতিতে লগার ভেরিয়েবলটি আন্তঃকরণ করতে বলা হয়েছিল।

private static final Logger LOGGER = Logger.getLogger();

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


8
এটি কোনও পার্থক্য করে না, তবে তাদের মধ্যে একটিতে আরও টাইপিং এবং কোডের আরও লাইন জড়িত।
ব্যবহারকারী 253751

তারা উভয়ই একই বাইকোড তৈরি করবে। আপনি কোনটিকে পছন্দ করেন তা সম্পূর্ণ স্বাদের বিষয়,
ব্যবহারকারী 207421

আপনি কেন লম্বোক ব্যবহার করবেন না?
মনিকা পুনরায় ইনস্টল করুন - এম। শ্রাইডার

উত্তর:


48

আরম্ভকারীদের ক্রম জড়িত কিছু সত্যই উদ্ভট কোণার ব্যতীত দুটি বিকল্প ঠিক একই রকম কাজ করবে।

যাইহোক, ঘোষণায় ডানদিকে উদাহরণটি আরম্ভ করা খাটো এবং আরও পরিচিত, এবং কেবলমাত্র সে কারণেই এটি পছন্দ করা উচিত।

স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লকগুলি কিছুটা বহিরাগত কন্সট্রাক্ট এবং কেবলমাত্র যখন তারা ব্যতিক্রমগুলি পরিচালনা করতে হয় তখন অতিরিক্ত মূল্য প্রদান করে তবেই তা ব্যবহার করা উচিত।


7
স্থির ব্লকগুলি ব্যবহারের ক্ষেত্রে বিরল ক্ষেত্রে ব্যতিক্রম উল্লেখ করার পক্ষে ভাল বিষয়।
user949300

4
একটি হ্যাশম্যাপ অন্তর্নিহিত করা আরেকটি ভাল ব্যবহারের হাতছাড়া।
রাবারডাক

3
@ রাবারডাক যদিও জাভা 9 এর Map.ofপদ্ধতিগুলির সাথে এটির সহায়তা করা উচিত।
cbojar

1
@ কোবোজার Map.ofএকটি অপরিবর্তনীয় মানচিত্র ফিরিয়েছে যদিও তাই আপনার যদি সত্যই প্রয়োজন হয় তবে HashMapআপনাকে এখনও এটি পুরানো উপায়ে করতে হবে। বা এর মতো কিছুnew HashMap(Map.of(...))
কেপেক্স

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