প্রকারের নাম / প্রতিশব্দ সম্পর্কে চিন্তাভাবনা?


10

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

বিভিন্ন ভাষায় বিভিন্ন ডিগ্রীতে প্রকারের এলিয়াস সমর্থন করা হয়। সি # প্রতিটি কোড ফাইলের শুরুতে প্রকারের এলিয়াস ঘোষণার অনুমতি দেয় এবং সেগুলি কেবলমাত্র সেই ফাইল জুড়েই বৈধ। এমএল / হাস্কেলের মতো ভাষাগুলি টাইপ অ্যালিয়াসগুলি সম্ভবত টাইপের সংজ্ঞা ব্যবহার করে। সি / সি ++ হ'ল একটি ওয়াইল্ড ওয়েস্টের ধরণ, typedefএবং #defineপ্রায়শই উলামের ধরণের হিসাবে আপাতদৃষ্টিতে আন্তঃব্যবহারযোগ্য হিসাবে ব্যবহৃত হয়।

টাইপ এলিয়াসিং এর উত্সাহগুলি খুব বেশি বিতর্ক শুরু করে না:

  • এটি মিশ্রিত প্রকারগুলি সংজ্ঞায়িত করা সুবিধাজনক করে তোলে যা ভাষার দ্বারা প্রাকৃতিকভাবে বর্ণিত হয়, যেমন type Coordinate = float * floatবা type String = [Char]
  • লং নাম সংক্ষিপ্ত করা যেতে পারে: using DSBA = System.Diagnostics.DebuggerStepBoundaryAttribute
  • এমএল বা হাস্কেলের মতো ভাষায়, যেখানে ফাংশন প্যারামিটারগুলির প্রায়শই নাম থাকে না, টাইপ অ্যালিয়াসগুলি স্ব-ডকুমেন্টেশনের একটি চিহ্ন দেয় provide

নেতিবাচক দিকটি আরও কিছুটা নিখুঁত: উপাধিগুলি প্রসারিত করতে পারে, কোড পড়া এবং বুঝতে বা প্ল্যাটফর্ম শিখতে অসুবিধা তৈরি করে। উইন 32 এপিআই এর DWORD = intএবং এর HINSTANCE = HANDLE = void*এবং এর LPHANDLE = HANDLE FAR*এবং এর মতো একটি ভাল উদাহরণ । এই সমস্ত ক্ষেত্রে এটি খুব সহজেই একটি হ্যান্ডেল এবং একটি শূন্য পয়েন্টার বা ডিডাবর্ড এবং একটি পূর্ণসংখ্যার ইত্যাদির মধ্যে পার্থক্য করার কোনও ধারণা দেয় না ..

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

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


ইনটেলিসেন্স বা না, সিস্টেম.ডায়াগনস্টিকস.ডেবুগারস্টেপবাউন্ডারিএট্রিবিউট ডিএসবিএর তুলনায় কোডে খুব কম পঠনযোগ্য, বিশেষত প্রায়শই ব্যবহৃত হয়।
zvrba

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

উত্তর:


3

দুটি বৈশিষ্ট্য আমার মনে আসে:

পোর্টেবিলিটি। সি, datatypes পছন্দ যেখানে মত ভাষাতে intপ্ল্যাটফর্ম নির্দিষ্ট, মত উপনাম হয় DWORDসহজে আপনি কি সত্যিই একটি 32bit সর্বত্র পূর্ণসংখ্যা স্বাক্ষরিত ব্যবহার করছেন তা নিশ্চিত করে তোলে, যখন এই আপনার প্রোগ্রামের জন্য প্রয়োজন, এমনকি যখন আপনি পোর্ট একটি plattform প্রোগ্রাম যেখানে intহয় উদাহরণস্বরূপ 16 বিট স্বাক্ষরবিহীন এবং DWORDএর জন্য একটি উপনাম হতে হবে signed long

বিমূর্ততা। আপনার প্রোগ্রামে আপনি বিভিন্ন উদ্দেশ্যে বিভিন্ন সংখ্যক পূর্ণসংখ্যার এবং ভাসমান পয়েন্ট নম্বর ব্যবহার করতে পারেন। মত alias লেখা তৈরি করে SPEED, HEIGHT, TEMPERATURE, এটা থেকে যারা উদাঃ একটিকে পরিবর্তন করার অপেক্ষাকৃত সহজ floatকরতে doubleএবং অন্যদের ছেড়ে হিসাবে তারা।


যদিও এই প্রশ্নের উত্তর দেয় না ...
রে মিয়াসাকা

@ রেই, আপনি ঠিকই বলেছেন যে গোলাবারুদ প্রশ্নের উত্তর দেয়নি তবে সত্যই তাতে মন্তব্য করেছে। তবুও, পি.এসই বিন্যাসিত বা দীর্ঘ মন্তব্যের অনুমতি দেয় না ... আমি মনে করি তিনি ডাউন ডাউনের প্রাপ্য নন: তাঁর মন্তব্য বিষয়টিতে এবং একটি ভাল মন্তব্য।
Ando

@ আন্ডারিয়া প্রশ্নটি সম্পূর্ণরূপে পড়ার ফল বলে মনে হয় না; বহনযোগ্যতার নোটটি বাদ দিয়ে (যা উত্সাহের তালিকায় রাখার জন্য কেবলমাত্র অন্য আইটেম), এটি কেবল একটি পুনরুদ্ধার।
রে মিয়াসাকা

2

আমি আন্দ্রেয়ার সাথে একমত হয়েছি আপনার এনক্যাপসুলেশন দরকার, তবে আমি ব্যয় করি যে এটি ব্যয়বহুল হওয়া দরকার।

আমি মনে করি যে হ্যাপি মিডিয়ামটি টাইপ সেফ টাইপডেফগুলি হবে, সম্ভবত প্রকৃত টাইপ এবং টাইপএফের মধ্যে স্পষ্ট রূপান্তরকে অনুমতি দেয় তবে জড়িত রূপান্তর রোধ করে।

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


1
আমি আরও একমত হতে পারি না, আমি সত্যিই এই জাতীয় "সীমিত" বহুবর্ষ দেখতে চাই। যদি type Name = String, তবে একটি Stringফাংশন প্রত্যাশিত কোনও ফাংশনে পাস করা যায় না Name, তবে বিপরীতটি সম্ভব।
ম্যাথিউ এম।

1

আমার মনে হয় টাইপ অ্যালিয়াসগুলি অলস প্রোগ্রামারকে (খুব) সস্তা এনক্যাপসুলেশন দেয়। সুতরাং বিকল্পটি কেবল সঠিক (ব্যয়বহুল) এনক্যাপসুলেশন ব্যবহার করা হতে পারে।

যুক্তিটিও রয়েছে যে প্রাক্তনটি পরবর্তীকালের তুলনায় মেশিন / ভাষার ক্ষেত্রে ব্যবহারের ক্ষেত্রেও অনেক বেশি অনুকূলিত হয়েছেন।

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