একটি "স্ট্যাটিক ফাইনাল লগার" ইউপিআর-সিএসইতে ঘোষণা করা উচিত?


243

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

উদাহরণ:

private static final Logger logger = Logger.getLogger(MyClass.class);

"স্ট্যাটিক ফাইনাল লগার" জন্য কেবল গুগল বা এসও অনুসন্ধান করুন এবং আপনি এটি নিজের জন্য দেখতে পাবেন।

পরিবর্তে আমরা LOGGER ব্যবহার করা উচিত?


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

সোনার বিধিগুলি ( নিয়ম.সোনারসোর্স.com / জাভা / ট্যাগ / কনভেনশন / আরএসপিইসি 1312 ) এরও রয়েছেprivate static final Logger LOGGER = LoggerFactory.getLogger(Foo.class);
কেনস্টন চোই

উত্তর:


306

লগার রেফারেন্স কোনও ধ্রুবক নয়, তবে একটি চূড়ান্ত রেফারেন্স, এবং বড় হাতের না হওয়া উচিত। একটি ধ্রুবক VALUE বড় হাতের অক্ষরে থাকা উচিত।

private static final Logger logger = Logger.getLogger(MyClass.class);

private static final double MY_CONSTANT = 0.0;

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

30
তবে জাভা.এল.আং.স্ট্রিং পরিবর্তনযোগ্য এবং যাই হোক না কেন একটি বিশেষ ধরণের শ্রেণি (স্ট্রিং.ইনটার্ন দেখুন () দেখুন, স্রিং পুল সম্পর্কে নথিপত্র)
আলেকসান্দার অ্যাডামোস্কি

3
অপরিবর্তনীয় অর্থ নির্মাণের পরে অবজেক্টের অবস্থা পরিবর্তন করতে পারে না। নীচে আমার পোস্ট দেখুন। লগার অগত্যা পরিবর্তনযোগ্য নয়।
জেফ্রি ব্লাটম্যান

4
যদি এখনও কেউ এই সমস্যাটির বিষয়ে চিন্তা করেন তবে দয়া করে উপরের কেসের চাহিদা আছে এবং কোথায় নয় তা আলাদা করতে দয়া করে github.com/checkstyle/checkstyle/issues/23 এ ধারণাগুলি ভাগ করুন ।
রোমান ইভানভ

2
@ জ্যাচ, আমি মনে করি না যে স্থিতিস্থাপকতা কীভাবে রাষ্ট্রের পরিবর্তনের সাথে সম্পর্কিত, কেবল এটিই ঘটে। তদুপরি, একজন ব্যবহারকারী কী? বহিরাগত ব্যবহারকারী প্রোগ্রাম চালাচ্ছেন? আপনি কি কোনও বোতাম টিপে কোনও ব্যবহারকারী দ্বারা রাষ্ট্রকে সংশোধিত করার, এবং কিছু এলোমেলো বিরতিতে টাইমার ফায়ারিং দ্বারা সংশোধন করার মধ্যে একটি পার্থক্য তৈরি করবেন? (আমি তাই মনে করি না).
জেফ্রি ব্লাটম্যান

236

ক্রাঙ্কডগের উত্তরে আরও মান যুক্ত করতে, জাভা কোডিং স্টাইল গাইড এটিকে অনুচ্ছেদ 3.3 এ বর্ণনা করেছে

ধ্রুবক হিসাবে ব্যবহৃত ক্ষেত্রের নামগুলি সমস্ত বড়-বড় হওয়া উচিত, আন্ডারস্কোর পৃথক করে পৃথক শব্দের সাথে। নিম্নলিখিতগুলি ধ্রুবক হিসাবে বিবেচিত হয়:

  1. সমস্ত static finalআদিম ধরণের (মনে রাখবেন যে সমস্ত ইন্টারফেস ক্ষেত্র সহজাতভাবে হয় static final)।
  2. static final" ." (বিন্দু) দ্বারা অনুসরণ করা হয় না এমন সমস্ত অবজেক্ট রেফারেন্স প্রকার ।
  3. সমস্ত static finalঅ্যারে যা কখনও " [" অনুসরণ করা হয় না (স্কোয়ার ব্র্যাকেট খোলার মাধ্যমে)।

উদাহরণ:

MIN_VALUE, MAX_BUFFER_SIZE, OPTIONS_FILE_NAME

