জাভা পদ্ধতির নামটি কখন দীর্ঘ হয়? [বন্ধ]


173

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

একটি উদাহরণ:

getNumberOfSkinCareEligibleItemsWithinTransaction

19
হ্যাঁ এটি একটি "কোড গন্ধ" ... c2.com/cgi/wiki?LongMethodSmell
ড্যান রোজনস্টার্ক

23
এটি যখন> 6 666 অক্ষর দীর্ঘ হয় তবে আপনি জানেন যে আপনার একটি সমস্যা আছে।
থমাস এডিং

8
আপনার ইয়ার উদাহরণে, "লং মেথড" এর বিপরীত "শর্ট মেথড" যা একটি ভাল জিনিস হিসাবে বিবেচিত হয়। সুতরাং এটি সম্ভবত পদ্ধতির নাম উল্লেখ করে না; এটি কোডের লাইনগুলি (বা অনুরূপ সাদৃশ্য) উল্লেখ করে। উদাহরণস্বরূপ, f()খুব অল্প ফাংশন, কিন্তু এটা অবশ্যই না ভাল অভ্যাস আছে ... এবং কিছু কিছু প্রোগ্রামিং গণিতবিদ সেখানে আউট :) বলা উচিত
sfussenegger

3
@ সাফুসনেগার, এটি সত্য। তবে আমি পদ্ধতি-নামের দৈর্ঘ্য এবং পদ্ধতির দৈর্ঘ্যের মধ্যে একটি সম্পর্কের উপরে বাজি ধরছি। f()দুর্দান্ত অনুষ্ঠান নাও হতে পারে তবে সেই $()লোকটি জাভাস্ক্রিপ্ট পদ্ধতি বিশ্বে রকস্টারের মতো।
ড্যান রোজনস্টার্ক

7
@ ইয়ার, আপনি যে লিঙ্কটি দিয়েছেন সেটিকে পদ্ধতির নামের দৈর্ঘ্য নয়, লাইনগুলিতে পদ্ধতিটির দৈর্ঘ্য উল্লেখ করা হয়েছে ।
থরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


398

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


65
গাণিতিকভাবে মার্জিত।
রিকিট

304
সুতরাং, উদাহরণস্বরূপ, boolean doesShorterNameExistThatEquallyConvaysTheBehaviorOfTheMethod(String s)এটিকে রিফ্যাক্টর করা উচিত boolean isTooLong(String s)
z5h

6
আমি পুরোপুরি একমত নই, কারণ আপনি কেবল আচরণটিই প্রকাশ করতে চান না তবে প্রকল্পের এবং ভাষার সম্মেলনটিও রাখতে চান। পাইথনে তাই আপনি বলতে পারেন eligible_items_cntতবে জাভাতে আপনি সাধারণত বলেন getEligibleItemsCount
ফ্লাইবওয়ায়ার

17
@ ফ্লাইওয়াইয়ার: যে কোনও সম্মেলন যা আপনাকে অতিরিক্ত দীর্ঘ নাম লেখায় তা সন্দেহজনক উপকারী।
এমএকে

20
@ এমএকে @ এসলট কীভাবে getLength()বনাম length()? 'গেট' বা 'সেট' টাইপ করার পরে আমি স্বতঃপূরণগুলি দেখতে সত্যিই পছন্দ করি - তাই আমি এই ক্ষেত্রে সংক্ষিপ্ততার চেয়ে কনভেশনকে পছন্দ করব।
sfussnegger

202

পদ্ধতির নামের দৈর্ঘ্য হ্রাস করার জন্য কিছু কৌশল:

  1. যদি আপনার পুরো প্রোগ্রাম, বা ক্লাস, বা মডিউলটি 'ত্বকের যত্নের আইটেমগুলি' সম্পর্কে থাকে তবে আপনি ত্বকের যত্ন বাদ দিতে পারেন। উদাহরণস্বরূপ, যদি আপনার শ্রেণি কল করা হয় তবে তা SkinCareUtilsআপনাকে এনে দেয়getNumberOfEligibleItemsWithinTransaction

  2. আপনি পরিবর্তন করতে পারেন মধ্যে থেকে ,getNumberOfEligibleItemsInTransaction

  3. আপনি লেনদেনকে টিএক্স-তে পরিবর্তন করতে পারেন, যা আপনাকে দেয় getNumberOfEligibleItemsInTx

  4. অথবা যদি পদ্ধতিটি কোনও প্রকারের পরম গ্রহণ করে তবে Transactionআপনি InTx পুরোপুরি ড্রপ করতে পারেন:getNumberOfEligibleItems

  5. আপনি গণনা অনুসারে সংখ্যা পরিবর্তন করুন: getEligibleItemsCount

