কোনও সম্পত্তির / সদস্যের নাম সি # তে ঘোষিত প্রকারের মতো করা কি কি অনুশীলন?


25

উদাহরণস্বরূপ, একটি শ্রেণি যেমন:

class Dog { } //never mind that there's nothing in it...

এবং তারপরে একটি সম্পত্তি:

Dog Dog { get; set; }

আমাকে বলা হয়েছে যে আমি যদি এর জন্য আরও কল্পনাপ্রসূত নামটি না নিয়ে আসতে পারি তবে অবশ্যই আমাকে ব্যবহার করতে হবে:

Dog DogObject { get; set; }

এগুলির আরও কীভাবে নাম রাখা যায় সে সম্পর্কে কোনও চিন্তাভাবনা?


2
আপনার যে প্রয়োজনীয়তাটি সম্পর্কে বলা হয়েছিল তা মস্তিষ্কে মৃত বলে মনে হচ্ছে, সম্ভবত কোনও ভাল নির্দেশিকাটির অতিরিক্ত প্রয়োগের কারণে (আরও ভাল নাম থাকার পরে কেবল টাইপের নামটি ব্যবহার করবেন না)।

2
এটি এমনকি সি # তেও সংকলন করবে না কারণ সদস্যের নামগুলি এনক্লোজিং টাইপের মতো হতে পারে না।
লি

3
@ লি: আমি মনে করি প্রসঙ্গটি হ'ল সম্পত্তিটি অন্য ধরণের। উদাহরণস্বরূপ একটি Personশ্রেণি যার Dogনাম সম্বলিত সম্পত্তি রয়েছেDog
গোরিক

3
আমি বলতে চাইছি, সে যদি সত্যই কুকুর হয় তবে তাকে তার মতো লেবেল দেবে।
থমাস এডিং

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

উত্তর:


22

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

Dog = new Dog();

টাইপ কনস্ট্রাক্টর কোনটি? কোনটি অবজেক্ট? বিভ্রান্ত না? ঠিক আছে, কেমন আছে

Dog = Dog.Create()?

কোনটি অবজেক্ট? ধরণের স্থিতিশীল কারখানা পদ্ধতি কোনটি? এখনও বিভ্রান্ত না? আমি তা ভাবিনি।

কেবলমাত্র যখনই আমি এই সম্ভাব্য সমস্যাটি দেখতে পেয়েছি তখন যখন নেমস্পেস গাছটি বেশ বিস্তৃত হয় এবং সংকলকটি অস্পষ্টতাটি বের করতে পারে না, সেক্ষেত্রে আপনি এরকম কিছু দিয়ে শেষ করেন like

Dog = new Some.Namespace.Dog();

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

dog = new Dog();

7
+1 টি। এবং বিকল্পগুলি সবগুলি আরও খারাপ: "থিডগ", "যেকোনও ডগ", "মাইডগ" ইত্যাদি add যখন যুক্ত করার মতো কিছু থাকে না তখন কিছুই যুক্ত না করাই ভাল।
কেভিন ক্লাইন

আমি মনে করি যে দ্বিতীয় কারণটি যদি কোনও কারণে Dogকোনও উদাহরণ পদ্ধতি বলা হয় তবে বিভ্রান্ত হয়ে উঠতে পারে Createতবে আপনি সেই সময়ে কিছু ভয়ঙ্কর কোডিং অনুশীলনে ডুব দিয়ে যাবেন।
কেডিট্রাগলিয়া

40

এটি কেবল একটি যুক্তিসঙ্গত অনুশীলনই নয়, ভাষাটি বিশেষভাবে এটির অনুমতি দেওয়ার জন্য তৈরি করা হয়েছিল। নিয়ম এবং ন্যায়সঙ্গততার জন্য "রঙ রঙ" এর জন্য সি # স্পেসিফিকেশন অনুসন্ধান করুন এবং দেখুন

http://blogs.msdn.com/b/ericlippert/archive/2009/07/06/color-color.aspx

এই সিদ্ধান্ত থেকে উদ্ভূত কিছু আকর্ষণীয় কোণার জন্য।

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


যদি সম্পত্তির ধরণ এমন হয় যার উদাহরণগুলির কোনও পরিচয় নেই (উদাহরণস্বরূপ Color), এই জাতীয় ব্যবহার যুক্তিসঙ্গত বলে মনে হয়। পরিবর্তনযোগ্য বা IDisposableপ্রকারের সাথে যদিও আমি এটি এতটা পছন্দ করি না । "নিয়ন্ত্রণের Font" দ্বারা রাষ্ট্রের সেই দিকগুলিকে বোঝানো হয় যা সম্পত্তি দ্বারা আবদ্ধ হয়, বা Fontসম্পত্তি প্রাপ্ত দ্বারা চিহ্নিতকরণের উদাহরণকে বোঝায় ?
সুপারক্যাট

7

এটি কল করা পুরোপুরি ঠিক আছে Dogএবং এটি প্রকৃতপক্ষে ফ্রেমওয়ার্ক নামকরণের নির্দেশিকাগুলিতে মাইক্রোসফ্টের পরামর্শ দেয় :

বিবেচনাধীন একটি সম্পত্তি তার ধরণের হিসাবে একই নাম প্রদান।

উদাহরণস্বরূপ, নিম্নলিখিত বৈশিষ্ট্যটি সঠিকভাবে রঙ নামে একটি এনাম মান সেট করে এবং সেট করে, তাই সম্পত্তিটির নাম রঙ হয়।

এবং তারা উপরোক্ত গাইড ব্যবহার করে উদাহরণ এখানে:

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