এই কনভেনশন অনুসরণ করে loggerএকটি হল static finalবস্তুর রেফারেন্স হিসেবে বিন্দু 2 বিবৃত কিন্তু কারণ এটি হয় দ্বারা "অনুসৃত .সব আপনি এটি ব্যবহার", এটি একটি ধ্রুবক হিসেবে বিবেচনা করা যাবে না এবং এইভাবে ছোট হাতের হওয়া উচিত।


11
আমি এখনও এর জন্য সেরা সংজ্ঞাটি দেখেছি। লিঙ্কযুক্ত ডকটি এখানে cs.bilgi.edu.tr/pages/standards_project/…
রবার্ট

15
আমি পয়েন্ট 2 পাই না কোন বস্তুর ধরণের একটি উদাহরণ যা কোনও বিন্দু দ্বারা অনুসরণ করা হয় না। সমস্ত অবজেক্টের ধরণগুলি উত্তরাধিকার সূত্রে প্রাপ্ত হয় Objectএবং আপনি সেগুলির মতো কোনও পদ্ধতিতে কল করতে পারেন .equals
ডগবনে

6
তুমি ঠিক. এবং বুলিয়ান.আরআরটি, বুলিয়ান.ফালএসই, টাইমউনিট.মিনিটস, স্ট্রিং.সিএএসআইএনআইএনএসএনএসটিআইভিআইপিডিআর বা সংগ্রহসমূহ .এএমপিটিওয়াই_লাইএসটির মতো কিছু জাভা কনস্ট্যান্টের দিকে তাকানোর সময় সেগুলিও অনুসরণ করতে পারে .
সিবি্লায়ার্ড

5
@ রোমানআইভানভ আমি এটি আবার এখানে পেয়েছি: scribd.com/doc/15884743/ জাভা- কোডিং- স্টাইল- বাই- আছুত- রেডি আছুত রেড্ডির লেখা, শেষ আপডেট 30 মে, 2000
সিবিয়ার্ড

1
আমি বিশ্বাস করি যে 2 এর উদ্দেশ্য কেবলমাত্র ক্লাসগুলির সাথে তুলনামূলকভাবে ধ্রুবক হিসাবে বিবেচিত হয় তা নির্ধারণ করা। ক্লাসটি 'ব্যবহৃত' বোঝানো নয়। আমি যখন SOME_CLASS.doStuff () দেখি তখন সর্বদা ক্রিঞ্জ জানি। এটা শুধু পদ্মায় কোডিং। এটির সাথে একমাত্র সমস্যা হ'ল ধ্রুবক বস্তুর সাধারণ ক্ষেত্রে (স্ট্রিং সাধারণ উদাহরণ হিসাবে) যা কেবল তুলনা করার জন্য বোঝানো হয় তবে নাল চেকগুলি এড়ানোর জন্য, যোদা স্টাইল কোডিং ব্যবহার করা হয় এবং সুতরাং সমান ()টিকে ধ্রুবককে ডাকা হয়। আমার মনে হয় আমি এটিকে ২-এ এক করে দেবো
রবিন

44

কার্যকর জাভা থেকে, দ্বিতীয় সংস্করণ,

পূর্ববর্তী নিয়মের একমাত্র ব্যতিক্রম "ধ্রুবক ক্ষেত্রগুলি" সম্পর্কিত, যার নাম অন্তর্ভুক্ত হওয়া অক্ষরের দ্বারা পৃথক পৃথক এক বা একাধিক বড় হাতের শব্দ যুক্ত হওয়া উচিত, উদাহরণস্বরূপ, VALUES বা NEGATIVE_INFINITY। একটি ধ্রুবক ক্ষেত্র হ'ল স্থিতিশীল চূড়ান্ত ক্ষেত্র, যার মান অপরিবর্তিত । যদি কোনও স্থিতিশীল চূড়ান্ত ক্ষেত্রের কোনও আদিম প্রকার বা অপরিবর্তনীয় রেফারেন্স প্রকার (আইটেম 15) থাকে তবে তা স্থির ক্ষেত্র। উদাহরণস্বরূপ, এনাম ধ্রুবকগুলি ধ্রুবক ক্ষেত্র। স্থিতিশীল চূড়ান্ত ক্ষেত্রে যদি একটি পরিবর্তনীয় রেফারেন্স ধরণ থাকে তবে রেফারেন্সযুক্ত বস্তুটি পরিবর্তনযোগ্য না হলে এটি এখনও স্থির ক্ষেত্র হতে পারে।

