আপনি কীভাবে আপনার ক্লাস এবং নেটিভ শ্রেণীর মধ্যে নামের মিলকে এড়াতে পারবেন? [বন্ধ]


9

আমি কেবল একটি "আকর্ষণীয় সমস্যা" হয়েছি, যা সম্পর্কে আমি আপনার মতামত চাই:

আমি একটি সিস্টেম বিকাশ করছি এবং বহু কারণে (অর্থ: বিমূর্ততা, প্রযুক্তির স্বাধীনতা ইত্যাদি) আমরা তথ্য আদান-প্রদানের জন্য আমাদের নিজস্ব প্রকার তৈরি করি।

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

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

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

আপনার কি প্রায়শই এই সমস্যা হয়? আপনি কিভাবে এটি পরিচালনা করবেন?

সম্পাদনা: @mgkrebbs সম্পূর্ণরূপে যোগ্যতাসম্পন্ন নাম ব্যবহার সম্পর্কে মন্তব্য করেছে। এটি আমাদের বর্তমান পদ্ধতির, তবে আইএমএইচও, কিছুটা বেশি ভার্জোজ। সম্ভব হলে আমি কিছু পরিষ্কার করতে চাই like


2
সর্বদা যোগ্যতা ব্যবহার করা একটি কার্যক্ষম সমাধান বলে মনে হয়, যদি কিছুটা ভারবস হয়। এক ধরণের জন্য আওয়ারকম্পানি.মেলমেসেজ এবং অন্যটির জন্য সেন্ডমেইলক্লাস.মেলমেসেজ (বা যা কিছু) ব্যবহার করুন। এই পদ্ধতির গ্রহণে কিছু সমস্যা আছে?
এমজিক্রেবস

হ্যাঁ, আমি এটি সম্পর্কে ভেবেছিলাম, তবে এটি ভারবস হয়। আমি কিছু "ক্লিনার" চাই, তবে আপনার প্রস্তাবিত সমাধানটি আমার বর্তমান। আমি এটি ব্যাখ্যায় যুক্ত করব
JSBach

3
নাম একটি প্রসঙ্গে আসে। সাধারণত একটি নেমস্পেস বা এর মতো কিছু। সুতরাং এটি কোনও সমস্যা হওয়া উচিত নয়।
ডেডালনিক্স

+1, আমি এই প্রশ্নটি পছন্দ করি। আমি প্রায় 7 বছর আগে একবার একজন প্রশিক্ষকের কাছে এই প্রশ্নটি জিজ্ঞাসা করেছি এবং তিনি ভেবেছিলেন আমি একজন সম্পূর্ণ "...." :)
NoChance

আপনি কোন ভাষা ব্যবহার করছেন? উত্তরটি ভাষা নির্দিষ্ট। সাধারণভাবে উত্তরটি হ'ল 'নেমস্পেস ব্যবহার করুন'। একক জাভা অ্যাপ্লিকেশনে আধা ডজন লাইব্রেরি দ্বারা একই শ্রেণির নাম ব্যবহার করা বেশ সাধারণ বিষয়।
কেভিন

উত্তর:


3

আপনি আপনার প্রকল্পের জন্য যে নামটি ব্যবহার করতে যাচ্ছেন এটি এটি একটি সমস্যা।

মূলত একটি নেমস্পেস হল আপনার সমস্ত শ্রেণি এবং / অথবা আপনি আপনার প্রকল্পে ব্যবহার করতে চান এমন সমস্ত শ্রেণীর (সাধারণত ভাষা / সংকলক / আইডিই সহ প্রমিত মানের ক্লাস সহ) প্রদত্ত কীওয়ার্ডগুলির সংগ্রহ collection

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

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

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


3

ভাল আমার পুরানো বিকাশ টিম প্রতিটি কাস্টমাইজড ক্লাসে অ্যাপ্লিকেশনটির সংক্ষিপ্ত বিবরণ যুক্ত করতে ব্যবহার করে। আমাদের কাছে এবিসিমেইল ক্লাস ছিল।

আমি মনে করি এটি নেমস্পেসের উপর নির্ভর করার চেয়ে আরও সহজবোধ্য তবে এটি নেমস্পেসের ব্যবহারের পরিপূরক সমাধানও হতে পারে।

সর্বশেষে তবে অন্তত নয়, যেহেতু আপনি একটি নতুন অবজেক্ট তৈরি করছেন, এর অর্থ হ'ল নেটিজ অবজেক্ট আপনার প্রয়োজনের উত্তর দেয় না যাতে আপনার ইমেল ফাইলটির নাম কাস্টমাইজড ইমেইল , অ্যাডভান্সড ইমেইল ... ইত্যাদি হতে পারে etc


1
আপনার চূড়ান্ত বিষয়টিতে সম্মত, তবে এর OAEmailচেয়ে ভাল কেন হবে OurApplication.Email? সফ্টওয়্যারটির প্রতিটি অংশে OAEMailপ্রভাব ফেলেছে , অন্যদিকে নেমস্পেসের শিরোনামের একটি প্রভাব রয়েছে যেখানে রূপান্তর ঘটে এবং উভয় শ্রেণি একই উত্স ফাইলে ব্যবহৃত হয়।
স্টিভেন জিউরিস

