c# - Enum নামকরণ কনভেনশন-বহুবচন




.net enums (6)

অন্য থ্রেড সি # এননাম এবং মিলে যাওয়া সম্পত্তির জন্য নামকরণের কনভেনশন কেউ আমাকে মনে করে যে এটি একটি খুব ভাল ধারণা:

"আমি জানি যে আমার পরামর্শটি .NET নামকরণ কনভেনশনগুলির বিরুদ্ধে যায়, তবে আমি ব্যক্তিগতভাবে 'ই' এবং 'এফ' দিয়ে এনম ফ্ল্যাগগুলি (যেমন আমরা 'আমি' দিয়ে প্রিফিক্স ইন্টারফেসের অনুরূপ) সাথে ম্যানুয়ালগুলি উপসর্গ করে থাকি।"

https://code.i-harness.com

আমি অনুরূপ পড়ার সত্ত্বেও এই প্রশ্ন জিজ্ঞাসা করছি কিন্তু এন এন এবং মিলিত সম্পত্তিটির জন্য সি # নামকরণ কনভেনশনে যা চাই তা ঠিক নয়

আমি বহুবচন মধ্যে enums নাম এবং তারপর একবচন হিসাবে তাদের 'ব্যবহার' একটি প্রবণতা আছে খুঁজে পাওয়া যায় নি, উদাহরণ:

public enum EntityTypes {
  Type1, Type2
}

public class SomeClass {
  /*
    some codes
  */

  public EntityTypes EntityType {get; set;}

}

অবশ্যই এটি কাজ করে এবং এটি আমার শৈলী, কিন্তু কেউ কি এই সম্মেলনের সঙ্গে সম্ভাব্য সমস্যা খুঁজে পেতে পারে? আমার "স্থিতি" শব্দটির নাম "স্থিতি" আছে যদিও:

public enum OrderStatuses {
  Pending, Fulfilled, Error, Blah, Blah
}

public class SomeClass {
  /*
    some codes
  */

  public OrderStatuses OrderStatus {get; set;}

}

অতিরিক্ত তথ্য: সম্ভবত আমার প্রশ্ন যথেষ্ট পরিষ্কার ছিল না। আমার সংজ্ঞায়িত enum ধরনের ভেরিয়েবল নামকরণ করার সময় আমি প্রায়ই কঠিন চিন্তা করতে হবে। আমি সর্বোত্তম অনুশীলন জানি, তবে এটি সেই ভেরিয়েবলগুলির নামকরণের আমার কাজকে সহজ করতে সাহায্য করে না।

আমি সম্ভবত আমার সমস্ত enum বৈশিষ্ট্যগুলি প্রকাশ করতে পারি না ("স্থিতি" বলুন) "MyStatus" হিসাবে।

আমার প্রশ্ন: যে কেউ উপরে বর্ণিত আমার সম্মেলনের সঙ্গে সম্ভাব্য সমস্যা খুঁজে পেতে পারেন? এটা ভাল অনুশীলন সম্পর্কে না।

প্রশ্ন rephrase:

আচ্ছা, আমার মনে হয় আমি এই প্রশ্নটি জিজ্ঞেস করবো: কেউ কি এনাম টাইপের নামকরণের একটি ভাল জেনারিক উপায় বের করতে পারে যেমন, যখন ব্যবহার করা হয়, তখন enum 'instance' এর নামকরণ করা খুব সোজা হবে?


আপনি যদি সহজবোধ্য, এখনও নিষিদ্ধ কোড লিখতে চেষ্টা করছেন:

    public class Person
    {
        public enum Gender
        {
            Male,
            Female
        }
        //Won't compile: auto-property has same name as enum
        public Gender Gender { get; set; }  
    }

আপনার বিকল্পগুলি হল:

  1. এমএস সুপারিশ উপেক্ষা করুন এবং enum নামের একটি উপসর্গ বা প্রতিক্রিয়া ব্যবহার করুন:

    public class Person
    {
        public enum GenderEnum
        {
            Male,
            Female
        }
        public GenderEnum Gender { get; set; }
    }
  2. শ্রেণির বাইরে enum সংজ্ঞা, অগ্রসরভাবে অন্য বর্গ মধ্যে সরানো। এখানে উপরের একটি সহজ সমাধান:

    public class Characteristics
    {
        public enum Gender
        {
            Male,
            Female
        }
    }
    public class Person
    {
        public Characteristics.Gender Gender { get; set; }  
    }

এই কয়েকটি স্থানগুলির মধ্যে একটি যেখানে আমি এই সম্মেলনে যাওয়ার সাথে সাথে অসম্মতি জানাতে পারি। টিবিএইচ, আমি ঘৃণা করি যে একটি enum সংজ্ঞা এবং এর দৃষ্টান্ত একই নামের থাকতে পারে। আমি "Enum" এর সাথে আমার সমস্ত Enums পোস্টফিক্স করেছি বিশেষ করে কারণ এটি কোনও নির্দিষ্ট ব্যবহারের মধ্যে এটির প্রসঙ্গটি কী তা স্পষ্ট করে তোলে। আইএমও এটি কোড অনেক বেশি পঠনযোগ্য করে তোলে।

public enum PersonTypesEnum {
    smart,
    sad,
    funny,
    angry
}


public class Person {   
    public PersonTypesEnum PersonType {get; set;}
}

কেউ কি কখনও enum এবং কি এর উদাহরণ কি বিভ্রান্ত হবে।


একটু দেরিতে আসছে ...

আপনার প্রশ্নের এবং আপনার উল্লেখ করা একটি (যা আমি জিজ্ঞাসা ;-) মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য আছে:

আপনি শ্রেণী থেকে enum সংজ্ঞাটি রাখুন, যা আপনাকে enum এবং সম্পত্তিটির জন্য একই নাম রাখতে দেয়:

public enum EntityType { 
  Type1, Type2 
} 

public class SomeClass { 
  public EntityType EntityType {get; set;} // This is legal

}

এই ক্ষেত্রে, আমি এমএস নির্দেশিকা অনুসরণ করব এবং enum (পতাকাগুলির জন্য বহুবচন) জন্য একটি একক নাম ব্যবহার করব। এটা probaby সহজতম সমাধান।

আমার সমস্যা ( অন্য প্রশ্নের মধ্যে ) যখন enum শ্রেণীকক্ষের মধ্যে সংজ্ঞায়িত করা হয়, Enum ঠিক ঠিক নামে নামক একটি সম্পত্তি ব্যবহার প্রতিরোধ।


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

আপনার সম্পাদনা করা প্রশ্নটি পড়ার পরে, আমার মনে হয় যে আপনি মনে করতে পারেন যে সম্পত্তি নাম বা পরিবর্তনশীল নাম Enum টাইপ নাম থেকে আলাদা হতে হবে ... এটি হয় না। নিম্নলিখিত পুরোপুরি সূক্ষ্ম ...

  public enum Status { New, Edited, Approved, Cancelled, Closed }

  public class Order
  {
      private Status stat;
      public Status Status
      { 
         get { return stat; }
         set { stat = value; }
      }
  }

সেরা অনুশীলন - একবচন ব্যবহার করুন। আপনি একটি Enum তৈরি যে আইটেম একটি তালিকা আছে। আপনি Versions.1_0 বলতে যখন তালিকায় একটি আইটেম ব্যবহার করে অদ্ভুত শব্দ। এটি সংস্করণ Version.1_0 বলতে আরও অর্থ দেয় কারণ শুধুমাত্র একটি 1_0 সংস্করণ রয়েছে।







plural