সংক্ষেপে, ধ্রুবক == স্থিতিশীল চূড়ান্ত, প্লাস যদি এটি একটি রেফারেন্স হয় (বনাম একটি সাধারণ ধরণের), অপরিবর্তনীয়তা।

Slf4j লগারটি দেখে, http://www.slf4j.org/api/org/slf4j/Logger.html

এটি অপরিবর্তনীয়। অন্যদিকে, JUL লগারটি পরিবর্তনীয়। লগ 4 জে লগারটিও পরিবর্তনযোগ্য। সুতরাং সঠিকভাবে বলতে গেলে, আপনি লগ 4 জে বা জুল ব্যবহার করছেন, এটি "লগার" হওয়া উচিত, এবং যদি আপনি slf4j ব্যবহার করেন তবে এটি লোগার হওয়া উচিত।

মনে রাখবেন যে উপরে লিঙ্কযুক্ত slf4j জাভাদোকস পৃষ্ঠার একটি উদাহরণ রয়েছে যেখানে তারা "লোগার" ব্যবহার করে, "লোগার" ব্যবহার করে না।

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


2
এই যুক্তির ভিত্তিতে তাহলে চেকস্টাইলের সরলবাদী সংজ্ঞাটি কি অনুচিত?
রবার্ট

3
আমি চেক শৈলীর নিয়ম জানি না। যদি এটি কেবল জোর দিয়ে থাকে যে কোনও স্ট্যাটিক ফাইনালটি উচ্চতর ক্ষেত্রে হওয়া উচিত, তবে হ্যাঁ, এটি ভুল wrong
জেফ্রি ব্লাটম্যান

5
Logger ইন্টারফেসটি ঠিক কীভাবে অপরিবর্তনীয় ? কেবলমাত্র একটি final class(যেমন Stringবা Integer) অপরিবর্তনীয়তার গ্যারান্টি দিতে পারে। এমনকি যদি আপনি এসএলএফ 4 জে কোনও পরিবর্তনীয় বাস্তবায়ন নাও খুঁজে পান তবে Loggerকেউ আপনাকে নিজের লেখা থেকে বিরত রাখতে পারে না।
কোস্টি সিউদাতু

কারণ ইন্টারফেসের পদ্ধতিগুলি সহজাতভাবে রূপান্তর করতে দেয় না। পরিবর্তিত পার্শ্ব প্রতিক্রিয়া থাকতে ইন্টারফেসটি প্রয়োগ করতে পারলেও আপনি সঠিক।
জেফ্রি ব্লাটম্যান

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

37

আমি গুগল এটি গ্রহণ ( গুগল জাভা স্টাইল ) পছন্দ

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

উদাহরণ:

// Constants
static final int NUMBER = 5;
static final ImmutableList<String> NAMES = ImmutableList.of("Ed", "Ann");
static final Joiner COMMA_JOINER = Joiner.on(',');  // because Joiner is immutable
static final SomeMutableType[] EMPTY_ARRAY = {};
enum SomeEnum { ENUM_CONSTANT }

// Not constants
static String nonFinal = "non-final";
final String nonStatic = "non-static";
static final Set<String> mutableCollection = new HashSet<String>();
static final ImmutableSet<SomeMutableType> mutableElements = ImmutableSet.of(mutable);
static final Logger logger = Logger.getLogger(MyClass.getName());
static final String[] nonEmptyArray = {"these", "can", "change"};

6
আমি মনে করি প্রথম বাক্যটি যথাযথভাবে উপস্থাপিত হয়েছে: "প্রতিটি ধ্রুবক একটি স্থির চূড়ান্ত ক্ষেত্র, তবে সমস্ত স্থির চূড়ান্ত ক্ষেত্রগুলি ধ্রুবক নয়" " যান্ত্রিক চিন্তাভাবনা ব্যবহার করা সহজ এবং প্রতিটি বড় স্ট্যাটাসের চূড়ান্ত ক্ষেত্র রয়েছে (এবং আমি এখন অবধি এটি করে চলেছি) তবে এটি ভাষার সূক্ষ্মতা মিস করা।
আইয়ুয়াসকা

সেই উক্তি অনুসারে, ক্ষেত্রটি যদি একটি ধ্রুবকের মতো "সত্যই অনুভব করে" তবে এটি উত্পন্ন হয়। আমরা প্রকৌশলী, মনোরোগ বিশেষজ্ঞ নন not
জেফ্রি ব্লাটম্যান

