ক্রিয়া সহ ক্রিয়াপদ, ক্লাস সহ বিশেষ্য ব্যবহার করুন - ইন্টারফেসের কী হবে? [বন্ধ]


23

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

কেবল এটি পরিষ্কার করার জন্য, আমি নামের সামনে "I" রাখব কিনা বা উটকেস বা পাসকেলকেস ব্যবহার করব কিনা সে বিষয়ে আমি কথা বলছি না। আমি ইন্টারফেসের জন্য একটি পরিষ্কার, শব্দার্থক নামটি বের করার পদ্ধতিটি নিয়ে ভাবছি।

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


2
এইচএম .. শিরোনামের উপর ভিত্তি করে, আমি ভেবেছিলাম এটি প্রোগ্রামিং এবং ইংলিশের মধ্যে বক্তৃতার অংশগুলিকে সমান করে তুলবে। যে ক্ষেত্রে ম্যাডলিবগুলি সম্ভব বলে মনে হচ্ছে।
ইজকাটা

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

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

উত্তর:


21

আমি বলব এটি ইন্টারফেসের সংজ্ঞা যা দেয় তার উপর নির্ভর করে। কিছু ক্ষেত্রে যখন ইন্টারফেসটি বরং নির্দিষ্ট এবং বিশদ হয়, আমি মনে করি একটি বিশেষ্যটি সেরা। উদাহরণ হল IList, ICollection

কখনও কখনও যদিও একটি ইন্টারফেস একটি শ্রেণিতে কিছু সাধারণ বৈশিষ্ট্য যুক্ত করার বিষয়ে বেশি। সেক্ষেত্রে আমি মনে করি একটি বিশেষণই সেরা। উদাহরণ হল IDisposable, IEnumerable...

সম্ভবত এটির অন্য উপায়টি হ'ল আপনার ইন্টারফেসটি কতগুলি "দক্ষতা" সংজ্ঞায়িত করে।

উদাহরণস্বরূপ, IList<T>ইন্টারফেসটি এই ক্ষমতাগুলি সংজ্ঞায়িত করে: যোগ করুন, সাফ করুন, ধারণ করে, সন্নিবেশ করুন, সরান, ... এই সমস্ত তালিকার বৈশিষ্ট্য তাই IListএকটি ভাল নাম।

IDisposableঅন্যদিকে কেবল একটি ক্ষমতা সংজ্ঞায়িত: নিষ্পত্তি করা। সুতরাং এটি ডিসপোজেবলের মতো কোনও কিছুর জন্য উপযুক্ত। সুতরাং নাম IDisposable


10
আমি "_able" বিশেষণটি ব্যবহার করার পরামর্শ দিচ্ছি যদি আপনার ইন্টারফেসটির নামকরণ করা হয় যা আপনার বস্তুর সাথে করা যেতে পারে (উদাহরণস্বরূপ IEnumerable), "ইন্টারফেস" নাম যদি আপনার বস্তুটি অন্য বস্তুর সাথে জিনিস করার পরে আপনার ইন্টারফেসটির নামকরণ করা হয় ( উদাহরণস্বরূপ IEqualityComparer), এবং যদি আপনার ইন্টারফেসটির এমন কোনও জিনিসের নামে নামকরণ করা হয় যার আচরণ নকল করে (যেমন IList<T>)।
সুপারক্যাট

@ সুপের্যাট দ্বারা মন্তব্য করা সত্যই এই উত্তরের অন্তর্ভুক্ত করা উচিত। এটা অনেক জ্ঞান করে তোলে।
নিখিল वर्तক

প্রকৃতপক্ষে ইন্টারফেসের নামটির সাথে পূর্বনির্ধারণ Iকরা নিরর্থক।
ব্যবহারকারী 1870400

5

একটি ইন্টারফেস আচরণের বর্ণনা দেয় যাতে নামগুলি তাই বলা উচিত। আমি এর কোনও নিয়ম সম্পর্কে নিশ্চিত নই তবে আপনি নামটি শুনলেই তা জানতে পারবেন।

কিছু উদাহরণ:

Flyable      - Can Fly
Workable     - Can work
Negotiatable - Can negotiate.

আমি মনে করি এর সাথে ইন্টারফেসের নাম রাখা Iএবং কল Setকরা ঠিক নয় ISetকারণ একজন বিকাশকারী হিসাবে আপনার উদ্বেগ হওয়া উচিত নয় এটি ইন্টারফেস বা শ্রেণি কিনা। আমি দেখছি এই অনুশীলনটি এখন জাভাতে নেই।


"বিকাশকারী হিসাবে আপনি +1 কোনও ইন্টারফেস বা কোনও শ্রেণীর ক্ষেত্রে উদ্বিগ্ন হবেন না" "
কাজার্ক

"একজন বিকাশকারী হিসাবে আপনার উদ্বিগ্ন হওয়া উচিত নয় যে এটি ইন্টারফেস বা শ্রেণি কিনা" - দ্বিমত পোষণ করুন কারণ এটি যদি ইন্টারফেস হয় তবে আপনার জানা উচিত যে কোন সদস্যদের প্রয়োগ করা উচিত।
ম্যাক্সিমাস মিনিমাস

@ ম্যাক্সিমাসমিনিমাস এটিকে উপস্থাপন করা Iনির্বিশেষে নির্লজ্জ । তাহলে কেন উপসর্গের সাথে বিমূর্ত ক্লাস A, নিয়মিত ক্লাস Cইত্যাদি নেই ??
ব্যবহারকারী 1870400

@ ব্যবহারকারী 1870400 - সত্য, তবে এটি সেই অংশ নয় যার সাথে আমি একমত নই।
ম্যাক্সিমাস মিনিমাস

4

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


0

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


0

দ্রুত উত্তর: ইন্টারফেসটি সত্ত্বা, শ্রেণি, মডেল, ধারণাগুলি ইত্যাদির মধ্যে দক্ষতা, বৈশিষ্ট্য, সাধারণ সীমানা বা আন্তঃসংযোগগুলির একটি SET যোগ করার বিষয়ে আরও বেশি is

শ্রেণি এবং সত্তায় সাধারণ আচরণ যুক্ত করার বিষয়ে কথা বলা এবং তারপরে সত্যিকারের বৈশিষ্ট্যগুলির সেটটি সনাক্ত করতে একটি ভাল অর্থবহ নাম আসবে।

ইন্টারফেস নামকরণের মতো: IStateMachineBuilder, IUserContextProviderBuilder, IEntityBuilderBuilder, IActiveAware, etc.সম্ভবত ধারণাটি ব্যাখ্যা করুন।


1
হ্যাঁ, ইন্টারফেস চুক্তি বা দক্ষতার প্রতিনিধিত্ব করে; তাই অনেক জানা আছে। তবে এই নামগুলি কীভাবে দেওয়া হবে এই প্রশ্নের উত্তর কীভাবে দেয়? এই বিষয়ে আপনি যা বলছেন তা হ'ল "এটি সম্পর্কে চিন্তা করুন এবং অনুপ্রেরণা আপনাকে আঘাত করবে।" এই উদাহরণটি নিম্নলিখিত নামের নির্বাচন করা যেতে উচিত, কোনো সুপারিশ দেয় না, কোনো কেন: IStateMachineBuilder(বিশেষ্য), IBuildStateMachine(একটি কর্ম নামকরণ), ICanBuildStateMachine(ক সামর্থ্য নামকরণ), ইত্যাদি
stakx

0

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

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