সংক্ষিপ্ত শনাক্তকারীরা কি খারাপ? [বন্ধ]


26

সংক্ষিপ্ত শনাক্তকারীরা কি খারাপ? সনাক্তকারী দৈর্ঘ্য কোড বোঝার সাথে কীভাবে সম্পর্কযুক্ত? নামকরণকারীদের নামকরণ করার ক্ষেত্রে অন্যান্য কোন বিষয়গুলি (কোড বোঝার পাশাপাশি) বিবেচ্য হতে পারে?

উত্তরগুলির গুণমানটি ঠিক রাখার চেষ্টা করার জন্য দয়া করে নোট করুন যে ইতিমধ্যে বিষয়টি নিয়ে কিছু গবেষণা চলছে!

সম্পাদন করা

কৌতূহল যে প্রত্যেককে হয় দৈর্ঘ্য প্রাসঙ্গিক বলে মনে হয় না বা বৃহত্তর শনাক্তকারীদের পছন্দ করতে ঝোঁক হয়, যখন আমি সরবরাহ করি উভয় লিঙ্কই বড় সনাক্তকারী চিহ্নিত করে যে ক্ষতিকারক!

ছিন্ন সুত্র

নীচের লিঙ্কটি এই বিষয়ে একটি গবেষণার দিকে ইঙ্গিত করেছে, তবে এটি এখন ভেঙে গেছে, মনে হচ্ছে কাগজের একটি অনুলিপি আমার কাছে নেই এবং এটি কী ছিল তা আমি মনে করি না। অন্য কেউ এটি বের করার ক্ষেত্রে আমি এটি এখানে রেখে দিচ্ছি।


5
তথ্যকেন্দ্র. আমার প্রিয় শর্ট আইডেন্টিফায়ারটি হ'ল :, :(){ :;:& };:আমি - বেশিরভাগ লোককে এটি বেশ খারাপ বলে মনে হয়। ;)

@ ফেনেক: কাঁটাচামচ বোমা হ'ল।
জোশ কে

স্ট্যাকওভারফ্লো সম্পর্কে এই প্রশ্নটি দেখুন প্রতিটি প্রোগ্রামারকে পড়া উচিত এমন একটি বই প্রোগ্রামিং অনুশীলন সম্পর্কে একটি মন্তব্য আছে ।
slu

1
কেবলমাত্র দীর্ঘ নামগুলি এড়ানো উচিত নয় এর অর্থ এই নয় যে আপনার সংক্ষিপ্ততার জন্য এগুলি ছোট করার জন্য অতিরিক্ত চেষ্টা করা উচিত।
জেফো

1
@ অ্যাসেসর মজার বিষয় যে গবেষণার উদ্দেশ্য ছিল এমন কিছু মতামত ভিত্তিক হিসাবে বন্ধ ছিল। দুঃখের বিষয়, আমি উত্তর পেয়েছি, সম্মত।
ড্যানিয়েল সি সোব্রাল

উত্তর:


67

আমি শুনেছি সেরা "নিয়ম" হ'ল নামের দৈর্ঘ্যটি ভেরিয়েবলের ক্ষেত্রের দৈর্ঘ্যের সমানুপাতিক হওয়া উচিত। সুতরাং iলুপটির বডি কয়েক লাইন লম্বা হলে একটি সূচক ঠিক আছে তবে আমি 15 টি লাইনের চেয়ে লম্বা হয়ে গেলে কিছুটা বর্ণনামূলক কিছু ব্যবহার করতে চাই।


6
আমি এই জাতীয় জিনিস কখনও শুনিনি, এবং আমি মনে করি না যে এই নীতিটি কোডের পঠনযোগ্যতার উন্নতি করবে।
নিমচিম্পস্কি

8
@ নিম: আমি একমত এমনকি একটি সংক্ষিপ্ত forলুপে, আমি সূচকের নাম customerCounterবা অন্য কিছু লিখব। এটি সর্বনিম্ন অতিরিক্ত প্রচেষ্টা নেয় এবং আপনার কোডটিকে আরও উন্নত করে। স্বল্প স্কোপের জন্য ছোট ভেরিয়েবল ব্যবহার করা অলস হওয়ার অজুহাত বলে মনে হচ্ছে।
কেউ

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

