আপনি কীভাবে সি # তে আপনার ব্যক্তিগত ভেরিয়েবলের নাম রাখবেন? [বন্ধ]


25

সেরা অনুশীলনটি কী, সি # তে ব্যক্তিগত ভেরিয়েবলের জন্য সর্বাধিক গৃহীত নামকরণ কনভেনশন?

  1. private int myInteger;
  2. private int MyInteger;
  3. private int mMyInteger;
  4. private int _myInteger;
  5. private int _MyInteger;
  6. রহস্যময় অন্যান্য বিকল্প

আপনি কোনটি ব্যবহার করেন এবং কেন? (আমার সংস্থা সি # তে মোটামুটি নতুন এবং আমি আমাদের কোডিং স্ট্যান্ডার্ডে প্রবেশ করার চেষ্টা করতে সবচেয়ে বেশি "শিল্প অনুমোদিত" পদ্ধতি বেছে নিতে চাই))


অটো-ইমপ্লিমেন্ট প্রোপার্টি কেন ব্যবহার করবেন না? msdn.microsoft.com/en-us/library/bb384054.aspx
কাইল ব্যালার্ড

1
সি # এর জন্য মান রয়েছে, স্ট্যাকওভারফ্লো
তামারা উইজসম্যান

7
জনসাধারণের মধ্যে ব্যক্তিগত ভেরিয়েবল সম্পর্কে কথা বলা ভাল নয়। দুঃখিত, শুধু ছিল।
সি

আমি কেবলমাত্র একটি পদ্ধতিতে স্থানীয় সুযোগের মধ্যে _সোমভেরিয়েবল ব্যবহার করি ব্যতীত আজহেগ্লোভ (এম_সোমভেরিয়েবল) হিসাবে একই ব্যবহার করি।
লর্ড-ফু

7
@ মার্ক আমি মনে করি এটির পরামর্শ দেওয়ার জন্য এটি "ব্যক্তিগত সদস্য" হওয়া উচিত।
অ্যাপসিলনভেক্টর

উত্তর:


44

এমএসডিএন ক্লাস ডিজাইনের গাইডলাইনগুলি http://msdn.microsoft.com/en-us/library/ta31s3bc.aspx বিকল্প 1 - myInteger এর পরামর্শ দেয়।

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


1
পুনরায় ভাগ না করা পর্যন্ত আমি অক্ষরটি অপছন্দ করেছি inte এখন আমি টাইপ করতে পারি myIntegerএবং এটি মিলবে _myInteger। তবে আমি জানতাম না যে এমএসডিএস বলে _ _
ভ্যাকানকো

4
আপনি যদি বিকল্প 1 ব্যবহার করেন তবে আমি কীভাবে বলতে পারি যে myIntegerকোনও পদ্ধতির পরিবর্তক স্থানীয়, বা একটি বেসরকারী শ্রেণীর সদস্য কিনা ?
উইজার্ড 79

4
@ লরেঞ্জো this.myInteger;)
TWith2Sugars

12
তবে ... "এটি" 4 টি অক্ষর এবং "_" কেবল একটি! আসলে, সেই গাইডলাইনটি অনেক অর্থবোধ করে তবে আমার অফিসে প্রত্যেকেই আন্ডারস্কোর পছন্দ করে এবং যে কোনও কারণেই হোক না কেন "এটি.ফু" দেখলে ঘৃণা করে। কখনও কখনও কেবলমাত্র সেই নির্দেশিকাগুলি হ'ল এটি আপনার কর্মক্ষেত্রের উপর চাপ দেয়।
কোডেক্সআর্কানিয়াম

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

25

আমি উপরে # 4 বিকল্প ব্যবহার:

private int _myInteger;

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


5
আমি একমত নই যে এটি পড়া সহজ, বিশেষত যদি আপনাকে বেশ কয়েকটি ভেরিয়েবলের সাথে পরিচালনা করতে হয়।
রেস্টুটা

15

আমি নিম্নলিখিত নামকরণের স্কিমটি ব্যবহার করি:

  • স্থানীয় স্কোপড ভেরিয়েবলগুলির জন্য 1 ম (মাইন্টিজার)
  • সর্বজনীন বৈশিষ্ট্যগুলির জন্য ২ য় (মাইইঞ্জের)
  • চতুর্থ (_myInteger) ব্যক্তিগত ভেরিয়েবলের জন্য

14

আমি মনে করি 4 বিকল্পটি সত্যই সর্বাধিক পঠনযোগ্য বিকল্প। এটি আপনাকে এটি করতে সহায়তা করে:

public Person(string name, int age) 
{
    this.name = name;
    this.age = age;
}

এটি সমস্ত ব্যক্তিগত সদস্যকে আরও লক্ষণীয় করে তোলে। নিম্নলিখিত উদাহরণে, হেক কোথা ageথেকে আসছে? বাছাইপর্ব ছাড়া thisএটি বলা শক্ত।

private void Method()
{
    var x = 2;
    var y = age + x;
}

এটি বুঝতে সহজ উপায়:

private void Method()
{
    var x = 2;
    var y = _age + x;
}