এখন যে খুব যুক্তিসঙ্গত। এবং এটি 60% ছোট sh


11
উপরন্তু, 5) করা হবে getEligibleItems()এবং getEligibleItemsCount()(বর্ণানুক্রমে সাজানো তালিকায় পরবর্তী প্রতিটি অন্যান্য যেমন স্বয়ংক্রিয়ভাবে বা javadoc)
sfussenegger

4
এবং সাধারণত সত্য হিসাবে, সংক্ষিপ্ত নামটি হাইকু নিয়মের সাথে খাপ খায়।
সাল 18

2
@ মার্কেটর কাউন্টএলিবল্ট আইটেমের চেয়ে getEl اهلItems এর মতো একটি স্ট্যান্ডার্ড কনভেনশন ব্যবহার করে বিবৃতিতে অস্পষ্টতার সম্ভাবনা হ্রাস পায়। পদ্ধতিটি কী করণীয় তা নিয়ে কম অস্পষ্টতা পাঠযোগ্যতা বাড়ে। পদ্ধতির দিকে আরও নজর না দিয়ে এমন একটি পদ্ধতি যা "গণনা" একটি পদ্ধতি যা "দীর্ঘমেয়াদে" অর্জন করে তার চেয়ে কম পরিষ্কার হয় is
বিল

53
আমি সংক্ষিপ্তকরণ অপছন্দ Tx, Cnt, grph, ইত্যাদি ... (BTW, Txছোট "ট্রান্সমিশন" বা "ট্রান্সমিটার" জন্য)
Meinersbur

14
হ্যাঁ, আপনি "টিএক্স" ব্যবহার করার সিদ্ধান্ত না নেওয়া পর্যন্ত আমি আপনার সাথে একমত হয়েছি।
পোনকডুডল

183

কেবল পরিবর্তনের জন্য, একটি অ-বিষয়গত উত্তর: 65536 টি অক্ষর।

এ। জাভা অনুচ্ছেদ: "এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স ...

;-)


4
হ্যাঁ এটি খুব দীর্ঘ যখন জেভিএম এটি কোনও মোঃ পরিচালনা করতে পারে না :)
অনুরাগ

35
জন্য +1 আক্ষরিক উত্তর।
সাল

37
প্রযুক্তিগতভাবে, জাভা ভাষার বর্ণনার সনাক্তকারী দৈর্ঘ্যের জন্য উপরের সীমা নেই। এটি আপনার জেভিএম বাস্তবায়নের একটি সীমাবদ্ধতা। চিয়ার্স!
uckelman

13
সূর্যের সংকলক স্পষ্টতই এই অনুমানের সাথে খাপ খায় না। java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.8 বলেছেন: "একটি সনাক্তকারী একটি সীমাহীন দৈর্ঘ্যের ক্রম ..."
মাইকেল মাইয়ারস

6
ত্রুটি বার্তাটি দেখায়, জেভিএম স্পেকের উপরের সীমা রয়েছে। Utf8 এর ধ্রুবক পুল উপস্থাপনাটি এখানে নির্দিষ্ট 2 ^ 16 বাইটের মধ্যে সীমাবদ্ধ । ক্লাসের নাম এবং পদ্ধতির নাম অবশ্যই ধ্রুবক পুলে utf8 এর হিসাবে সংরক্ষণ করতে হবে।
thejoshwolfe

42

আমি সবার সাথে একমত: পদ্ধতির নামগুলি খুব বেশি দীর্ঘ হওয়া উচিত নয়। আমি যদিও একটি ব্যতিক্রম যুক্ত করতে চাই:

JUnit পরীক্ষা পদ্ধতির নামগুলি অবশ্য দীর্ঘ হতে পারে এবং বাক্যগুলির সাথে সাদৃশ্য হওয়া উচিত।

