সংরক্ষিত শব্দ এড়াতে ইচ্ছাকৃত ভুল বানান


45

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

  • klassবা শ্রেণীরclazz জন্য :Class clazz = ThisClass.class
  • kountএসকিউএল গণনা জন্য :count(*) AS kount

ব্যক্তিগতভাবে আমি এটি পঠনযোগ্যতা হ্রাস পাই। আমার নিজস্ব অনুশীলনে আমি খুব বেশি কেস পাইনি যেখানে আরও ভাল নাম ব্যবহার করা যেতে পারে না - itemClassবা recordTotal

ক্লাসের জন্য জাভাডক্সের একটি উদাহরণ প্যারামিটারগুলিতে এটি দেখায়:

 public <U> Class<? extends U> asSubclass(Class<U> clazz)

এটি কি যুক্তিসঙ্গত ব্যবহারের কেস দেখায়?


9
রেকর্ডের জন্য: পাইথনে, clsএকটি আসল ক্লাস অব্যাহত ভেরিয়েবল / আর্গুমেন্টের (আসলে আপনি এক আইডিয়োমেটিক) নাম (আপনি classকীওয়ার্ড দিয়ে ঘোষণা করেন এবং যা সবকিছুই উদাহরণস্বরূপ)।

14
আপনি পছন্দ করেন না typedef char ínt?
জেফ

14
@ মন্টু আপনি ঠিক বলেছেন আমি এর জন্য সংকলক ত্রুটিগুলিও পাই iñt। বিশ্ব আধিপত্যের জন্য আমার পরিকল্পনা আছে।
জেফ

1
আমি এই নিয়মটি ভঙ্গ করেছি ... এবং এখন আমি লজ্জা বোধ করছি।
jmq

3
এটা করবেন না। আমি সত্যই বলতে পারি যে এটি আমি এর আগে কখনও দেখিনি, এবং আমি যদি তা করি তবে অবিলম্বে এটির নামকরণ করব। শুধু সংক্ষিপ্ত যদি আপনি আছে একটি অ-বর্ণনামূলক পরিবর্তনশীল নাম (ব্যবহার করতে Class c)।
কোডি গ্রে

উত্তর:


63

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

আমি আপনার দ্বিতীয় দফার সাথেও পুরোপুরি একমত। একটি পরিবর্তনশীল নামকরণ class, এমনকি যদি আপনি এটা করতে পারে, যেমনটা এটা নামকরণ হিসাবে খারাপ হবে tmpবা a। কি ধরণের ক্লাস? এক শ্রেণির কি? নাম বর্ণনামূলক হওয়া উচিত।


15
"সংরক্ষিত শব্দগুলি কোনও কারণে সংরক্ষিত আছে" <- এটি। (যা যথেষ্ট পরিমাণে যথেষ্ট, সংরক্ষিত))
25-18 '

16
+1 কারণ আপনি ঠিক বলেছেন। তবে আপনি যদি ক্লাসরুমের শিডিউলিং সফ্টওয়্যার, বা অন্য কিছু লিখছিলেন, শ্রেণিটি একটি বৈধ পরিবর্তনশীল বা শ্রেণীর নাম হতে পারে ...
CaffGeek

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

14
রস না, কারণ প্রোগ্রামারদের (এবং সাধারণভাবে পাঠকগণ) জিনিসগুলির যথাযথভাবে দ্ব্যর্থহীন অর্থের প্রত্যাশা থাকে (যার কারণেই বিদেশী ভাষা শেখা প্রায়শই শক্ত হয়, দ্বিগুণ অর্থ সহ সমস্ত জিনিস বা আপনি যে ভাষা উত্থাপিত হয়েছিল তার চেয়ে আলাদা অর্থ) শৈশবকাল থেকেই যেখানে আপনি এই অস্পষ্টতাগুলি কখনই লক্ষ্য করবেন না কারণ তারা আপনার সাংস্কৃতিক heritageতিহ্যের অংশ)।
12:30 এ জাভেন্টিং

3
@ আলেকজান্ডারমোরো না, না এবং বেশিরভাগ ভাষার ডিজাইনার নেই, তারা কেবল অন্য কারও ডিজাইন দিয়ে শুরু করেন। তবে সি এর উপর ভিত্তি করে আলগোল, ফোর্টরান, পিএল / আই, রেএক্সএক্স এবং অন্যান্য ভাষাগুলি দেখুন এবং আপনি দেখতে পাবেন যে সংরক্ষিত শব্দ ছাড়া ব্যাকরণগুলি সম্ভবত আরও শক্ত, সম্ভবত। রিচির একটি যুক্তিসঙ্গত কারণ ছিল - ইউনিক্সের লোকেরা প্রতিটি কীস্ট্রোক মেটানো অনুভূত করে এবং একটি পিডিপি -11-এ, প্রতিটি সিপিইউ চক্রটি ম্যাটার করে তোলে। আজ? খুব বেশি না.
রস প্যাটারসন