33
+1 সত্যিই একটি "বর্ণনামূলক" নামটি লুপের জন্য পাঁচটি লাইনে কেবল শব্দ হয়; আমি মনে করি আপনি "আমি" দিয়ে যা করছেন তা বেশিরভাগ লোকের কাছে খুব ভাল উপলব্ধি। আমি নেস্টেড লুপগুলিতে বর্ণনামূলক নাম ব্যবহার করেছি তবে সেগুলির দীর্ঘতর সুযোগ রয়েছে।
জেরেমি

18
+1 টি - ব্যবহার iএবং jহয় প্রচলিত নামগুলির যে প্রতি ডেভেলপার আইএমও বুঝতে সক্ষম হওয়া উচিত।
দ্য ক্লাউডলেসস্কি

48

প্রতিটি ভেরিয়েবলের একটি অর্থ হওয়া উচিত এবং এর নামটি সেই অর্থের একটি অংশ। এবং একটি খুব গুরুত্বপূর্ণ অংশ, যেহেতু এটি পাঠককে বুঝতে সাহায্য করে যে এটি অ্যালগরিদমের গভীরে খনন না করে এটি কী জন্য। i, jসূচক হিসাবে ব্যবহার করা সুস্পষ্ট, এগুলি সংক্ষিপ্ত, তবে খুব তথ্যপূর্ণ। bntকুরুচিপূর্ণ closeবা closeButtonঅর্থপূর্ণ are সুতরাং সংক্ষিপ্ত বা দীর্ঘ হওয়া চলক নামের সর্বাধিক গুরুত্বপূর্ণ মানদণ্ড নয়, এটি অর্থবহ হওয়া উচিত। অর্থবোধ দৃ strongly়তার সাথে প্রসঙ্গে নির্ভর করে। উদাহরণস্বরূপ, আপনি nস্থানীয় স্ট্রিং ভেরিয়েবলের মতো খুব সংক্ষিপ্ত নাম দিতে পারেন যা কোডের 10 টি লাইন বলে একটি ছোট্ট ব্লকে ব্যবহৃত হয় এবং কোনও সংখ্যার নাম বোঝায় ( vমানটির জন্য এটি অন্য উদাহরণ)।

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


2
+1, এবং কেবলমাত্র লক্ষণীয়, ক্লোজ এবং ক্লোজবুটন উভয়ই সমার্থক নয়। ক্লোজ একটি ক্রিয়া, এবং সুতরাং, একটি ফাংশন বা পদ্ধতির নাম হওয়া উচিত। যদিও ক্লোজবটন একটি বিশেষ্য, এবং অবশ্যই স্পষ্টতই, সেই বোতামটির নাম হওয়া উচিত যা ঘনিষ্ঠ ফাংশনটিকে ট্রিগার করে।
ক্যাফগিকে

ক্লোজ একটি বিশেষণ, যেমন close = true;)
আরমান্ড

13

আমি একটি সনাক্তকারী ব্যবহার করব যা দৈর্ঘ্য নির্বিশেষে ভেরিয়েবলের বর্ণনা দেয় describes

আই, জে এবং কে এর কেসগুলি নিজের মধ্যে এতটা সর্বব্যাপী, সেগুলি স্ব-বর্ণনায় প্রকাশিত, আপনি স্বয়ংক্রিয়ভাবে জানবেন যে তারা লুপ সূচক। আপনি এটির জন্যও একই কথা বলতে পারেন:

foreach loop (Strings s : myString)

যাইহোক, আইডিই এর এখন কোড সমাপ্তির সরঞ্জাম সরবরাহ করে তাই খুব দীর্ঘ এবং বর্ণনামূলক শনাক্তকারীদের একমাত্র নেতিবাচক পার্শ্ব প্রতিক্রিয়া আফিকে মুছে ফেলা হয়েছে।

ভেরিয়েবলের উদ্দেশ্যটি ব্যাখ্যা করার জন্য যদি এটি প্রয়োজন হয় তবে আমি আনন্দের সাথে একটি সনাক্তকারীকে অতিরিক্ত শব্দ যুক্ত করব।