কেন?

  • কারণ তাদের অন্য কোডে কল করা হয় না।
  • কারণ এগুলি পরীক্ষার নাম হিসাবে ব্যবহৃত হয়।
  • কারণ সেগুলি তখন প্রয়োজনীয়তা বর্ণনা করে বাক্য হিসাবে লেখা যেতে পারে। (উদাহরণস্বরূপ, অ্যাগ্রিলডক্স ব্যবহার করে )

উদাহরণ:

    @Test
    public void testDialogClosesDownWhenTheRedButtonIsPressedTwice() {
        ...
    }

এই ধারণার আরও তথ্যের জন্য " আচরণের চালিত নকশা " দেখুন।


5
+1 আমি এটির সাথে একমত এবং এটি আমি যা করছি তাও, যদিও 4 ইউনাইট 4 পদ্ধতি testআর শুরু করার প্রয়োজন নেই, এটি ব্যবহারের সম্ভাবনাও উন্মুক্ত করে should: যেমন dialogShouldCloseWhenTheRedButtonIsPressedTwice()। অথবা আপনি কি পরীক্ষা বর্গ কল করতে পারেন DialogShouldএবং তারপর পদ্ধতি closeWhenTheRedButtonIsPressedTwice(), তাই তাদের একসঙ্গে পড়তে: DialogShould.closeWhenTheRedButtonIsPressedTwice()
স্টিভ্লো

আমি সম্মতি দিচ্ছি, আমি আরও দীর্ঘ সময় বাক্যটি এমন একটি পরীক্ষার প্রস্তাব দিতে পারে যা খুব বেশি করে চলে!
ব্রায়ান

17

প্রসঙ্গ "... ভিতরে ট্রান্সজেকশন" সুস্পষ্ট হওয়া উচিত। অবজেক্ট-ওরিয়েন্টেশন এটাই।

পদ্ধতিটি একটি শ্রেণীর অংশ। যদি শ্রেণীর অর্থ "লেনদেন" না হয় - এবং যদি এটি সর্বদা "আওতার ট্রান্সজেকশন" বলতে বাঁচায় না, তবে আপনার সমস্যা হয়েছে।


2
কিছু ধরণের লেনদেনের প্যারামিটারও নিতে পারে
উইলকোডেজেভাফফুড

3
আপনি উপরের সেরা-স্কোরিং উত্তর থেকে বলতে পারেন, ওও পরামর্শের পরিবর্তে আউটব্যাক সরলতার জন্য যান। +1
ড্যান রোজনস্টার্ক

@ ইয়ার জনগণ কখনই ভুল হয় না।
কার্টেনডগ

12

আমি নামগুলির জন্য হাইকু বিধিটি ব্যবহার করি :

 Seven syllable class names 
 five for variables
 seven for method and other names

এগুলি সর্বোচ্চ নামের জন্য থাম্বের নিয়ম rules আমি কেবল তখন এটি লঙ্ঘন করি যখন এটি পাঠযোগ্যতার উন্নতি করে। রিক্যালকুলেটমর্টেজইনটেস্টের মতো কিছু (বর্তমানের রেট, কোটসেট ...) পুনঃ গণন মর্টিজইন্টেস্টেরেট বা পুনরুদ্ধারকৃত মর্টগেজইন্টারস্ট্রেটফ্র্যামসেটের চেয়ে ভাল, যেহেতু এটিতে রেট এবং কোটগুলির একটি সেট জড়িত থাকে এবং জাভাদোক বা। নেট সমতুল্য এম্বেডড ডকস থেকে খুব পরিষ্কার হওয়া উচিত।

দ্রষ্টব্য: আসল হাইকু নয়, এটি 5-7-5- এর চেয়ে 7-5-7 হয়। তবে আমি এখনও এটি হাইকু বলা পছন্দ করি।


13
ক্লাসগুলি সাতটি, ভেরিয়েবলগুলি পাঁচটির চেয়ে কম, বাকিদের জন্য সাতটি পেয়ে যায়
জেমস

8
"সর্বাধিক পাঁচটি পরিবর্তনশীল" (পাঁচটির চেয়ে কম সঠিক নয়)
জেসন এস

ছোট নামগুলি কোড কম পাঠযোগ্যতার দিকে নিয়ে যেতে পারে।
ডেনিস এম

10

