আপনার নামকরণের সম্মেলনটি যখন আপনার ভাষার সাথে সংঘর্ষ হয় তখন আপনি কী করবেন?


14

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

আপনি কিভাবে এটি মোকাবেলা করবেন? সংক্ষিপ্ত? ( op) ভুল বানান? ( klass) আর কিছু? ( operator_)


7
নেমস্পেসিং বাদে সম্ভবত আমাদের নামকরণের কনভেনশনগুলি পরিবর্তন করার বিষয়টি বিবেচনা করা উচিত? সুস্পষ্টর জন্য দুঃখিত।
ক্রিস

1
@ ক্রিস: আপনি কখনই কোনও প্রোগ্রামারের উপর নির্ভর করতে পারবেন না যাতে আপনি তা বুঝতে পারবেন না! (যদিও এই ক্ষেত্রে আমার কাছে রয়েছে))
জন পুরি

7
যদি পিএইচপি এর $varসিনট্যাক্স পছন্দ করার কোনও কারণ থাকে তবে এটি এটি।
জোয়ে অ্যাডামস

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

3
স্পষ্টতই, আমার নামকরণের সম্মেলনের অনুমতি দেওয়ার জন্য ভাষা উত্স কোডটি পরিবর্তন করুন। এটি আমার কোডটিকে "রক্ষা করার" সুবিধাও দেয় কারণ এটি কেবল আমার দোভাষী / সংকলকটিতে চালানো / সংকলন করবে।
ডায়েটবুদ্ধ

উত্তর:


21
  1. স্বীকার করুন যে আপনার নামকরণের সম্মেলনে যেমন ছোট বড় পরিবর্তন করতে হতে পারে, যেমন মূলধন যোগ করা। যত তাড়াতাড়ি সম্ভব এটি গ্রহণ করা আরও ভাল তাই পরবর্তী সমস্ত কোডটি সুসংগত।

  2. আরও নির্দিষ্ট হওয়া বিবেচনা করুন। কীওয়ার্ড, বেশ চওড়া হতে থাকে তাই সংকীর্ণ classনিচে demonstrationClassনা শুধুমাত্র বিষয় কাজ করে কিন্তু পাঠযোগ্যতা বৃদ্ধি পায়।


10

এটি আমি যে সমস্যার মুখোমুখি হয়েছি তা নয়, তবে আমি যদি এইরকম পরিস্থিতির মধ্যে থেকে যাই তবে আমি এটি নীচের বিকল্পগুলির সাথে সমাধান করার চেষ্টা করব order

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

1
কেবলমাত্র নামগুলিতে পৃথক হওয়াতে আমি কী ভুল তা দেখছি না, বিশেষত যুক্তি তালিকায় যেখানে টাইপের প্যারামিটারের const Foo&ব্যতীত অন্য কোনও যুক্তিসঙ্গত পুরো নাম নেই foo। মঞ্জুর, এটি কোনও ফাংশন বডিতে থাকে এবং কম বিশেষায়িত উদ্দেশ্যে কাজ করে তবে আপনার Fooআরও বর্ণনামূলক নাম দেওয়া ভাল foo
জন পুর্ডি

@ জোন - আমি একমত, যদিও ব্যক্তিগতভাবে আমি "পি_", "এল_" এবং "এম_" উপসর্গের দিকে ঝুঁকির চেয়ে আলাদা towards সর্বজনীন-একই-সুস্পষ্ট-নাম ইস্যুর কারণে আমি এই সম্মেলনটি গ্রহণ করেছি। আপনি এটির জন্য কোন কনভেনশনটি ব্যবহার করেন ততক্ষণ পর্যন্ত আপনি এটি কোনও নির্দিষ্ট প্রসঙ্গে ধারাবাহিকভাবে ব্যবহার করেন ততক্ষণ - কেস-বিবিধ পদ্ধতির অবশ্যই যথেষ্ট পরিমাণে ব্যবহার করা হয়েছে যে বেশিরভাগ বিকাশকারীদের এটি স্বীকৃতি দেওয়া উচিত।
স্টিভ 314