3
বিটিডাব্লু, লুপ সূচকগুলির জন্য আই, জে এবং কে এর ব্যবহার 50+ বছর পিছনে ফরটারনে চলে যায়। ভেরিয়েবলগুলি যেগুলি আমি N এর মাধ্যমে বর্ণগুলি দিয়ে শুরু হয় সেগুলি INTEGER টাইপের ডিফল্টরূপে হয়। অন্য যে কোনও বর্ণের সাথে শুরু হওয়া পরিবর্তনগুলি ডিফল্ট REALs দ্বারা হয় RE এটি স্বাভাবিকভাবেই ফোর-লুপ সূচকগুলির জন্য আই, জে এবং কে ব্যবহার করতে শুরু করে। (ফরটার কনভেনশন সম্ভবত এর আগে গণিত সমীকরণগুলিতে ব্যবহৃত এই ভেরিয়েবলগুলির ব্যবহার থেকে এসেছে))
tcrosley

2
আমি যে দ্বিতীয় পত্রটি সংযুক্ত করেছি তা দেখিয়েছে যে খুব দীর্ঘ বর্ণনামূলক শনাক্তকারী কোডটি বোঝার ক্ষমতা হ্রাস করে, "কেবলমাত্র নেতিবাচক পার্শ্ব প্রতিক্রিয়া" মন্তব্যটির বিরোধিতা করে।
ড্যানিয়েল সি। সোব্রাল

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

tcrosley - আমি এটিকে যুক্ত করব কারণ এটি ফোর্টরান থেকে এসেছে কারণ এ জাতীয় অনুশীলন চালিয়ে যাওয়ার কোনও কারণ নেই। আমি "আই", "জে", "কে" ইত্যাদির পুনরাবৃত্তকারী / লুপ কাউন্টারগুলির ব্যবহারকে দৃ strongly়ভাবে নিরুৎসাহিত করি এটি সাধারণ বৌদ্ধিক অলসতা। সর্বব্যাপী <> ভাল।
দ্রুত_

9

তারা বিভ্রান্তকারী শনাক্তকারীদের মতো খারাপ নয়। আমি ডিবাগিং কোডটিতে কিছু মনে করি না যেখানে শনাক্তকারীরা কেবল একটি অক্ষর, তবে বিভিন্ন নামকরণের কনভেনশনগুলি যে মুহুর্তে ছবিটিতে আসে তা বিরক্তিকর হয়ে ওঠে। উদাহরণস্বরূপ, যদি আপনি কোথাও দেখতে পান strPersonIDএবং অন্য কোথাও আপনি দেখতে পান s_EmployeeIDতবে এটি বিভ্রান্তিকর তা হ'ল এটি উভয় স্ট্রিং কিনা এবং কোনও পার্থক্য রয়েছে কিনা তা জানাতে হবে। এছাড়াও যদি ভেরিয়েবলগুলি কপি-পেস্ট করা হয় ( pmapIntString = new std::map<int,int>) এবং সম্পূর্ণ ভুল হয় তবে আমি উদ্বেগ করব।

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


5

আমি সংগ্রামই...

আমি সর্বদা শনাক্তকারী হিসাবে বর্ণনামূলক নাম ব্যবহার করতে ব্যবহার করি তবে দেরীতে আমি খুব সংক্ষিপ্ত শনাক্তকারী ব্যবহার করেছি।

আমি মনে করি, এটি কোডের প্রসঙ্গে নির্ভর করে:

  • যদি আপনার লিখন জটিল ফাংশন (অ্যালগোরিদম) হয় তবে সর্বদা সংক্ষিপ্ত শনাক্তকারী ব্যবহার করুন (একক অক্ষর সেরা)
  • ফাংশনগুলির জন্য পরামিতি মানগুলি লেখার সময় বর্ণনামূলক নাম ব্যবহার করুন।

আমি অনুমান করি যে এটি কোডটি কতটা ঘন on কখনও কখনও নাম থাকা আসলে পড়া আরও কঠিন করে তোলে।

কখনও কখনও নাম ছাড়া এটি সম্পূর্ণ গুপ্ত!


1
আপনি যদি জটিল অ্যালগরিদম লিখছেন, তবে, আপনি কি চান না যে শনাক্তকারীরা আপনার কোডটি প্রথমবারের মতো দেখার জন্য আরও বর্ণনামূলক হয়ে উঠবে?
ম্যাক্সপাম

একটি একক অক্ষর সনাক্তকারী কখন উপযুক্ত?
আমির আফগানি

1
আমি এটি ভাবতেও ব্যবহার করি, তবে আমি বাস্তবে এটি দেখতে পাচ্ছি না, নিজের চেষ্টা করুন। একটি জটিল অ্যালগরিদম নিন এবং বর্ণনামূলক নামের বনাম একক বর্ণের ভেরিয়েবল দিয়ে চেষ্টা করুন।
অন্ধকার রাত

