আপনি যদি প্রশ্নের প্রথম বাক্যটি পড়েন তবে খুব স্পষ্ট হয় যে এই প্রশ্নটি
যাদুর সংখ্যাগুলি দূর করার
মতো উপযুক্ত ব্যবহার সম্পর্কে নয় , এটি সর্বোপরি ভয়াবহ নির্বোধ নির্বিকার ধারাবাহিকতা সম্পর্কে । এই উত্তরটি যা সম্বোধন করে
সাধারণ জ্ঞান আপনাকে জানায় const char UPPER_CASE_A = 'A';
বা const char A = 'A'
আপনার সিস্টেমে রক্ষণাবেক্ষণ এবং জটিলতা ব্যতীত অন্য কিছু যুক্ত করে না। const char STATUS_CODE.ARRIVED = 'A'
একটি ভিন্ন কেস।
ধ্রুবক জিনিস রানটাইম এ অপরিবর্তনীয়, কিন্তু কম্পাইল সময় ভবিষ্যতে রুপান্তরিত করা প্রয়োজন হতে পারে প্রতিনিধিত্ব করতে অনুমিত হয়। কখন const char A =
ছাড়া অন্য কিছু সঠিকভাবে সমান হবে A
?
আপনি যদি public static final char COLON = ':'
জাভা কোডটিতে দেখতে পান তবে যাকে লিখেছেন তাদের সন্ধান করুন এবং তাদের কীবোর্ডগুলি ভেঙে দিন। যদি আপনার COLON
কাছ থেকে সর্বদা প্রতিনিধিত্ব করে তবে এটি :
রক্ষণাবেক্ষণের দুঃস্বপ্ন।
কিংকর্তব্যবিমূঢ়তা:
যখন কেউ এটিকে পরিবর্তন করে COLON = '-'
কারণ তারা যেখানে এটি ব্যবহার করছে সেখানে -
সর্বত্র এর পরিবর্তে প্রয়োজন ? আপনি কি ইউনিট পরীক্ষা লিখতে যাচ্ছেন যা assertThat(':' == COLON)
প্রতিটি একক const
রেফারেন্সের জন্য মূলত বলেছে যে তারা পরিবর্তন না হয়? কেবলমাত্র কেউ পরিবর্তন করার সাথে সাথে পরীক্ষা ঠিক করতে পারে?
যদি কেউ আসলে যুক্তি দেয় যে public static final String EMPTY_STRING = "";
এটি দরকারী এবং উপকারী, আপনি কেবল তাদের জ্ঞান অর্জনের যোগ্যতা অর্জন করেছেন এবং অন্য কোনও কিছুতে নিরাপদে এড়িয়ে যান।
একটি নামকরণ সংস্করণ সহ প্রতিটি মুদ্রণযোগ্য অক্ষর উপস্থিত থাকা কেবল এটি প্রমাণ করে যে যারাই এটি করেছে, নিরীক্ষণবিহীন কোড লেখার যোগ্য নয়।
সংযোগ:
এটি কৃত্রিমভাবে সংহতিকেও হ্রাস করে, কারণ এটি জিনিসগুলি তাদের ব্যবহার করে এমন জিনিস থেকে দূরে সরিয়ে দেয় যা তাদের সাথে সম্পর্কিত।
কম্পিউটার প্রোগ্রামিংয়ে, সংহতি বলতে মডিউলটির উপাদানগুলি একত্রে ডিগ্রি বোঝায়। সুতরাং, সংহতি প্রদত্ত মডিউলটির মধ্যে কার্যকারিতার টুকরাগুলির মধ্যে সম্পর্কের শক্তি পরিমাপ করে। উদাহরণস্বরূপ, অত্যন্ত সমন্বিত সিস্টেমে কার্যকারিতা দৃ strongly়ভাবে সম্পর্কিত।
জোড়া দেওয়া টিউব:
এটি অনেকগুলি সম্পর্কযুক্ত ক্লাস একসাথে দম্পত্তি করে কারণ তারা সমস্তই ফাইলগুলি রেফারেন্স করে শেষ করে যা তারা যা করে তা সত্যই সম্পর্কিত নয়।
আঁটসাঁট মিলন তখন হয় যখন একদল শ্রেণীর একে অপরের উপর নির্ভরশীল। এই দৃশ্যটি দেখা দেয় যখন কোনও শ্রেণি অনেকগুলি দায়বদ্ধতা গ্রহণ করে, বা যখন একটি উদ্বেগ নিজস্ব শ্রেণি না করে বহু শ্রেণিতে ছড়িয়ে পড়ে।
আপনি যদি একটি ব্যবহার করে থাকেন ভাল নাম মত DELIMITER = ','
আপনি এখনও কারণ নাম জেনেরিক এবং কোন শব্দার্থিক বহন একই সমস্যা হবে। আক্ষরিক জন্য অনুসন্ধান এবং প্রতিস্থাপনের চেয়ে মানটিকে পুনরায় বরাদ্দ করা প্রভাব বিশ্লেষণে সহায়তা করতে আর কিছুই করে না ','
। কারণ কিছু কোড কী এটি ব্যবহার করে ,
এবং কিছু অন্যান্য কোড ব্যবহার করে তবে ;
এখন প্রয়োজন ? তবুও প্রতিটি ব্যবহার ম্যানুয়ালি দেখতে হবে এবং সেগুলি পরিবর্তন করতে হবে।
বন্য মধ্যে:
আমি সম্প্রতি একটি 1,000,000+ LOC
অ্যাপ্লিকেশন রিফেক্টর করেছি যা 18 বছর বয়সী ছিল। এটা মত জিনিস ছিল public static final COMMA = SPACE + "," + SPACE;
। এটি " , "
যেখানে প্রয়োজন সেখানে কেবল ইনলাইনিংয়ের চেয়ে ভাল আর নয়।
আপনি যদি পঠনযোগ্যতার পক্ষে তর্ক করতে চান তবে আপনাকে নিজের আইডিইকে এমন whitespace
অক্ষর প্রদর্শন করতে কনফিগার করতে হবে যেখানে আপনি সেগুলি বা যে কোনও কিছুই দেখতে পাবেন, এটি কোনও সিস্টেমে এনট্রপির প্রবর্তন করার জন্য অত্যন্ত অলস কারণ।
এটি একাধিক প্যাকেজ এবং ক্লাসে ,
শব্দের একাধিক ভুল বানান সহ একাধিকবার সংজ্ঞায়িত করেছিল COMMA
। কোডের সাথে একত্রে সংযুক্ত সমস্ত ভিন্নতার উল্লেখের সাথে। সম্পূর্ণ সম্পর্কহীন কিছু না ভেঙে কিছু ঠিক করার চেষ্টা করা এবং সমাধান করা দুঃস্বপ্নের কম ছিল না ।
বর্ণমালা সঙ্গে একি, সেখানে একাধিক ছিল UPPER_CASE_A
, A
, UPPER_A
, A_UPPER
যে অধিকাংশ সময় সমান ছিল A
কিন্তু কিছু ক্ষেত্রে ছিল না । প্রায় প্রতিটি চরিত্রের জন্য, তবে সমস্ত চরিত্র নয়।
এবং সম্পাদনা ইতিহাস থেকে দেখা যায় নি যে 18 বছরেরও মধ্যে এর মধ্যে একটিও সম্পাদিত বা পরিবর্তিত হয়েছিল, কারণ এখন যা স্পষ্ট কারণ হওয়া উচিত তা হ'ল অনেকগুলি জিনিস যা ভেঙে ফেলা যায়নি তা ভেঙে ফেলবে, সুতরাং আপনার নতুন পরিবর্তনশীল রয়েছে একই জিনিসটির দিকে নির্দেশ করা নামগুলি যে একই কারণে কখনই পরিবর্তন করা যায় না।
কোনও বুদ্ধিমান বাস্তবতায় আপনি তর্ক করতে পারবেন না যে এই অনুশীলনটি সর্বাধিক এনট্রপি শুরু করে কিছু করছে না।
আমি এই সমস্ত জগাখিচুড়িটি রিফেক্টর করে সমস্ত টাউটোলজিকে ইনলাইন করেছিলাম এবং নতুন কলেজের ভাড়া অনেক বেশি ফলপ্রসূ ছিল কারণ এই const
রেফারেন্সগুলি আসলে কী নির্দেশ করেছিল তা তাদের একাধিক স্তরের অন্বেষণ করতে হয়নি, কারণ তাদের নামকরণে তারা নির্ভরযোগ্য ছিল না বনাম যা তারা ধারণ করে।