21

পাইথনের স্টাইল গাইড বিশেষত এই সমস্যাটি ডেকে আনে এবং পরামর্শ দেয়:

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

এটি দেখতে বেশ ভাল সাধারণ নিয়মের মতো বলে মনে হচ্ছে এটি কোনও নির্দিষ্ট ভাষার শব্দার্থের সাথে বিরোধ নয়।


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

18
@ ওয়াইন: unionকীওয়ার্ড (সি হিসাবে) থাকা অবস্থায় আপনি ইউনিয়ন-অনুসন্ধান কাঠামোয় ইউনিয়ন কার্যক্রমের নামকরণ কীভাবে করবেন ? আপনি কি fooএটির মতো দেখাবেন না বলেই এটি ডাকছেন union?
ফ্রেড ফু

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

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

2
@ গোলোরোডেন মেরিয়ামিয়াম-ওয়েস্টার অনুসারে এটি কোনও ক্রিয়া নয়, তবে এই উত্তরটি দেখুন
মার্টিনাস

18

কোড গন্ধ।

string stringVariable = "";

উপরের কোডটি আমাকে ভেরিয়েবলগুলির উদ্দেশ্যে ব্যবহার সম্পর্কে কিছুই বলে না।

class Klass

একই সমস্যা

string UserNameString = "bmackey"

উপরের কোডটির জন্য ভেরিয়েবল নামের সাথে কীওয়ার্ড স্ট্রিং যুক্ত হওয়া উচিত নয়। যদি আপনি নিজেকে ভেরিয়েবল নামের দ্বারা প্রকারগুলি সনাক্ত করার প্রয়োজন মনে করেন তবে আপনার কোডটি খুব দীর্ঘ। ঘনীভূত-refactor।


এটি আপনাকে কিছু বলে না কারণ এটি "কোড" নয়, এটি একটি বিচ্ছিন্ন পরিবর্তনশীল ঘোষণা। একটি "শ্রেণি" বা "ক্লাস" আপনাকে যা জানা দরকার তা খুব ভালভাবে বলতে পারে। উদাহরণস্বরূপ, একটি জেনেরিক পদ্ধতি Class<T>প্যারামিটার গ্রহণ করতে পারে এবং এটি উপলব্ধি করতে পারে। সুতরাং আমি একমত যে এটি একটি কোড গন্ধ।
আন্দ্রেস এফ।

5

ব্যক্তিগতভাবে, আমি মনে করি এটি আপনার কোড শৈলীর জন্য একটি সঠিক বৈধ বিকল্প।

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

JDK 1.6 R21 এর সাথে বান্ডিলিত উত্সটি পেরে আমি 917 টি "ক্লজ" এর ঘটনা খুঁজে পাই। স্পষ্টতই, তারা ভেবেছিল এটি গ্রহণযোগ্য শৈলী।

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

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


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

4
যদি আপনি উভয়ই ব্যবহার করছেন klassএবং clazzএটি একটি খারাপ জিনিস। আপনার নিয়মিত হওয়া দরকার যাতে তাদের কেবল এটি একবার শিখতে হবে। এবং আদর্শভাবে এটি দলগুলির শৈলীর দিকনির্দেশগুলিতেও বানানযুক্ত, তাই এটি আশ্চর্য হওয়ার মতো কিছু নয়।
করসিকা

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

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

4

সংরক্ষিত শব্দ এড়াতে ইচ্ছাকৃত ভুল বানান একটি খারাপ ধারণা।

  • ভুল বানান সঠিক বানান থেকে পৃথক করা শক্ত, তাই তারা কোড পড়া আরও কঠিন করে তোলে।

  • ভুল বানানগুলি মনে রাখা শক্ত, যাতে বেশ কয়েকটি অসামঞ্জস্যপূর্ণ ভুল বানান কোডের মধ্যেই প্রতিযোগিতা করে, যা কোড লিখতে আরও শক্ত করে এবং পড়া আরও শক্ত করে তোলে।

  • সংরক্ষিত শব্দগুলি সমস্যাটি নয়, সমস্যার সমাধান করার জন্য ব্যবহৃত ভাষাকে বোঝায়। একটি পরিবর্তনশীল নাম সমস্যার সাথে সম্পর্কিত একটি ধারণার দিকে নির্দেশ করা উচিত।

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