@ জন - এই মন্তব্যে এমন লেখা পড়েছে যে আমি একই নামগুলি ইস্যু করলেই আমি নির্বাচিতভাবে সম্মেলনটি প্রয়োগ করব, যা আমি বলতে চাইছিলাম তা নয়। প্রসঙ্গটি ইস্যুটি ভাষা, প্রকল্পের সাথে সম্পর্কিত। কনভেনশনগুলি এমনভাবে তৈরি করা হয়েছে যাতে সমস্যাটি যখনই ঘটে তখনই (বা পরিবর্তিত হয় না), নির্বাচিতভাবে প্রয়োজনমতো প্রয়োগ না করা।
স্টিভ 314

@ স্টিভ 314: আমি প্রথম মন্তব্য থেকেই আপনার অর্থ পেয়েছি। আমি জানি, এর মতো affixes সবসময় আমার আরামের জন্য সিস্টেম হাঙ্গেরির খুব কাছে গিয়েছিল felt
জন পুর্ডি

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

6

ভাষা জেতে; আপনি সংকলককে আউটস্মার্ট করতে পারবেন না (যেমন PL / 1 এর মতো ঘৃণ্য বিষয়গুলি উপেক্ষা করে IF IF = THEN THEN THEN = ELSE ELSE ELSE = IF ENDতবে PL / 1 আপনাকে প্রথমে প্রশ্ন জিজ্ঞাসা করবে না)। মূলত, আপনাকে ভাষার নিয়মগুলি মেনে চলতে হবে, এবং আপনার নিজের ব্যবহারের জন্য ভাষার মূল শব্দের একটি বিকল্প খুঁজতে হবে - বা একটি বিকল্প ভাষা খুঁজে পেতে হবে।

সুতরাং, খুব অস্বাভাবিক পরিস্থিতিতে বাদে আপনি ভাষার সাথে খাপ খাইয়েছেন, বিপরীতে নয়।


5

সংক্ষিপ্তসার পরিবর্তে কিভাবে দৈর্ঘ্য সম্পর্কে? আপনি যদি কোনও ফু ভাষায় একটি ক্লাস কনস্ট্রাক্ট বাস্তবায়ন করেন, তবে FooClass এবং foo_class ব্যবহার সম্পর্কে কীভাবে? (আপনার কেসিং পছন্দগুলি যাই হোক মডুলো)।


আপনি জাভা কোড ব্যবহার করেন এমন প্রতিটি সনাক্তকারীকে "জাভা" উপস্থাপন করবেন? এমনকি প্রতিটি সনাক্তকারীকে "সি ++" উপসর্গ দিয়েও সমস্যাগুলি উল্লেখ করতে পারি না ...
স্টিভ 314

@ স্টিভ 314, আপনি জাভা কোডে উপসর্গ জাভা ব্যবহার করবেন না, আপনি জাভা সংকলক প্রয়োগকারী সি ++ কোডে উপসর্গ জাভা ব্যবহার করবেন। এছাড়াও, আপনি কেবল তখনই এটি ব্যবহার করতে পারবেন যদি বাকী সনাক্তকারী একটি কীওয়ার্ড হয়।
উইনস্টন ইওয়ার্ট

ঠিক আছে - আপনার সাধারণ শর্তে দৈর্ঘ্য বোঝাতে যেমন শনাক্তকারী খুব বেশি নির্দিষ্ট করে যা বোঝায়। বিভিন্ন অ্যাপ্লিকেশনগুলির জন্য, "শ্রেণি "টির নাম পরিবর্তন করা যেতে পারে" class_taught "বা" class_of_animal "বা" classiness_value "বা যাই হোক না কেন। আমি সম্মত - আমি সবেমাত্র কম্পাইলারগুলি ভিত্তিক উদাহরণটি বিভ্রান্তিকর পেয়েছি।
স্টিভ 314

5

classফ্রিকোয়েন্সি অনুসারে আমি কয়েকটি সংক্ষিপ্তসার ব্যবহার করেছি :

  • cls
  • clss
  • clazz
  • theClass
  • aClass