1
আমি আপনার প্রথম উদাহরণের শপথ করতাম, তবে কিছু সময়ের জন্য বিকল্প # 4 চেষ্টা করার পরে আমি ব্যক্তিগত ক্ষেত্রগুলির জন্য একটি উপসর্গ হিসাবে আন্ডারস্কোরগুলি বেশি পছন্দ করি।
জেরেমি ওয়েইব

2
আমি বলছি, ব্যক্তিগত ভেরিয়েবলের জন্য 1 ব্যবহার করুন, বৈশিষ্ট্যে ব্যবহৃত ব্যক্তিগত ভেরিয়েবলের জন্য 4 ব্যবহার করুন।
ইভান প্লেস

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

10

প্রথমে, পাস্কাল কেসিং সাধারণত শ্রেণীর জনসাধারণের সম্পত্তি, কনসেট, পদ্ধতি, ইত্যাদির জন্য সংরক্ষিত। সুতরাং আমি 2 এবং 5 এড়িয়ে যাব।

দ্বিতীয়ত, হান্টির স্বরলিপি। নেট বিশ্বে নিরুৎসাহিত করা হয়েছে, সুতরাং (আহ, আমার মনে হয়) 3 ঠিক আছে। ধরে নিচ্ছি যে 3 দিয়ে যা চলছে।

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

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


2
ক্লাস ভেরিয়েবলের জন্য আপনি কেন _ ক্যামেলসেসিং ব্যবহার করবেন তা আমি বুঝতে পারছি না, কারণ এটি সাধারণত ক্লাস ভেরিয়েবল বলে obvious
বিকল্প

1
@ না, এটি ইন্টেলিজেন্সে সুস্পষ্ট নয়। মনে রাখবেন, ক্ষেত্রগুলিতে (শ্রেণি-স্কোপযুক্ত ভেরিয়েবলগুলি) প্রায় প্রায় একই পদ্ধতিতে স্কোপড ভেরিয়েবলগুলির একই আইকন থাকে, তাই আপনি যদি ঘনিষ্ঠভাবে না তাকান তবে সেগুলি হুবহু দেখতে একইরকম। আন্ডারস্কোর তাদেরকে দৃষ্টিভঙ্গি করে তুলতে এবং তাদের একত্রে গোষ্ঠী বজায় রাখতে সহায়তা করে, যা আপনি প্রায়শই ব্যবহার না করা হলে (যা আপনাকে রাষ্ট্রের মতো হওয়া উচিত নয় এটি বাগ ফ্রি প্রোগ্রামিংয়ের শত্রু) helps
ছিড়ে ফেলেছে

আমি ইন্টেলিজেন্স সম্পর্কে কখনও কিছু বলিনি। আমি কালার.ক্লাসমেথোদ () এবং মাই কালার.ইনস্ট্যান্স ম্যাথোড () এর মধ্যে পার্থক্যের কথা বলছি, যেহেতু এটি স্পষ্ট হওয়া উচিত যেহেতু রঙ একটি শ্রেণি, ক্লাসমেথোদ () একটি শ্রেণি পদ্ধতি is
বিকল্প

@ আপনাকে এর আগে: I don't understand why you would use _camelCasing for class variables আপনি পরে: I'm talking about the difference between Color.ClassMethod() and myColor.InstanceMethod()আমি বিভ্রান্ত থাকাকালীন আমাকে ক্ষমা করুন। শোনো, আমি ক্লাস ভেরিয়েবলগুলি খুব কমই ব্যবহার করি, সুতরাং _ টিপে এবং তাদের সমস্তগুলি ইন্টেলিজেন্সে সুন্দর এবং গোষ্ঠীভুক্ত করে তাদের নামগুলি মনে করিয়ে দেওয়া ভাল।
ছিড়ে ফেলেছে

2
@ ম্যাথেপিক: উইল যখন "ক্লাস ভেরিয়েবল" বলবে তার অর্থ (ব্যক্তিগত) উদাহরণ ক্ষেত্র। আপনি স্থির সদস্যদের অর্থ যা বোঝাতে চেয়েছেন তা আপনি ব্যাখ্যা করেছেন বলে মনে হয়; তবে সে যা বলেছিল তা নয়।
ড্যান তাও

4

private int integer

আপনি যদি কোনও পদ্ধতির সুযোগে সদস্য এবং স্থানীয় ভেরিয়েবলের মধ্যে বিভ্রান্ত হন তবে আপনাকে সম্ভবত রিফ্যাক্টর লাগানো দরকার।


+1: আমি বিশ্বাস করি এটিই মূল বিষয়। বিটিডাব্লু: আমি এর উত্সটি দেখছি, তবে নামটি integerআরও ভাল করে বানানো যেতে পারে, সম্ভবত value?
ওল্ফ

2