1
আমি সম্মত তবে কেবল একটি দীর্ঘ জটিল সূত্রের জন্য, কারণ এগুলি খুব দীর্ঘ হয়ে যায় এবং তারপরেও আপনি সেই সূত্রের অংশগুলি কী তা বর্ণনা করতে ফাংশন (ফাংশন নাম) ব্যবহার করতে পারেন।
এমিল ভ্রিজড্যাগ

1
যদি এটি জটিল হয় এবং নিদর্শনগুলি থাকে তবে সেই নিদর্শনগুলি ফাংশনে বিভক্ত করা উচিত
ক্যাফজিক e

3

আমার চিন্তাভাবনাটি হ'ল এগুলি নিজের মধ্যে খারাপ নয় তবে তারা খুব মানহীন না হলে তারা অপ্রয়োজনীয়।

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

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

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


3

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


3

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

যদি এটি একটি ইতিহাস এটি বোধগম্য করে তোলে হয়েছে খুব অল্প পরিবর্তনশীল নাম দরকারী শুধুমাত্র (যেমন, i, j, & k; সূচকের জন্য dxবা একটি সুযোগ ছোট যথেষ্ট জন্য সব রেফারেন্স একবার এ দৃশ্যমান হতে হয় যে একটি অক্ষ বরাবর একটি দূরত্ব জন্য) (উদাঃ , temp)। বিশ্বের সবচেয়ে পরিবর্তনশীল নামগুলি হ'ল জিনিস t47। ("এর অর্থ কী এবং এর থেকে পৃথক কেন t46?") শুভতার জন্য ধন্যবাদ যে নামকরণের ধরনটি বেশিরভাগই ফোরট্রানের সাথে চলেছিল, তবে এই স্থানে দীর্ঘতর চলক নামের আকাঙ্ক্ষার মূলটি রয়েছে।

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

নোট টোসেলফ যেমনটি আগে উল্লেখ করেছে, কোনও নামের স্বতন্ত্রতার প্রয়োজনীয়তা মূলত নামটি অনন্য হওয়ার সুযোগের উপর নির্ভর করে। 5-লাইন লুপের সূচক হতে পারে i; সক্রিয় রেকর্ডের একটি সূচক যা ফাংশন থেকে ফাংশনে পাস হয় তার আরও অনেক বেশি বর্ণনামূলক নাম ছিল।

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


2

বিপরীতে, আমি মনে করি দীর্ঘ শনাক্তকারী সংক্ষিপ্ত শনাক্তকারীদের চেয়ে খারাপ (যদি না আপনি ধ্রুবকের সাথে আচরণ করছেন)। ব্যবহার করা TheVariableThatHoldsTheCapacityOfMyContainerClassআপনার কোডটি ব্যবহারের চেয়ে ত্রুটিগুলির অনেক বেশি প্রবণ করে তোলে Capacity


1
আপনি জানতে পেরে খুশি হবেন যে আমি যে গবেষণার সাথে সংযুক্ত করেছি তার মধ্যে একটিরও আপনার যুক্তি সমর্থন করে, যদি একই কারণে না হয় তবে। ;-)
ড্যানিয়েল সি সোব্রাল

1
খুব দীর্ঘ শনাক্তকারীদের ভুলভাবে পড়া খুব সহজ, সম্ভবত তাদের গুলিয়ে ফেলছে বা সম্ভবত বুঝতে ব্যর্থ হয়েছে যে তাদের মধ্যে দুটি একই।
ডেভিড থর্নলি

2
The VariableThatHoldsTheCapacityOfMyContainerClass আমি "দীর্ঘ" হিসাবে বিবেচনা করব তার চেয়ে বড় - ক্যামেলকেস সাহায্যের জন্য দশটি শব্দ খুব দীর্ঘ; আপনার পাঠযোগ্যযোগ্য করার জন্য আপনার স্পেস দরকার need
রিচার্ড গ্যাডসডেন

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

2
@ ম্যাক্সপিএম, var total = Capacity + Capacity2; কী Capacityরয়েছে এবং কী Capacity2রয়েছে? তারা কি জন্য ব্যবহার করা হবে? প্রসঙ্গের ক্লুগুলি সময় নষ্ট করার জন্য সন্ধান করা। যদিও এটি যদি লেখা হয় তবে var totalStorageCapacity = truckCapacity + trailerCapacity;আমি কী জানি আমরা কী সম্পর্কে কথা বলছি।
ক্যাফগিকে