জাভাতে দীর্ঘ নামগুলি উত্সাহিত করার সংস্কৃতি রয়েছে, সম্ভবত আইডিইগুলি ভাল স্বতঃপূরণ নিয়ে আসে।

এই সাইটটি বলেছে যে জেআরই মধ্যে দীর্ঘতম শ্রেণীর নাম InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedStateযা 92 টি অক্ষরের দীর্ঘ।

দীর্ঘতম পদ্ধতির নাম হিসাবে আমি এটি পেয়েছি supportsDataDefinitionAndDataManipulationTransactions, যা 52 টি অক্ষর।


20
দেখে মনে হচ্ছে যে রিডানডেন্সি ডিপার্টমেন্টে রিডানডেন্সি বিভাগে জিনিসগুলির নামকরণের জন্য নিয়োগ করা লোকেদের নামকরণ করে এই শ্রেণীর নামকরণ করা হয়েছিল।
মাইকেল ম্যাডসেন

1
@ মিশেলম্যাডসন: এটি কি আসলেই বাজে?
এন্ডোলিথ

পিইপি -8 সেই শ্রেণীর নামের সাথে একটি শব্দ চাই।
মতিন উলহাক

9

যখন একটি ক্ষুদ্র শব্দটি করবে তখন কোনও দীর্ঘ শব্দ ব্যবহার করবেন না।

আমি মনে করি না যে "পদ্ধতির নামের দৈর্ঘ্যের পদ্ধতির দৈর্ঘ্যের সমানুপাতিক" আপনার থিসিসটি সত্যই জল ধরেছে।

আপনি যে উদাহরণটি দিন: "getNumberOfSkinCareEl যোগ্যItemsWithinTransaction" পান। এটি আমার কাছে মনে হয় এটি কেবল একটি কাজ করে: এটি কোনও লেনদেনের আইটেমের সংখ্যা গণনা করে যা একটি নির্দিষ্ট বিভাগে পড়ে। অবশ্যই আমি পদ্ধতির আসল কোডটি না দেখে বিচার করতে পারি না, তবে এটি আমার কাছে একটি ভাল পদ্ধতির মতো বলে মনে হচ্ছে।

অন্যদিকে, আমি খুব সংক্ষিপ্ত এবং সংক্ষিপ্ত নামের সাথে প্রচুর পদ্ধতি দেখেছি যা "প্রসেসসেল" বা সর্বকালের জনপ্রিয় "ডু স্টাফ" এর মতো অনেক কাজ করে।

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

দ্বিতীয়ত, আমি মনে করি যে বুদ্ধিমানভাবে অবাস্তব ধারণা নেই যে কোনও পরিচালনাযোগ্য দৈর্ঘ্যের একটি নাম আপনাকে সবচেয়ে তুচ্ছ ঘটনা বাদে ফাংশনটি ঠিক কী ঘটবে তা আপনাকে জানাবে। একটি বাস্তববাদী লক্ষ্য হ'ল এমন একটি নাম তৈরি করা যা কোনও পাঠককে একটি সূত্র দেয় এবং এটি পরে স্মরণ করা যায়। যেমন, আমি যদি কোডটি সন্ধান করতে চাইছি যা ওয়ার্পের গতিতে পৌঁছাতে আমাদের কতটা অ্যান্টিমেটার গ্রহণ করতে হবে তা গণনা করে, যদি আমি ফাংশনটির নামগুলি দেখি এবং "ক্যালিব্রেট ট্রান্সপোর্টার", "ফায়ারফেসারস", এবং "ক্যালকাএন্টিমেটারবার্ন" দেখি তবে এটি বেশ পরিষ্কার that প্রথম দুটি এটি নয় তবে তৃতীয়টি হতে পারে। যদি আমি যাচাই করে দেখি যে এটিই আমি খুঁজছি, তবে এটি মনে রাখা সহজ হবে যে আমি যখন আগামীকাল ফিরে আসছি তখন এই সমস্যাটি নিয়ে আরও কিছু কাজ করতে চাই। এটা যথেষ্ট ভাল।

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


এই দরিদ্র উত্তরের জন্য +1 চাপুন।
ড্যান রোজনস্টার্ক

7

আপনার ইন্টারফেসটি আপনি যেভাবে চান তা ডিজাইন করুন এবং বাস্তবায়নটিকে ম্যাচ করুন।

