স্ট্যান্ডার্ড এবং ব্যবহারকারী-সংজ্ঞায়িত প্রকারের মধ্যে সিন্ট্যাক্টিক পার্থক্য করার কী লাভ?


13

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

সুতরাং, মৌলিক ধারণাটি হ'ল কোডটি পড়ার সময় ব্যবহারকারীর দ্বারা সংজ্ঞায়িত প্রকারের থেকে স্ট্যান্ডার্ড প্রকারের পার্থক্য করা উচিত । উদাহরণস্বরূপ, বাজার্ন স্ট্রস্ট্রপ পরামর্শ দেয় যে একটি ব্যবহার করে

প্রকারের জন্য প্রাথমিক মূল অক্ষর (যেমন, স্কোয়ার এবং গ্রাফ)

যা, অ্যাকাউন্টে গ্রহণ করা

সি ++ ভাষা এবং স্ট্যান্ডার্ড লাইব্রেরিতে বড় বড় অক্ষর ব্যবহার হয় না

উপরে বর্ণিত লক্ষ্য অর্জনের অনুমতি দেয়।

তবে কেন আমাদের তা করা দরকার? মানক এবং ব্যবহারকারী সংজ্ঞায়িত প্রকারের পার্থক্যের উদ্দেশ্য কী হতে পারে?

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

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


6
শেষ পর্যন্ত আপনি এটিকে হাঙ্গেরিয়ান নোটেশনের একটি রূপও বলতে পারেন (অর্থাত্ কোনও নামে টাইপ / ব্যবহার সম্পর্কে এম্বেডিং তথ্য), যা সাধারণত ভ্রূণু হয়। সুতরাং: ভাল প্রশ্ন।
stijn

2
@ স্টিজন: হ্যাঁ, তবে কেন আপনি তা জানেন ? আগের দিন, যখন প্রত্যেকে তাদের প্রোগ্রামগুলি লেখার জন্য একটি পাঠ্য সম্পাদক ব্যবহার করেছিল, শনাক্তকারীকে দেখে প্রকারটি জানার পক্ষে এটি দরকারী। তবে আজ, আপনি যে কোনও আধুনিক আইডিইতে সনাক্তকারীটির উপরে ঝাঁকুনি দিতে পারেন এবং এটি আপনাকে টাইপটি বলবে।
রবার্ট হার্ভে

4
@ রবার্টহারভে বাদে যে হাঙ্গেরিয়ান নোটেশনটি এমন সম্প্রদায়গুলিতেও প্রতিরোধ করা হয় যাদের শক্তিশালী আইডিই নেই, বা বরং বেশিরভাগ ক্ষেত্রে সরল পাঠ্য সম্পাদক ব্যবহার করা হয়।

1
@ রবার্টহারভে না, আমি উভয়ই ("অ্যাপস হাঙ্গেরিয়ান" এবং "সিস্টেম হাঙ্গেরিয়ান") সম্পর্কে সচেতন এবং আমার অভিজ্ঞতাতে উদাহরণস্বরূপ পাইথন এবং মরচেও সাধারণ নয়।

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

উত্তর:


5

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

যখন নামকরণের কথা আসে তখন স্ট্রোস্ট্রাপ বাদাম এবং এটি একটি বৈজ্ঞানিক-প্রমাণিত সত্য।


2
আমি আপনার RAII দেখতে পাব এবং আপনাকে একটি SFINAE বাড়িয়ে দেব।
রবার্ট হার্ভে

5
আমি দেখতে পেলাম কীভাবে ইউডিটি থেকে মানক প্রকারের পার্থক্য করা কার্যকর হতে পারে। আপনার যদি সত্যিকারের কোনও ভাল কারণ না থাকে তবে আপনার কোনও স্ট্যান্ডার্ড লাইব্রেরিতে কোড পরিবর্তন করা উচিত নয় , তাই নিম্ন কেসটি দেখলে বোঝা যায় যে কোডটি আপনাকে দেখতে হবে না কারণ ভাল, এটি স্ট্যান্ডার্ড লাইব্রেরিতে রয়েছে।
রবার্ট হার্ভে

4
@ ডেলানন: হ্যাঁ এটি "অনেক লোক" এর পক্ষ থেকে কর্তৃপক্ষের কাছে আবেদন করা ছাড়া আর কিছুই নয়। যদি "অনেক লোক" এখানে পৌঁছে তাদের যুক্তি নিয়ে আলোচনা করতে চায় তবে তারা তা করতে নির্দ্বিধায় রয়েছে এবং ততক্ষণ পর্যন্ত তাদের যুক্ত করার মতো কিছুই নেই। এফটিআর, আমি ইউডিটি-র জন্যও বড় হাতের অক্ষর ব্যবহার করি ... তবে আদিমদের জন্য যখনই আমার যখন তাদের উলামের প্রয়োজন হয় তখনও for
ডেড এমএমজি

2
@ রবার্টহারভে: এটি ধরে নিয়েছে যে আপনি দৃষ্টিকোণে স্ট্যান্ডার্ড প্রকারগুলি চিনতে পারবেন না। বা আপনার পরিবেশে এগুলি নিয়ে বেড়াতে এবং "স্টাড :::" দেখে। বা Go To Definition বা যাই হোক না কেন ব্যবহার করে। সুতরাং মূলত, এটি প্রয়োগ হয় না।
ডেডএমজি

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

3

নামকরণের কনভেনশনগুলি কোডটির মানবিক (অর্থাত্ প্রোগ্রামার এবং রক্ষণাবেক্ষণকারী) সমর্থনের বিষয়ে।

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

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


2

প্রকারভেদগুলির জন্য মূলধর্মী শব্দগুলি ব্যবহার করার একটি কারণ হ'ল প্রকারের থেকে ভেরিয়েবলকে আলাদা করা। এটি একই নামের সাথে মূলধনকে বাদ দিয়ে একটি ভেরিয়েবল ঘোষণা করতে দেয়:

Foo foo;
Graph graph;

এটি ক্লাসগুলির জন্য দরকারী হতে পারে যার প্রতিটি প্রসঙ্গে যেমন একটি উদাহরণ ব্যবহৃত হয়, যেমন কনফিগারেশন সেটিংস।


আইএমএইচও এটি শিরোনামে প্রশ্নের উত্তর দেয় না। সম্ভবত "এই ক্ষেত্রে যুক্ত করুন, ছোট অক্ষরের সাথে স্ট্যান্ডার্ড প্রকারের নামকরণ কেবল সিএসডিডিলিবের সাথে পিছনের সামঞ্জস্যের জন্য"।
ভোরাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.