"বিবেচনা করুন ... যদি এটি সত্যই স্থির মনে হয়"। কারও অনুভূতি প্রকৃতপক্ষে প্রকৌশল ক্ষেত্রে প্রবেশ করা উচিত নয়।
জেফ্রি ব্লাটম্যান

তারপরে পেয়ারা কোডে তাদের যেমন রয়েছেprivate static final Logger logger = Logger.getLogger(Finalizer.class.getName());
কেনস্টন চোই

10

আপনি যদি নিজের কোডিং মানগুলি যাচাই করতে একটি স্বয়ংক্রিয় সরঞ্জাম ব্যবহার করেন এবং এটি বলে মানকে লঙ্ঘন করে তবে তা বা মানগুলি ঠিক করা উচিত। আপনি যদি বাহ্যিক মান ব্যবহার করেন তবে কোডটি ঠিক করুন।

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


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

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

3
এটি যদি লগারের পরিবর্তে স্ট্রিংবিল্ডার হয় তবে সম্ভবত এটি সম্ভবত আরও ধ্রুবক হবে। এমনকি লগারের ক্ষেত্রেও লগার.সেটলেভেল () এর মতো পদ্ধতিগুলি গ্রহণযোগ্যভাবে পর্যবেক্ষককে পরিবর্তন করতে পারে। সাধারণত বড় হাতের অক্ষরটি সেই ধ্রুবকদের জন্য যা ভাষাগুলি ধ্রুবক হিসাবে বিবেচনা করে এবং ইনলাইন করবে।
পিট কির্খাম

5
লগার কোনও অবিচ্ছিন্ন নয় কারণ এটি কোনও জিনিসের রেফারেন্স। ধ্রুবকগুলি এমন মান যা পরিবর্তন করা যায় না। অবজেক্টের রেফারেন্স চূড়ান্ত (সুতরাং এর রেফারেন্সটি পরিবর্তন করা যায় না, যেমন অন্য কিছু দিয়ে অদলবদল করা বা নালায় সেট করা) তবে অবজেক্টটি নিজেই পারে।
স্পোইক

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

7

আপনি যদি এটি গুগল করেন তবে আপনি দেখতে পাবেন যে কোনও কোনও ক্ষেত্রে লগারে স্ট্যাটিক ফাইনাল হিসাবে সংজ্ঞায়িত করা হয় না। এটিতে কিছু দ্রুত কপি-এন-পেস্ট যুক্ত করুন এবং এটি এটি ব্যাখ্যা করতে পারে।

আমরা আমাদের সমস্ত কোডগুলিতে লোগার ব্যবহার করি এবং এটি আমাদের নামকরণের সম্মেলনের সাথে মিলে যায় (এবং আমাদের চেকস্টাইল এতে খুশি হয়)।


এমনকি আমরা আরও এগিয়ে যাই, গ্রহণের কঠোর নামকরণ কনভেনশনটির সুবিধা গ্রহণ করে। এর একটি কোড টেমপ্লেট সহ আমরা একটি নতুন শ্রেণি তৈরি করি:

    // private static final Logger LOGGER = Logger.getLogger(${enclosing_type}.class);

লগারটি মন্তব্য করা হয়েছে, প্রাথমিকভাবে আমাদের এটির দরকার নেই। তবে আমাদের পরে এটির দরকার হওয়া উচিত, আমরা কেবল এটি অস্বচ্ছন্দ করি।

তারপরে কোডে আমরা এমন কোড টেমপ্লেট ব্যবহার করি যা এই লগারের উপস্থিতি প্রত্যাশা করে। ট্র্যাচ-ক্যাচ টেম্পলেট সহ উদাহরণ:

    try {
      ${cursor} or some other template
    } catch (Exception t) {
      LOGGER.error("${methodName} ${method parameters}", t);
    }

আমাদের আরও কয়েকটি টেম্পলেট রয়েছে যা এটি ব্যবহার করে।

কঠোর কনভেনশন আমাদের আরো উত্পাদনশীল এবং কোড টেমপ্লেট সঙ্গে সুসঙ্গত হতে করার অনুমতি দেয়


5
থ্রোয়েবলকে ক্যাচিং করা খারাপ অভ্যাস, যদি আপনি লগইন করেন এবং পুনরায় এটিকে না করেন। ত্রুটিগুলি মনে রাখবেন: আউটঅফমিওরিওর ইত্যাদি Event ইভেন্ট ব্যতিক্রমটি মাল্টি-থ্রেড অ্যাপ্লিকেশনগুলিতে নিজের দ্বারা ক্যাচ করা এবং পরিচালনা করা এতটা নিরাপদ নয়।
এম_ভিতালি