2

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


+1 আপনি এটি খুব ভাল বলেছেন, আমি উত্তরটি লিখলে আমার শব্দগুলি খুঁজে পেলাম না :-)
কম্পিউটারসেসন

1

আমার একটি পর্যবেক্ষণ যা বছরের পর বছর ধরে ছিল এবং আজ থেকে 10 বা 15 বছর আগের তুলনায় এটি এত কম। যে প্রোগ্রামারগুলি টাইপ করতে পারে না সেগুলি হ'ল এমন একটি যা আপনার দাঁতে লড়াই করবে এবং ভেরিয়েবল নামকরণের জন্য পেরেক দেবে। তারা সমস্ত 1-3 অক্ষরের পরিবর্তনশীল নাম সহ with

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


2
আমি আসলে এরকম কোনও সম্পর্ক দেখিনি। যদি কিছু মনে হয় ওও ভাষার লোকেরা দীর্ঘ শনাক্তকারীদের জন্য যায় এবং কার্যকরী ভাষার লোকেরা ছোটদের জন্য যান for এটি ওও মডেলিংয়ের ক্ষেত্রে সহায়তা করে এমন অভিযোগ উত্থাপন করে। :-)
ড্যানিয়েল সি সোব্রাল

ভুলে যাবেন না যে নামগুলি কেবল টাইপ করা নয়, পড়তে হবে। খুব বেশি দীর্ঘ শনাক্তকারী ব্যবহার করা পঠনযোগ্যতা অনেকটা হ্রাস করতে পারে। iলুপের মতো কিছু ব্যবহার for (int i=0; i<dst.size(); ++i) dst[i] += src[i]করা আইন দ্বারা নিষিদ্ধ করা উচিত।
মার্টিনাস

1

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

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

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


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

1

কোডের একটি লাইন পঠনযোগ্য কিনা তা নির্ধারণের জন্য আমার প্রধান মেট্রিকগুলির মধ্যে একটি হ'ল লাইনটি কী করছে তা নিশ্চিত হওয়ার জন্য অন্যান্য লাইনের অন্যান্য প্রসঙ্গটি কতটা পড়তে হবে তা নিশ্চিত করার জন্য।

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

গীত। আমি যখন এই উত্তরটি লিখেছিলাম তখন আমি 10 "মিনি ল্যাপটপে কিছুটা জাভাস্ক্রিপ্ট কোডিং করছিলাম যা ভিমের মধ্যে উল্লম্বভাবে বিভক্ত স্ক্রিন সহ ছিল এবং আমি এখনও আমার লুপ ভেরিয়েবলগুলি রো ইন্ডেক্স এবং কলাম ইন্ডেক্সের নাম দিতে সময় নিলাম।


0

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


0

আমি মনে করি আদর্শটি হ'ল নামগুলি বর্ণনামূলক হওয়া উচিত যদি না ...

ধারণা যে নাম করতে পারেন (হয়তো উচিত) ছোট হতে - এবং এইভাবে সংশ্লেষ কম বর্ণনামূলক দ্বারা - যদি তারা সীমিত সুযোগ আছে মাত্র এক আদর্শ থেকে পথভ্রষ্ট করার কারণ।

ব্যক্তিগতভাবে আমি অল্প সংখ্যক বার বার উল্লেখযোগ্য সত্তার জন্য সংক্ষিপ্ত নামগুলি প্রায়শই ব্যবহার করি। উদাহরণস্বরূপ প্রায়শই-বলা অ্যাপ্লিকেশন-নির্দিষ্ট সাবরুটাইন।


-2

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


5
"ইনডেক্স" "i" দেয় না এমন অতিরিক্ত তথ্য কি দেয়? দীর্ঘ ভেরিয়েবলের নাম যা আপনাকে কিছুই বলে না সেগুলি সিঙ্গল-চরিত্রের চেয়ে খারাপ।
আনন

2
সম্প্রতি 3 ডি গ্রিডে কাজ করা কিছু জিনিস লিখে আমার কাছে x, y এবং z নামের অনেকগুলি ভেরিয়েবল ছিল। প্রসঙ্গ দেওয়া তারা নিখুঁত বর্ণনামূলক ছিল।
লরেন পেচটেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.