উদাহরণস্বরূপ, সম্ভবত আমি এটি লিখতে চাই

getTransaction().getItems(SKIN_CARE).getEligible().size()

বা জাভা 8 স্ট্রিম সহ:

getTransaction().getItems().stream()
    .filter(item -> item.getType() == SKIN_CARE)
    .filter(item -> item.isEligible())
    .count();

6

আমার নিয়মটি নিম্নরূপ: কোনও নাম যদি এত দীর্ঘ হয় যে এটির নিজস্ব লাইনে উপস্থিত থাকতে হয় তবে এটি খুব দীর্ঘ। (বাস্তবে, এর অর্থ আমি খুব কমই 20 টি অক্ষরের উপরে above

এটি গবেষণার উপর ভিত্তি করে দেখা যাচ্ছে যে কোডের দৃশ্যমান উল্লম্ব রেখার সংখ্যা কোডিং গতি / কার্যকারিতার সাথে ইতিবাচকভাবে সম্পর্কিত। যদি শ্রেণি / পদ্ধতির নামগুলি উল্লেখযোগ্যভাবে আঘাত করা শুরু করে তবে সেগুলি দীর্ঘ।

পদ্ধতি / শ্রেণি যেখানে ঘোষিত হয়েছে সেখানে একটি মন্তব্য যুক্ত করুন এবং আইডিই আপনাকে সেখানে নিয়ে যেতে দিন যদি আপনি এটির জন্য একটি দীর্ঘ বিবরণ চান।


আমি এই মত নিয়ম পছন্দ করি। যতক্ষণ আপনি মনে রাখবেন যে আপনি / আপনার দল এগুলি এলোমেলোভাবে তৈরি করেছে, এটি সব ভাল। অন্যদিকে, আমি এটিকে উজ্জীবিত করতে পারছি না কারণ "গবেষণা প্রদর্শন" এর জন্য আসলে সেই গবেষণার কোনও লিঙ্ক বা এটির কিছু দরকার ছিল ...
ড্যান রোজনস্টার্ক

5

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


3

আপনি যখন পরের বার কোনও পদ্ধতির নাম লিখতে যাবেন তখন কেবল বেলো উক্তিটি মনে করুন

"The man who is going to maintain your code is a phyco who knows where you stay"

13
ভাল জিনিস তিনি কেবল সামুদ্রিক
সাউন্ড

2

এই পদ্ধতির নাম অবশ্যই খুব দীর্ঘ। আমি যখন এই জাতীয় আকারের পদ্ধতির নামগুলি পড়ি তখন আমার মন ভ্রষ্ট হয়। এটি ফাঁকা জায়গা ছাড়াই একটি বাক্য পড়ার মতো।

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

"getNumberOfSkinCareEl যোগ্যItemsWithinTransaction" হয়ে উঠতে পারে:

com.mycompany.app.product.SkinCareQuery.getNumEligibleItems ();

তারপরে ব্যবহারের সময়, পদ্ধতিটি "ক্যোয়ারী.গেটনামএলিবিলিটটাইমস ()" এর মতো দেখতে পেল


2

একটি ভেরিয়েবলের নাম খুব দীর্ঘ হয় যখন একটি সংক্ষিপ্ত নাম পুরো প্রোগ্রামে বা প্রোগ্রামের গুরুত্বপূর্ণ অংশগুলিতে আরও ভাল কোড পঠনযোগ্যতার জন্য অনুমতি দেয়।

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

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

এটি করা সহজ বাণিজ্য নয়, যেহেতু কোড রিডারটি কী কী বোঝার চেষ্টা করছে তা আপনাকে বিবেচনা করতে হবে এবং সময়ের সাথে কীভাবে কোডটি পরিবর্তন হবে এবং কীভাবে বাড়বে তাও বিবেচনায় আনতে হবে। এজন্য জিনিসের নামকরণ করা শক্ত।

পঠনযোগ্যতা হ'ল আমি ডেস্ক্রিপটিভলুপকৌনটারনামের পরিবর্তে লুপের কাউন্টার হিসাবে ব্যবহার করা গ্রহণযোগ্য। যেহেতু এটি একটি ভেরিয়েবলের জন্য সর্বাধিক সাধারণ ব্যবহার, আপনি কেন এটি বিদ্যমান তা ব্যাখ্যা করে আপনি কমপক্ষে স্ক্রিন স্পেস ব্যয় করতে পারেন। আপনি কীভাবে লুপের শর্তটি পরীক্ষা করছেন বা অ্যারেতে ইনডেক্স করছেন তা বোঝা শক্ত করে দীর্ঘ নামটি কেবল সময় নষ্ট করতে চলেছে।

বর্ণালীটির অন্য প্রান্তে, কোনও ফাংশন বা ভেরিয়েবল যদি কোনও জটিল ক্রিয়াকলাপের মতো খুব কম ব্যবহৃত হয়, যেমন মাল্টি-প্যারামিটার ফাংশন কলকে দেওয়া হয়, আপনি এটি একটি অতিরিক্ত বর্ণনামূলক নাম দিতে পারবেন afford


1

অন্য যে কোনও ভাষার মতো: যখন এটি ফাংশন সম্পাদন করে একক ক্রিয়াকে আর বর্ণনা করে না।


1

আমি বলব ভাল উত্তরগুলির সংমিশ্রণটি ব্যবহার করুন এবং যুক্তিসঙ্গত হবেন।

পদ্ধতিটি কী করে তা সম্পূর্ণরূপে, পরিষ্কার এবং স্বাচ্ছন্দ্যের সাথে বর্ণনা করুন।

যদি পদ্ধতির নামটি খুব দীর্ঘ বলে মনে হয় - পদ্ধতিটি কম করার জন্য রিফ্যাক্টর।


1

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

কিন্ত! নামটি যদি খুব দীর্ঘ মনে হয় তবে সম্ভবত এটি খুব দীর্ঘ। এটির কাছাকাছি যাওয়ার উপায়টি হ'ল আপনার কোডটি এমনভাবে লেখা যাতে আপনি একটি প্রসঙ্গে থাকেন এবং নামটি সংক্ষিপ্ত তবে অন্যান্য প্রসঙ্গে নকল ated এটি এমন হয় যখন আপনি কারও সম্পূর্ণ নামের পরিবর্তে ইংরেজিতে "সে" বা "তিনি" বলতে পারেন।


1

এটি খুব দীর্ঘ যখন এটি খুব ভার্চুয়ালিভাবে জিনিসটি কী তা ব্যাখ্যা করে।

উদাহরণস্বরূপ, এই নামগুলি কার্যত সমতুল্য।

জাভাতে: java.sql.SQLIntegrityConstraintViolationException

পাইথন / জ্যাঙ্গোতে: django.db.IntegrityError

নিজেকে জিজ্ঞাসা করুন, একটি এসকিউএল / ডিবি প্যাকেজে আপনি আরও কত ধরণের সততা ত্রুটিগুলি নিয়ে আসতে পারেন? ;) অতএব db.IntegrityErrorযথেষ্ট।


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