2
এক্সিলিপ সিনট্যাক্সটি হ'ল: লগার.জেটলোগার ($ {enclosing_type} .class);
ডগবনে

নিখুঁত বাক্য গঠনের জন্য @ ফাহদারিফ ধন্যবাদ। আমি আমার উত্তর আপডেট।
কেএলই

যদি চেকস্টাইল বা পিএমডি এর "কঠোর সম্মেলনগুলি" সহায়তা করে, তবে পেয়ারা এবং জেডিকে উত্সগুলিতে কেন কোনও সাধারণ শৈলী প্রয়োগ করা হয়নি? উদাহরণস্বরূপ, যেখানে প্রয়োজন সেখানে তাদের উত্সে প্রচুর পরিপূর্ণ ইনিল্যান্ড ব্লক রয়েছে। পঠনযোগ্যতা প্রসঙ্গে নির্ভরশীল, তাই প্রতিটি কিছুর জন্য কঠোর স্টাইলিং কনভেনশনগুলি প্রসঙ্গভিত্তিক সিদ্ধান্তগুলিকে ধ্বংস করে, তাই পাঠ্যতা হ্রাস পায়।
ড্যানিয়েল হ্যারি 21

6

আমি ব্যক্তিগতভাবে মনে করি এটি বড় আকারের ক্ষেত্রে বড় দেখায়। তদ্ব্যতীত, এটি যেহেতু এটি একটি শ্রেণি যা এটি সরাসরি শ্রেণীর আচরণের সাথে সম্পর্কিত নয়, তাই loggerপরিবর্তে ব্যবহার করার ক্ষেত্রে আমি কোনও বড় সমস্যা দেখি না LOGGER। আপনি যদি কঠোরভাবে পেডেন্টিক হতে চলেছেন তবে ব্যবহার করুন LOGGER


4

ভুলে যাবেন না যে পিএমডি একটি মন্তব্যের সাথে সম্মান করবে

// NOPMD

এটা. এটি পিএমডি এর চেকগুলি থেকে লাইনটি এড়াতে সক্ষম করবে, এটি আপনাকে যে কোনও শৈলীটি চয়ন করতে সহায়তা করবে।


6
বা পিএমডি ব্যবহার করবেন না, এগুলি সর্বদা ভুল এবং আপনার কোডটি সঠিক
আইএডাপ্টার

1
আপনার যদি সর্বদা প্রতিবার একটি চেক বাদ দিতে হয় তবে চেকটি কোনও অর্থবোধ করে না।
কিকি

আরও সম্মত হতে পারিনি - তবে ... বাদ
পড়ার

3

সাধারণত ধ্রুবকগুলি বড়হাতে থাকে।

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


2

আমি 'লগার', মানে লোয়ার কেস পছন্দ করি। কারণটি এটি নয় যে এটি একটি ধ্রুবক বা একটি ধ্রুবক নয় (পরিবর্তনীয় বা পরিবর্তনযোগ্য)। আমরা যদি এই যুক্তিটি ব্যবহার করতাম তবে আমরা লগিংয়ের কাঠামোটি পরিবর্তন করি (বা ফ্রেমওয়ার্কটি যদি লগারের রূপান্তর পরিবর্তন করে) তবে আমাদের পরিবর্তনশীলটির নামকরণ করতে হবে।

আমার জন্য, অন্যান্য কারণগুলি আরও গুরুত্বপূর্ণ।

  1. একটি লগার ক্লাসে একটি ছায়া বস্তু এবং এটি খুব যুক্তিযুক্ত হওয়া উচিত নয় কারণ এটি মূল যুক্তিকে বাস্তবায়ন করে না। আমরা যদি 'LOGGER' ব্যবহার করি তবে কোডে এটি চোখের ক্যাচার যা খুব বেশি মনোযোগ আকর্ষণ করে।

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


1

যদি আপনার কোডিং মানগুলি - আপনার যদি কিছু থাকে - বলুন যে এটি বড় হাতের হওয়া উচিত তবে হ্যাঁ।

আমি একটি উপায় বা অন্য কোনও কারণে কড়া কারণ দেখছি না। আমি মনে করি এটি সম্পূর্ণরূপে আপনার ব্যক্তিগত পছন্দ শ্রদ্ধার উপর নির্ভর করে। আপনার সংস্থা কোডিং মান।

বিটিডাব্লু: আমি "লোগার" পছন্দ করি ;-)

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