public static Method findBenchmarkMethod(BenchmarkRecord benchmark) {
    Class<?> benchmarkedClass = ClassUtils.loadClass(benchmark.generatedClass());
    return findBenchmarkMethod(benchmarkedClass, benchmark.generatedMethod());
}

3

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

java.lang.SecurityManager.checkMemberAccess(Class<?> clazz, int which)
Parameters
    clazz -- the class that reflection is to be performed on.

এখানে ক্লজ হ'ল লক্ষ্য শ্রেণি যা চেকটি সম্পাদন করতে হবে, তাই

checkMemberAccess(Class<?> target, int which)

প্যারামিটারটি ক্লাজের চেয়ে কখনও কী ব্যবহৃত হবে তার চেয়ে আরও ভালভাবে বর্ণনা করবে।


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

1
classToBeAccessedআসলেই একটি ভাল নাম ( classToBeCheckedসম্ভবত আরও ভাল হতে পারে)।
hlovdal

1

যদি তারা কোনও ভেরিয়েবলের জন্য সংরক্ষিত নাম ব্যবহার করে তবে এটি একটি স্বল্প নামযুক্ত ভেরিয়েবল। এমনকি এটি বৈধ নাম হলেও যেমন ক্লাস ফর ক্লাসরুম সফ্টওয়্যার।

দুর্বল নামযুক্ত ভেরিয়েবলগুলি খারাপ চিন্তাভাবনা বা নৈমিত্তিক কোডের একটি চিহ্ন - আপনি যে সফটওয়্যারটি বজায় রাখছেন তা অন্য গটচগুলি থেকে সাবধান থাকুন।


0

আমি মনে করি ইচ্ছাকৃত ভুল বানান বা সংক্ষিপ্ত বিবরণগুলি সতর্কতার সাথে এবং ধারাবাহিকভাবে ব্যবহার করা ভাল ধারণা ।

জাভা বিবেচনা করুন:

class X { public X() { } }
X x = new X();
x.getClass;  // Wha?  How does "get" help anything?
x.class;     // Best, but requires more lexer/parser work
x.klass;     // At least as good as getClass
x.clazz;     // Same

ভুল বানান ব্যবহারের জায়গাটি যেখানে সংরক্ষিত শব্দটি স্পষ্টভাবে কাজের জন্য সেরা শব্দ। ভুল বানান ব্যবহার না করার জন্য দুটি জায়গা রয়েছে যেখানে আপনি প্রলুব্ধ হতে পারেন।

  1. আপনার ভালো নাম ভাবার কথা মনে হচ্ছে না
  2. আপনি কেবল একটি ডামি ভেরিয়েবল চান এবং এর জন্য বর্ণনামূলক নামের প্রয়োজন নেই

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

boolean isMyName(String testName) { return myName.equals(testName); }
boolean isMyName(String s) { return myName.equals(s); }

Date nextMeeting(Klass klass) { return /* something */ }
Date nextMeeting(Klass k) { return /* something */ }

কোডের পদ্ধতি বা কোডটি আপনাকে অবশ্যই সেখানে কী থাকতে হবে তা বললে আপনি সংক্ষিপ্ত পরিবর্তনশীল নামের সাথে কিছুই হারাবেন না।


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

@ সুস্লিক - nextMeeting(MeetingRoom r)প্রচুর পরিমাণে। meetingRoomআপনি সেখানে কি হচ্ছে ? যদি তি nextMeeting(int meetingRoom)আমি বুঝতে পারতাম তবে আমার বক্তব্যটি অন্য উত্স থেকে ইতিমধ্যে উপলব্ধ হয়ে থাকলে সংক্ষিপ্ত পরিবর্তনশীল নামগুলি ব্যবহার করা
রেক্স কেরার

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

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

0

Class klassপ্রতিচ্ছবি করার সময় আমি বৈধ ব্যবহারগুলি দেখেছি যেখানে আপনি Classক্লাসের কোনও উদাহরণ দিয়ে বাস্তবে কাজ করেন ।


2
আপনার উদাহরণ রয়েছে এমন কোনও মামলা রয়েছে কিনা তা প্রশ্ন নয়, তবে আপনার সেই বানানটি ব্যবহার করা উচিত, অথবা আরও বর্ণনামূলক নাম যেমন userClassবা অন্য কোনও বিকল্প ব্যবহার করা উচিত।
নিকোল