আমি বিশ্বাস করি এটি করার সর্বোত্তম উপায় (যাইহোক সি # /। নেট) 2 এবং 6 এর সংমিশ্রণ:

private int MyInteger { get; set; }

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


2

আমি # 4 বিকল্পটি করি কারণ এসএসসিএলআই দেখতে দেখতে এটির মতো, তবে সত্যই আমি প্রাইভেট ভেরিয়েবলের নামকরণের বিষয়ে তেমন যত্ন করি না। পাবলিক একটি ভিন্ন গল্প।

বিটিডব্লিউ আপনি এম_মাইইন্টেজারকে ভুলে গেছেন


2

আমি এটিকে "আমার" কিছু বলব না!

তবে আমি বলব

class C
{
     int VariableName { get; set; }
}

প্রায়শই এটি সুস্পষ্ট পরিবর্তনশীল থাকার চেয়ে ভাল হয়। আমার যদি স্পষ্টত ব্যক্তিগত ভেরিয়েবল থাকে আমি এটিকে কল করবint _variableName;


1

সি ++ তে আমি _ ব্যবহার করার প্রবণতা রাখি কারণ আমি সম্পাদকগুলিকে অনেকগুলি স্যুইচ করি যা এটি আমার ব্যক্তিগত কিনা তা দেখার অনুমতি দেয় না।

সি # এর জন্য আমি _ ছেড়ে চলে যাব ভিজুয়াল স্টুডিও আমাকে এটি ব্যক্তিগত কিনা তা দেখার অনুমতি দেয়।

আমি এটি করার জন্য উট কেস উপায় ব্যবহার করার প্রবণতা রাখি।


1

আমি 4 ( private int _myInteger;) ব্যবহার করি কারণ:

private int myInteger;

এইভাবে আমি আমার স্থানীয় ভেরিয়েবলের নাম দেব।

private int MyInteger;

এইভাবেই আমি নামগুলি স্থির রাখি।

private int mMyInteger;

এটি সি # স্টাইল নয়।

private int _MyInteger;

এটি দেখতে অদ্ভুত লাগছে।


1

আন্ডারস্কোর সহ

বিল ওয়াগনার কেন কার্যকর সি # তে ব্যাখ্যা করেছেন । কিন্তু আমি পূর্ণসংখ্যা একটি নাম না হবে আমার পূর্ণসংখ্যা , _age বা _length মত আরো ভাল কিছু। উদাহরণের নামটিতে টাইপনামটি অন্তর্ভুক্ত করা একটি ভয়ঙ্কর অনুশীলন। নামগুলি স্ব-বর্ণনামূলক হওয়া উচিত এবং যেহেতু সি # টাইপ-সেফ টাইপগুলি সর্বদা পাওয়া যায়।


1
হ্যাঁ, যদিও এটি একটি উদাহরণ ছিল।
ভ্যাকাকানো

1

আপনার আরও নির্দিষ্ট উদাহরণ দেওয়া দরকার তবে:

private int count, private int badFileCount,private static readonly int ReconnectAttemptsLimit

উপায় দ্বারা, আপনি এই সব পেতে বিনামূল্যে যখন আপনি ইনস্টল এবং সর্বশেষ এবং সর্বশ্রেষ্ঠ ব্যবহার শুরু MSFT Stylecop


0

আমি বিকল্প 5 দিয়ে যাচ্ছি: private int _MyFoo

যদিও _ মাইফুতে আমি আসল প্রতিযোগিতামূলক কোনও সুবিধা দেখতে পাচ্ছি না।


0

প্রাইভেট ভেরিয়েবলের জন্য ক্যামেল কেসিং ব্যবহার করুন myInteger

পূর্ববর্তী বিবেচনা করুন _যদি ভেরিয়েবল বিভ্রান্তি হ্রাস করার জন্য কোনও সম্পত্তির ব্যাকআপ
হয়- _myPropertyসম্পত্তির জন্য পরিবর্তনশীলMyProperty


0

আমার রিশার্পার এর নামগুলি আমার ভেরিয়েবলগুলি রয়েছে, কেবল আমার নয় অন্য প্রত্যেকেও এটি করে। প্রকল্পটিতে প্রচুর পরিমাণে ধারাবাহিক গর্ত রয়েছে।


0

জুভাল লোয়ের আইডিজাইন সি # কোডিং স্ট্যান্ডার্ড বেশ জনপ্রিয়। এই স্ট্যান্ডার্ডটি "এম_" (বিকল্প 6) দিয়ে ব্যক্তিগত সদস্যের ভেরিয়েবলগুলি উপসর্গের প্রস্তাব দেয়। আমাদের দলে আমরা এটাই করি।

private int m_myInteger;

বিকল্প 4 ( _myInteger) এই স্ট্যান্ডার্ডের একটি গ্রহণযোগ্য প্রকরণ।

আমি এমএসডিএন সুপারিশটি পছন্দ করি না ( myInteger), কারণ স্থানীয় ভেরিয়েবল থেকে কোনও ব্যক্তিগত সদস্যকে বলা মুশকিল। অবশ্যই তাদের পরামর্শটি ব্যক্তিগত সমস্যাগুলির সাথে যোগ্যতা অর্জন করে এই সমস্যাটি সমাধান করে this, যা আমার কাছে অপ্রয়োজনীয় বলে মনে হয়।

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