1
আমি মনে করি যখন আপনার ভাষা নেমস্পেসগুলি সমর্থন করে না তখন উপসর্গটি একটি ভাল ধারণা। তবে ভাষা যদি নেমস্পেসিংয়ে কোনও ফর্মকে সমর্থন করে তবে এটি ব্যবহার করুন (এটিই সমস্যা সমাধানের জন্য নকশাগুলি তৈরি করা হয়েছিল!) `
মার্টিন ইয়র্ক

@ স্টিভেন জিউরিস: ক্লাসটির নামটি তৈরি হয়ে গেলে এটি নির্বাচন করা উচিত। এরপরে, আমি এটির বদলাতে খারাপ অভ্যাস হিসাবে এটি পেয়েছি ... সমস্ত অপ্রয়োজনীয় প্রভাবের কারণে।
আমিনাইন

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

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

3

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

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


আমি একটি অনুরূপ উত্তর পোস্ট করতে চলেছি, তবে সি ++ এর পরিবর্তে উদাহরণস্বরূপ উপন্যাস নির্দেশ ব্যবহার করে সি # এর উল্লেখ করতে চাইছিল ।
স্টিভেন জিউরিস

@ স্টিভেন: আমি সি ++ এর পরিবর্তে সি # এর উল্লেখ করতে যাচ্ছিলাম, তবে আমি সি # তে প্রোগ্রামিং করে কয়েক বছর হয়েছে, এবং নিশ্চিত ছিল না।
কেভিন cline

2

আপনার কি প্রায়শই এই সমস্যা হয়? আপনি কিভাবে এটি পরিচালনা করবেন?

এটি আপনার ব্যবহৃত ভাষার উপর নির্ভর করে really সি ++ এবং জাভাতে, নেমস্পেস ব্যবহার করে এই সমস্যাটি সমাধান করা হবে। আমি সি ++ ব্যবহার করছি এবং এটি ঘটে যে একই নামের সাথে আমি বিভিন্ন ক্লাস পেয়েছি। এটি কোনও সমস্যা নয়, যেহেতু তারা বিভিন্ন নেমস্পেসে রয়েছে।

অন্যান্য ভাষায়, বিভিন্ন নাম সরবরাহ করা ছাড়া চারপাশে কোনও উপায় নেই।


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

@ অস্কার স্পষ্টতই। কম্পিউটারের জন্য এটি হতে পারে xyz123এবং এটি এখনও একই কাজ করে। আমি ভার্বোস হয়ে যাওয়ার পরে আর কোনও উপায় দেখতে পাচ্ছি না (আপনি মন্তব্যগুলিতে বলেছিলেন যে আপনি এটি এড়াতে চাইছেন)।
BЈовић

2

আপনার প্রশ্নটি খুব ভাল। আপনি কীভাবে ইউ (বা ইউ) বা ক্লাস (ক্লাসের জন্য সংক্ষিপ্ত) এর মতো একটি উপসর্গ দিয়ে আপনার পদ্ধতিটি উপসর্গ করেন? উদাহরন স্বরূপ:

ক্লাসমেলমেসেজ বা ইউইমেলমেসেজ

এর জন্য প্রচুর টাইপিংয়ের প্রয়োজন হয় না এবং আপনি তাত্ক্ষণিকভাবে বলতে পারেন যে টাইপটি 'আপনার'।

সম্পাদনা করুন - প্রথম 2 টি মন্তব্যের প্রতিক্রিয়া:

আমি এই পাঠকের দৃষ্টি আকর্ষণ করতে চাই যে: সমস্ত হাঙ্গেরিয়ান স্বীকৃতি সমানভাবে তৈরি হয় না। আমাদের সিস্টেম হাঙ্গেরিয়ান এবং অ্যাপস হাঙ্গেরিয়ান মধ্যে পার্থক্য করা উচিত , আমি ধরে নিই যে উপরের পরামর্শটি অ্যাপস হাঙ্গেরিয়ান ধরণের অনুসরণ করে যা ক্ষতিকারক নয়।

সিস্টেম হাঙ্গেরিয়ান স্বরলিপি সম্পর্কিত কোনও ক্ষতি যেমন একটি আইডি নামকরণের ক্ষেত্রে উপরের পরামর্শে উপস্থিত নেই।

এ সম্পর্কে আরও তথ্যের জন্য, একবার দেখুন: ভুল কোড তৈরির রেকং তৈরি করা - জোয়েল অন সফ্টওয়্যার


3
যতবারই কেউ হ্যানি শিরোনামের প্রস্তাব দেয়, Godশ্বর একটি বিড়ালছানা হত্যা করেন।
কোনামিমন

2
বিআইজিএইচএইচএমপিএএমএলসিএলএকএসএএসও কোনও সাহায্য করে না।
স্টিভেন জিউরিস

উপরে মন্তব্য প্রশংসা করা হয়। দয়া করে আমার সম্পাদনাগুলি দেখুন, যদিও আমি জানি আমাদের মধ্যে কিছু লোক তাদের মন বদলাবে না, সর্বোপরি কে বিড়ালছানা হত্যা করতে চায়? :)
NoChance

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

@ স্টিভেন জিউরিস, আপনার মন্তব্যের জন্য ধন্যবাদ। নেমস্পেসগুলি নিখুঁত যে এগুলি টাইপ করতে বেশ ধরণের দীর্ঘ থাকে, আমি আপনার সরবরাহিত লিঙ্কটি পরীক্ষা করব will
NoChance
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.