পরিবর্তনশীল নামকরণের সম্মেলনগুলি? [বন্ধ]


11

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

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

দ্বিতীয় জিনিসটি যা আমাকে পুনরায় মূল্যায়ন করার জন্য উত্সাহিত করেছিল তা হ'ল জিইআইআই ইভেন্ট হ্যান্ডলারের জন্য আমার নামকরণের সম্মেলন। আমি সাধারণত কন্ট্রোলনাম_একশনের ভিএস স্ট্যান্ডার্ড ব্যবহার করি এবং আমার নিয়ন্ত্রণগুলি সাধারণত গ্রাহকদের কাছে কী দৃশ্যমান হয় এবং একইরকম নামযুক্ত ভেরিয়েবলের সাথে ডিল করার সময় কী হয় না কোডটি স্পষ্ট করতে সহায়তা করতে (প্রত্যয় হিসাবে, হানি সংকেত ব্যবহার করে) তাই আমি ঠিক_বিটিএন_ ক্লিকের সাথে শেষ করি ( ), সে সম্পর্কে আপনার মতামত কী? আমার কি পুনঃভাগের কনভেনশনে আত্মত্যাগ করা উচিত বা অন্যান্য সমানভাবে বৈধ বিকল্প রয়েছে?

উত্তর:


19

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

সরঞ্জামটিকে আপনার স্ট্যান্ডার্ডগুলি সংজ্ঞায়িত করতে দেবেন না - এটি নিজের প্রয়োগের জন্য ব্যবহার করুন।

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


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

যথেষ্ট ভাল, আমি আরও কিছু ব্যক্তিগত অভিজ্ঞতার বিবরণ দেওয়ার জন্য সম্পাদনা করেছি।
mjhilton

11
"সরঞ্জামটি আপনার মানকে সংজ্ঞা দিতে দেয় না" এর জন্য +1
tecie007

"সরঞ্জামটি আপনার মানকে সংজ্ঞায়িত করতে দিবেন না" সবেমাত্র আমার সর্বকালের অন্যতম প্রিয় প্রোগ্রামিং কোট হয়ে গেছে।
সেগি

18

শ্রদ্ধার সাথে

তবে কি আন্ডারস্কোর প্রয়োজনীয়? আপনি কি স্বাচ্ছন্দ্য বোধ করেন?

আন্ডারস্কোর ব্যবহার সম্পর্কে আমি একটি জিনিস খুব পছন্দ করি তা হ'ল এটি "এই" এর ব্যবহার নাটকীয়ভাবে হ্রাস করে।

বিবেচনা:

public void Invoke(int size) {
    _size = size;
}

আন্ডারস্কোর ছাড়া আপনাকে লিখতে হবে:

public void Invoke(int size) {
    this.size = size;
}

যা সম্ভবত এর সূক্ষ্ম ত্রুটিটির পরিচয় দেয়:

public void Invoke(int size) {
    size = size;    // urgh ... no this! 
}

উপরন্তু, কোড সমাপ্তি ক্লিনার কারণ কেবল আন্ডারস্কোরটি বেঁধে আপনি কেবলমাত্র বেসরকারী ক্ষেত্রের একটি তালিকা পাবেন, "" এই "এর সাথে আপনি সমস্ত কিছুর একটি তালিকা পান।

শ্রদ্ধার সাথে

সাধারণত হাঙ্গেরিয়ান স্বরলিপি ব্যবহার করুন

ফ্রেমওয়ার্ক ডিজাইনের গাইডলাইন: কনভেনশন, আইডমস এবং পুনরায় ব্যবহারযোগ্য। নেট গ্রন্থাগারগুলির জন্য প্যাটার্নস বলেছেন:

হাঙ্গেরীয় স্বরলিপি ব্যবহার করবেন না

অস্পষ্টতার জন্য খুব কম জায়গা ছেড়ে দেওয়া:)


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

পাইজকোমন ... আপনি কি দয়া করে আমাকে এটি উল্লেখ করতে পারেন যেখানে এটি উল্লেখ করেছে? একটি তাত্ক্ষণিক চেহারা এবং আমি পাবলিক পদ্ধতিতে পাস করা ভেরিয়েবলগুলিতে ক্যাপিটালগুলি ব্যবহার করার কোনও রেফারেন্স পাইনি। তবে উদাহরণস্বরূপ, দ্বিতীয় সংস্করণের পি 118-তে, এমন একটি উদাহরণ রয়েছে যেখানে জনসাধারণের পদ্ধতিগুলি মূলধনগুলি নয় বরং লোয়ার কেস ব্যবহার করছে। "সর্বজনীন শূন্য রাইটিং (মুল্য মান);"
ডাকোটা উত্তর