Classউদাহরণটি কোন শ্রেণীর প্রতিনিধিত্ব করে তা যদি আমি জানি তবে আমি এটিকে চলক নামে অন্তর্ভুক্ত করতে পারি:

  • stringClass = Class.forName("java.lang.String");

এর আগে কখনও 'ক্লস' দেখেনি। আমি বেশিরভাগই ক্লাস ব্যবহার করি
কনস্ট্যান্টিন পেটরুখনভ

4

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

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

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

মূলত, আপনি কেবল সংকলকটির জন্যই লিখছেন না, তবে লোকেদের যা পাঠযোগ্য হয় তা প্রসঙ্গ এবং সম্পর্কিত প্রত্যাশার উপর কিছুটা নির্ভর করে।


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

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

3

আমি প্রায়শই এটির মধ্যে চলে না, তবে আমি যখন এটি করি তখন এটি একটি নন-ইস্যু বলে মনে হয় কারণ আমি ডেল্ফি ব্যবহার করি এবং এটি আপনাকে সনাক্তকারীকে প্রিপেন্ড করে এই সমস্যাটি ঘিরে কাজ করতে দেয়। সুতরাং "শ্রেণি" কোনও বৈধ সনাক্তকারী নয়, তবে "& শ্রেণি" হয় is


মজাদার. আমার কাছে একটি কোড তৈরির ইউটিলিটি রয়েছে যা স্ট্রিং লিটারিয়ালকে যে কোনও জায়গায় সনাক্তকারী ব্যবহার করা যেতে পারে can মূলত, উত্পন্ন কোডের বেশিরভাগ শনাক্তকারী ডিএসএল দ্বারা ক্রমবর্ধমান (এবং মূলশব্দ সমৃদ্ধ) কীওয়ার্ড সংঘর্ষের ঝুঁকি এড়াতে স্ট্রিং লিটারাল হিসাবে লেখা হয়েছিল। এখন, শনাক্তকারীরা বেশিরভাগ নামের জন্য ব্যবহৃত হয় (উত্সবটি কতটা পঠনযোগ্য তা উত্সাহিত করে) তবে স্ট্রিং লিটারেলগুলি সর্বদা ফ্যালব্যাক হিসাবে উপলব্ধ। আমি ভেবেছিলাম এটি কোড জেনারেশনের জন্য ভাল, তবে কীওয়ার্ড-সংঘর্ষের কাজগুলি সাধারণ উদ্দেশ্যে ভাষায় খারাপ ধারণা হবে - তবে সম্ভবত আমি ভুল করছি।
স্টিভ 314

2

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


2
শুধু উপসর্গ হিসাবে "মসৃণ", "না" বা "আমার" ব্যবহার করবেন না
স্টিভেন এ লো লো

2
একেবারে। আমি "জনা_পর্দিস_সামান্যভাবে_চোসেন_আইডেন্টিফায়ার_প্রেফিক্স_" ভোট দিয়েছি।
স্টিভ 314

1
@Steven: এমনকি খারাপ, আমি দেখতে a, anএবং theশিক্ষানবিস সি এস ছাত্র ফ্রিকোয়েন্সি ধকল ব্যবহার করা হয়েছে।
জন পূর্ব ১৮

1
@ জন পূর্ব, এটা আমাদের দোষ নয়! এমন অধ্যাপককে দোষ দিন যা তাদের শ্রেণীর লোকদের নামকরণের সিদ্ধান্ত নিয়েছে () aPerson
বেন এল

@ জোন: আমি যে নামকরণের কনভেনশনটিতে কাজ করি তা নির্দিষ্ট করে যে স্থানীয় ভেরিয়েবলগুলি aটাইট লুপ ভেরিয়েবলগুলি বাদ দিয়ে শুরু করা উচিত : /
ম্যাথিউ এম।

2

আমার নামকরণের সম্মেলনটি পরিবর্তন বা সমন্বয় করুন

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