2
যেমন ক্ষেত্রে ্যদসব classInstanceউপর klass
কনরাড মোরাউস্কি 10

2
@ কনরাডমোরওস্কি: তবে আপনি যে সমস্ত বস্তুর সাথে কাজ করেন তা উদাহরণস্বরূপ, তাই classInstanceবেশ অপ্রয়োজনীয়। তাছাড়া, আমি এরকম কিছু কল্পনা করতে পারি class klass; Object classInstance = klass.newInstance;
মার্টিনাস

0

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

ক্লাসের জন্য ক্লাস বা ক্লজ: ক্লাস ক্লাজ = এইস্লাস.ক্লাস

এসকিউএল গণনার জন্য গণনা: গণনা (*) AS গণনা

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

যাইহোক, এটি এত সাধারণ যে আমি সাহায্য করতে পারছি না কিন্তু অবাক হয়েছি যে আমিই একমাত্র? এই অনুশীলনটির জন্য সম্মানিত প্রোগ্রামারদের কাছ থেকে প্রস্তাবিত উদ্ধৃত পরামর্শগুলির বা আরও ভাল পরামর্শ কারও আছে?

স্থানীয় ভেরিয়েবল এবং আনুষ্ঠানিক যুক্তিগুলির জন্য, এটি কোনও বিষয় নয়।

কোনও নাম ততক্ষণ ঠিক থাকে যতক্ষণ না এটি উদ্দেশ্যমূলকভাবে বিভ্রান্তকারী বা বিরক্তিকরভাবে বিভ্রান্ত না করে। আপনার উদাহরণে:

public static Method findBenchmarkMethod(BenchmarkRecord benchmark) {
    Class<?> clazz = ClassUtils.loadClass(benchmark.generatedClass());
    return findBenchmarkMethod(clazz, benchmark.generatedMethod());
}

একক স্থানীয় ভেরিয়েবল "ক্লজ" বা "ক্লাস" বা "ক্লস" বা কেবল "সি" কিনা তা বিবেচ্য নয়। আমি সম্ভবত প্রকাশটি ইনলাইন করব:

return findBenchmarkMethod(ClassUtils.loadClass(benchmark.generatedClass()),
                           benchmark.generatedMethod());

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


আপনার ইনলাইন ভুল দেখায় ClassUtils.loadClass(benchmark.generatedClass())=> benchmark.generatedClass()- হারিয়ে ClassUtils.loadClassপথ ধরে
মশা

0

আমি মনে করি ভুল বানানগুলি সবসময় একটি খারাপ ধারণা। এটি আপনার পাঠকদের পক্ষে ঠিক সুন্দর নয়। আমি, একজনের জন্য, ভাবছিলাম যে শব্দটি দেখলে আমি কিছু মিস করেছি কিনা klass। (তাদের অর্থ কি class, নাকি তারা জলদস্যু বলতে বোঝায়?) কমপক্ষে আমার কাছে, আমি যে সমস্ত ভুল বানান সনাক্ত করি তা বিরক্তিকর।

খুব কম ক্ষেত্রে, যেখানে সংরক্ষিত শব্দটিই কেবলমাত্র উল্লেখযোগ্য জিনিস যা পরিবর্তনশীল সম্পর্কে জানা যায়, আমি নিম্নলিখিত বিকল্পগুলি ব্যবহার করব:

  • যদি এটি কোনও ফাংশন আর্গুমেন্ট হয় তবে aClassপরিবর্তে ব্যবহার করুন class

  • এটি স্থানীয় বা সদস্য পরিবর্তনশীল হলে myClassপরিবর্তে ব্যবহার করুন class

  • যদি এটি কোনও অ্যাক্সেসর হয় তবে তার getClass()পরিবর্তে ব্যবহার করুন class()

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


0

সৃজনশীল বানানের একটি সুবিধা হ'ল আরও ভাল অনুসন্ধান-দক্ষতা। আমি মনে করি সাধারণ শব্দের চেয়ে অনন্য জিনিসের জন্য একটি পূর্ণ কোড অনুসন্ধান করা আরও সহজ, যেখানে আপনি প্রায়শই প্রায়শই ভুল এবং এর মধ্যে 1000 টি খুঁজে পাবেন। উদাহরণ হিসাবে, আমি kzpg.com এর মালিক ছিলাম। গুগল যে এখন এবং আপনি কেবল কয়েকটি হিট দেখতে পাবেন। এটি অনন্য এবং অতএব খুব সন্ধানযোগ্য।

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


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