10
নাম সংঘর্ষের ক্ষেত্রে আমি বলব যে this.sizeএটি এর চেয়ে পরিষ্কার _size। আন্ডারকর্ডেড নামটি ব্যবহার করা সূক্ষ্ম ত্রুটি প্রতিরোধ করে না, আপনি এখনও নিজের জন্য আকার নির্ধারণ করতে পারেন, যদিও আশা করি আপনার সংকলক আপনাকে বলবে।
এডিএ-কিএ মর্ট-ওরা-y

2
অবশ্যই, আপনি সর্বদা নিজেকে কিছু বরাদ্দ করতে পারেন। মধ্যে প্রধান পার্থক্য this.sizeএবং _sizeদৃঢ়তা নেই। সঙ্গে this.sizeএটি ঐচ্ছিক হয়। উদাহরণস্বরূপ, যদি অন্য একটি বেসরকারী ক্ষেত্র নামে ডাকা হত, কোডটি nameব্যবহার করার দরকার নেই this.name, আমি nameকোনও সংঘাত ছাড়াই কেবল সহজেই ব্যবহার করতে পারি । কারণ thisকখনও কখনও ব্যবহার করা যেতে পারে, এবং অন্যান্য সময় নয় কেন ব্যবহার thisকরা নিকৃষ্ট হয়। অন্যদিকে, কোনও অস্পষ্টতা নেই _...
ডাকোটা উত্তর

2
উঘ ... লোকেরা এখনও কেন এমন ভাষাগুলিতে আন্ডারস্কোর ব্যবহার করে যা আরও ভাল উপায় সরবরাহ করে।
রিগ

8

ধারাবাহিকতা আসলেই মূল চাবিকাঠি। এটি এবং স্বচ্ছতা, অর্থাত্ ক্রিপ্টিক হবেন না বা সবকিছু সংক্ষেপ করে টাইপিং সংরক্ষণ করার চেষ্টা করবেন না। ইন্টেলিসেন্স হ'ল আপনার টাইপিং সেভার, ক্রিপ্টিক নয় (তবে সংক্ষিপ্ত!) নাম।


2
+1: একটি সম্মেলন চয়ন করুন এবং এটি আটকে দিন। যে কোনও কিছুই করা হবে (সিস্টেম হাঙ্গেরিয়ান বাদে)।
ডোনাল ফেলো

ধারাবাহিকতা একমাত্র জিনিস নয়। উদাহরণস্বরূপ, কেউ নিজের কোডের জন্য একটি সামঞ্জস্যপূর্ণ নামকরণের কনভেনশন চয়ন করতে পারেন, তবে যদি সেই সম্মেলনটি অন্যান্য নামকরণের কনভেনশন থেকে বর্ধমানভাবে পৃথক হয়, তবে অন্যান্য গ্রন্থাগারগুলি ব্যবহার করার সময় ... অবশ্যম্ভাবী অসঙ্গতি থাকবে। উদাহরণস্বরূপ, আমি যদি জাভাতে সি # থেকে সম্পত্তি নামকরণের কনভেনশনগুলি ব্যবহার করতে পছন্দ করি তবে অন্যান্য সমস্ত সিস্টেমে কোড কীভাবে লেখা হয় তার সাথে আমি সামঞ্জস্য বোধ করব না। আমি লিখতে পারি order.Size()(এর বিপরীতে order.getSize()) তবে যেহেতু অন্যান্য পাঠাগারগুলি গেটার এবং সেটটার ব্যবহার করে আমার কোডটি সামঞ্জস্যপূর্ণ হবে না।
ডাকোটা উত্তর

স্পষ্টতই কোনও ব্যক্তি যে কোনও সম্মেলন ব্যবহারের সিদ্ধান্ত নেয় তার পিছনে কিছু বুদ্ধিমান চিন্তা থাকা উচিত, তবে ধারাবাহিকতা সবচেয়ে গুরুত্বপূর্ণ বিষয়।
রিচার্ড

@ ডকোটা নর্থ - বাড়ির স্টাইলটি বোধগম্য হয় তবে এর বাইরেও, ধারাবাহিকতা হ'ল মূল বিবেচনা। যতক্ষণ না কনভেনশনটি প্রাচীরের বাইরে না থাকে, তত সহজেই বাহ্যিক / নতুন বিকাশকারীরা এটি চয়ন করতে পারেন। প্রকৃতপক্ষে, কোনও অনিশ্চয়তা দূর করার জন্য, এটি বাড়ির স্টাইলটি প্রকাশ করার পক্ষে মূল্যবান।
সিজেএমউকে

7

সি # তে আন্ডারস্কোর সহ সুরক্ষিত বা সর্বজনীন নাম সাধারণ ভাষা নির্দিষ্টকরণের বিরুদ্ধে। এটি শুধুমাত্র ব্যক্তিগত সদস্যদের ক্ষেত্রে সঠিক।

এমএসডিএন থেকে:

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

দেখুন: http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx

এখানে আপনি আন্ডারস্কোর সম্পর্কে সতর্কতা পড়তে পারেন:

আন্ডারস্কোর (_) দিয়ে শুরু হওয়া এলিমেন্টের নামগুলি কমন ল্যাঙ্গুয়েজ স্পেসিফিকেশনের (সিএলএস) অংশ নয়, তাই সিএলএস-কমপ্লায়েন্ট কোড কোনও উপাদান ব্যবহার করতে পারে না যা এই জাতীয় নামগুলি সংজ্ঞায়িত করে। যাইহোক, একটি উপাদান নামের অন্য কোনও পজিশনের একটি আন্ডারস্কোর হ'ল সিএলএস-সম্মতিযুক্ত।

দেখুন: http://msdn.microsoft.com/en-us/library/81ed9a62.aspx

সুরক্ষিত সদস্যরা সমস্যা হওয়ায় আপনি অন্য ভাষায় লিখিত ক্লাস থেকে উত্তরাধিকারী হতে পারেন।

তবে আপনার যদি সিএলএস-সংকলন কোডের প্রয়োজন না হয় তবে এটি আপনার ক্ষেত্রে সমস্যা নয়।


4

আমি আন্ডারস্কোরগুলি পছন্দ করি। আপনি প্রথম নজরে জানেন যে পরিবর্তনশীল একটি শ্রেণীর সদস্য এবং ব্যক্তিগত।

অবশ্যই আইডিই আপনাকে বলতে পারে যে আপনি যখন এটির উপরে মাউস ঘোরাবেন তবে "প্রথম নজরে" বীট করা যায় না। আপনি কীভাবে স্থানীয় ভেরিয়েবল এবং আপনার চোখের সাথে কীভাবে সদস্যের পরিবর্তনশীল তা জানেন। কোনও স্ক্রোলিং বা মাউস হওয়ার প্রয়োজন নেই।

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


1

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

  • এটি ইনস্টল করা সহজ (কেবলমাত্র ডিফল্ট সাথে যেতে হবে, এমনকি আমি 20 বার এন্টার টিপতে এবং এটি চালিয়ে যেতে পারি)
  • বাগগুলি সাধারণত ডিফল্ট সেটিংসের বাইরে চলে যায়, প্রায়শই এটির মূল কনফিগারেশন আমি সেটআপ করি যা প্রথমবারের জন্য কোনও ত্রুটিটি প্রকাশ করে
  • সরঞ্জাম চেইন বিক্রেতা সম্ভবত আমার চেয়ে এটি সম্পর্কে আরও বেশি জানে, তাই তারা কোনও কারণে এটি সেভাবে তৈরি করেছিল। বিশেষজ্ঞদের কে ভুল তা সিদ্ধান্ত নেওয়ার জন্য আমি কে (আমি তাদের বিশেষজ্ঞ হিসাবে বিবেচনা করি, কারণ আমি তাদের সরঞ্জাম কিনেছি)
  • আপনাকে কখনই কোনও পরিচালক দ্বারা বিক্রেতাদের পছন্দটি রক্ষা করতে হবে না - "এটি তাদের পরামর্শ দেয়"
  • নতুন লোকটি আপনাকে "কেন" এবং "এটি সেইভাবে ভাল" দিয়ে ত্রুটি করবে না - যখন প্রতিটি উত্তর হয় "কারণ তারা সিদ্ধান্ত নিয়েছে ..."

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

মনে রাখবেন যে প্রতিটি পরিবর্তনকে বজায় রাখতে চলমান ব্যয় (আসল এবং লুকানো) রয়েছে) যত কম সেখানে ব্যয়ও কম হবে। উদাহরণস্বরূপ - আমি যে নতুন লোকটির কথা উল্লেখ করেছি - কোনও পরিবর্তন মানে না যে সে তাদের ম্যানুয়ালটি পড়তে পারে। পুনরায় কনফিগার করা - আপনাকে সংযোজন লিখতে হবে, এটিকে otehr স্টাফ দিয়ে সরিয়ে রাখতে হবে, এটিকে অবসর নিতে হবে এবং তাদের ম্যানুয়ালটি পড়ার পরে এটি পড়তে হবে। 2 ম্যান শপের জন্য সমস্যা নাও হতে পারে তবে 100 জন শপের দোকান কী?


1

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

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


1

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

sDI

এবং এটি প্রসারিত হয়েছে

someDescriptiveIdentifier

আপনার মতো নাম থাকলে কিছুটা টাইপ করে সংরক্ষণ করে

someDescriptiveName, someOtherDescriptiveName, someOtherButNotTheSameDescriptiveName

যা আমি "বর্ণনামূলক নামকরণ মোডে" যখন উত্পন্ন করি।

আন্ডারস্কোরগুলি ব্যবহার করে আমি নির্ধারণ করতে পারি যে আমি কোন নামটি স্বয়ংক্রিয়ভাবে পূর্ণ করতে চাই

someDescriptiveIdentifier

অথবা

_someDescriptiveClassMember

আশা করি আমার ব্যাখ্যা যথেষ্ট পরিষ্কার হয়েছে :)

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