0

যখন আপনার জাভা সংকলকটি পরিচালনা করতে পারে তার দৈর্ঘ্য ছাড়িয়ে একটি শনাক্তকারী নামটি দীর্ঘ।


3
কি?! আমি কেন এই জন্য নিম্নচেতন ছিল তা দেখছি না। প্রশ্নটি একটি প্রয়োজনীয় শর্ত জিজ্ঞাসা করে নি, কেবল পর্যাপ্ত পরিমাণে!
uckelman

0

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


0

নামটি যদি দীর্ঘ হয় তবে:

  • পড়তে 1 সেকেন্ডেরও বেশি সময় নেয়
  • আপনার জেভিএমের জন্য বরাদ্দের চেয়ে বেশি পরিমাণে র‌্যাম নেয়
  • অযৌক্তিকভাবে কিছু নামকরণ করা হয়
  • যদি একটি সংক্ষিপ্ত নাম নিখুঁত করে তোলে
  • যদি এটি আপনার আইডিইতে গুটিয়ে যায়

সত্যিই নামেরটির বিকাশকারীদের কাছে কেবল তার উদ্দেশ্যটি প্রকাশ করা দরকার যা এটিকে পাবলিক এপিআই পদ্ধতি হিসাবে ব্যবহার করবে বা আপনি চলে যাওয়ার সময় কোড বজায় রাখতে হবে। শুধু KISS মনে রাখবেন (এটিকে সহজ বোকা রাখুন)

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