আপনি কি ভেরিয়েবলের সংক্ষিপ্তসার সহ পরিবর্তনশীল নামগুলি উপসর্গ করেন? (হাঙ্গেরিয়ান স্বরলিপি) [বন্ধ]


37

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

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

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

সুতরাং, আপনি হাঙ্গেরিয়ান নোটেশন সম্পর্কে কেমন অনুভব করেন? আপনি এটি ব্যবহার করেন? কেন?



7
আপনি কোন প্রোগ্রামিং ভাষা ব্যবহার করছেন?
ল্যারি কোলেম্যান

3
আসলে এটি সূক্ষ্ম নয় - আপনার কোডিং স্ট্যান্ডার্ড থাকা উচিত (আনুষ্ঠানিক বা অন্যথায়), আমার মতে এটি কখনও ঠিক নয় ... তবে অন্যরা এতে দ্বিমত পোষণ করতে পারে।
মার্ফ

@ ল্যারি: আমরা বেশিরভাগ সি এবং সি ++ ব্যবহার করছি, এখানে এবং সেখানে এসেম্ব্লার এবং লুয়ার বিস্ফোরণ।
11'5 এ বস্টিবে

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

উত্তর:


77

যখন বেশিরভাগ লোকেরা "হাঙ্গেরিয়ান নোটেশন" বলেন তারা আসলে " সিস্টেম হাঙ্গেরিয়ান " সম্পর্কে কথা বলছেন ।

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

অ্যাপস হাঙ্গেরিয়ানগুলিতে, আপনি ভেরিয়েবল নামের "টাইপ" এনকোড করেন না, আপনি ভেরিয়েবলের "ধরণের" এনকোড করেন। সুতরাং না nWidth, তবে pxWidthবা emWidth(যথাক্রমে "পিক্সেল প্রস্থ" বা "প্রস্থে" প্রস্থে ")। না strNameকিন্তু sNameবা usName( "নিরাপদ নাম" বা "অনিরাপদ নাম" যথাক্রমে জন্য - ব্যবহারকারীদের কাছ থেকে দরকারী যখন গ্রহণ ইনপুট: অনিরাপদ স্ট্রিং)।

ব্যক্তিগতভাবে, আমি সাধারণত কোনটি নিয়ে মাথা ঘামাই না। আমি যদি এমন কিছু না করি যা স্পষ্টভাবে কোনও মানের "ধরণের" রূপান্তরিত করে (উদাহরণস্বরূপ, আমি অতীতে "px" এবং "em" উপসর্গটি ব্যবহার করেছি কারণ এটি pxArea = emWidth * emHeightসুস্পষ্টর মতো ভুল করে )।

জোয়েলের নিবন্ধটিও " ভুল কোড দেখায় ভুল হয় " দেখুন


2
বিষয়টিতে সিমোনির লেখাটি দেখুন: তিনি হলেন হাঙ্গেরিয়ান ভাষার মূল প্রচারক এবং তাঁর সংস্করণটি এটি কার্যকর। msdn.microsoft.com/en-us/library/aa260976(v=vs.60).aspx
মাইকেল কোহেন

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

1
ব্যবহারকারীর rawrawUsername
ইনপুটটির

1
@ স্কট অন্য বিকল্পটি একটি দৃ .়ভাবে টাইপড টাইপ
জে কে হবে।

1
@ জেবিআর: আপনি আসলে উত্তরটি পড়েছেন? "অ্যাপস হাঙ্গেরীয়" ইন, sহয় না জন্য stringবা কিছু কিন্তু "নিরাপদ" জন্য (অথবা আমিও "নিরাপদ STRING" শুনেছি)।

31

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


6
আমাকে হাসি দিয়েছিল ... পেডেন্ট্রি, তবে "টু" একটি পদক্ষেপ, কোনও অনন্য নয়। "পড়তে" একটি অসীম।
ডারএল

@ ড্রল অবশ্যই, এটি ব্যঙ্গাত্মক শৌখিন নয়, মজাদার রেজিস্টারে ছিল: ডি
স্মার্কম্যান

1
এটা দুর্দান্ত ছিল, আমাকে হাসিয়ে দিয়েছে। :)
Corv1nus

26

প্রথমত:

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

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

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

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


21

এটি ব্যবহার করবেন না। এটি অপ্রয়োজনীয় এবং কোড পড়তে আরও কঠিন করে তোলে।


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

13

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

সিস্টেম হাঙ্গেরীয়

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

অ্যাপস হাঙ্গেরীয়

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

আলোচ্য বিষয়টি কি?

(সিস্টেম অথবা অ্যাপস) হাঙ্গেরীয় ব্যবহারের সব সম্পর্কে করছে ভুল কোড বর্ণন ভুল

যদি আপনি কিছুটা না বেরিয়েই কোনও সুরক্ষিত স্ট্রিংয়ে কোনও অনিরাপদ স্ট্রিংটি অনুলিপি করে থাকেন তবে আপনি অ্যাপস হাঙ্গেরিয়ান ব্যবহার করলে এটি ভুল মনে হবে।

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

এই উভয় পরিস্থিতিতে (অ্যাপস / সিস্টেমস) হাঙ্গেরীয় স্বরলিপিটি ভেরিয়েবলের ধরণের ক্ষেত্রে খুব কম উল্লেখ করার কারণে ফর্মাল কোড রিভিউগুলিকে দ্রুততর করে।

সার্বিক

সামগ্রিকভাবে, আমার মতে সর্বাধিক গুরুত্বপূর্ণ বিষয়টি হ'ল আপনার কোডিং মান রয়েছে have এটি সিস্টেম হাঙ্গেরিয়ান, অ্যাপস হাঙ্গেরিয়ান ব্যবহার করে নাও ব্যক্তিগত বা গোষ্ঠী পছন্দের বিষয়, যেমন ইন্ডেন্টেশন ধরণের পছন্দ ইত্যাদি etc.


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

9

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

অথবা, আরও সাফল্যের সাথে বলতে গেলে: টাইপ তথ্য টাইপ সিস্টেমে অন্তর্ভুক্ত। (দ্রষ্টব্য: এটি কোনও স্ট্যাটিক টাইপ সিস্টেম হতে হবে না it যতক্ষণ না এটি টাইপ ত্রুটিগুলি ধরেছে ততক্ষণ আমি সেগুলি কবে ধরব সেদিকে খেয়াল নেই ))

অন্যান্য বেশ কয়েকটি উত্তরে ইউনিট অফ মেজারকে হাঙ্গেরিয়ান নোটেশনের গ্রহণযোগ্য ব্যবহার হিসাবে উল্লেখ করা হয়েছে। (আমি একপ্রকার অবাক হয়েছি যে এখনও কেউ নাসা মার্স ক্লাইমেট অরবিটারের কথা উল্লেখ করেনি, যেহেতু এটি হাঙ্গেরিয়ান নোটেশন সম্পর্কিত আলোচনায় সব সময় উঠে আসে)।

এফ # তে এখানে একটি সাধারণ উদাহরণ রয়েছে:

[<Measure>] type m
[<Measure>] type ft

let someLength      = 48.15<m>
let someOtherLength = 16.2342<ft>

someLength + someOtherLength
// someLength + someOtherLength
// -------------^^^^^^^^^^^^^^^
// error FS0001: The unit of measure 'ft' does not match the unit of measure 'm'.

দেখো মা, হাঙ্গেরিয়ান না!

যদি আমি ছিল পরিবর্তে এখানে ধরনের হাঙ্গেরীয় স্বরলিপি, ব্যবহার করা যে আমাকে সাহায্য করবে না এক বিট:

let mSomeLength       = 48.15
let ftSomeOtherLength = 16.2342

mSomeLength + ftSomeOtherLength
// > val it : float = 64.3842

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

আরও ভাল, ফ্রিংক প্রোগ্রামিং ভাষা ব্যবহার করে :

someLength      = 48.15m
someOtherLength = 16.2342ft

someLength + someOtherLength
// 53.09818416 m (length)

// Wanna know the answer in a good old fashioned American unit?
someLength + someOtherLength -> yd
// 58.06888031496062992

// Are you an astrophysicist?
someLength + someOtherLength -> parsec
// 1.7207949554318336148e-15

// ... or a fundmentalist Christian who refuses to use units invented 
// less than 2000 years ago?
someLength + someOtherLength -> biblicalcubits
// 95.893563822870765006

সুতরাং, সংক্ষেপে: আমি হাঙ্গেরিয়ান নোটেশন পছন্দ করি না। আপনার এটি কখনও ব্যবহার করা উচিত নয়।

বলা হচ্ছে, আমি মনে করি হাঙ্গেরিয়ান নোটেশন ব্যবহার করা ভাল ধারণা। কিসের অপেক্ষা?

হ্যাঁ! এই বিশেষ ক্ষেত্রে , আপনি উল্লেখ করেছেন:

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

কিন্তু যে অবিকল শুধুমাত্র যুক্তিসম্মত ব্যবহারের ক্ষেত্রে জন্য হাঙ্গেরীয় স্বরলিপি!


পিএস: আমি আন্তরিকভাবে ফ্রাঙ্কের দিকে নজর দেওয়ার পরামর্শ দিচ্ছি। এটির ম্যানুয়ালটিতে এখন পর্যন্ত সবচেয়ে ভয়ঙ্কর কিছু বাড়াবাড়ি রসিকতা রয়েছে। এটি খুব সুন্দর ভাষা :-)


যদি আমি পারতাম তবে আমি এটি 50 বার ভোট দিয়েছি।
ল্যারি কোলম্যান

1
খুব মজাদার যুক্তি! আমি আমার বর্তমান প্রকল্পে এটি চেষ্টা করতে পারি। typedef meter float...
bastibe

6

এটি কোনও বস্তু ভিত্তিক ভাষায় অর্থবোধ করে না - সবকিছুই এমন এক ধরণের যা এটি ব্যবহারের চেষ্টা করার সময় প্রকট হয়।


6

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

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

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


1
প্রকৃতপক্ষে, ভাল আইডিই (বা প্লাগইনগুলি) সাধারণত বেশ শক্তিশালী রিফ্যাক্টরিং ক্ষমতা থাকে যা ভেরিয়েবলের নামগুলি সহজেই পরিবর্তন করতে পারে।
bastibe

4
বোঝা গেছে, তবে নাম পরিবর্তনের জন্য সংস্করণ নিয়ন্ত্রণে অতিরিক্ত গোলমাল জিনিসগুলিতে সহায়তা করে না। আসুন কেবল বলে নেওয়া যাক মানটি রক্ষণাবেক্ষণের ওভারহেডকে ন্যায়সঙ্গত করে না।
বেরিন লরিটস

ভাষার উপর পাশাপাশি নির্ভর যেমন কিছু বা stongly টাইপ করা UoM জন্য সরাসরি সমর্থন stongly টাইপ করা typedefs থাকবে
জে।

6

কোন হেক!

হাঙ্গেরীয় স্বরলিপি বা অন্য কোনও স্বরলিপি ব্যবহার করবেন না। প্রোগ্রামার হিসাবে, আমাদের চলক নামের জন্য "স্বরলিপি" ব্যবহার করা উচিত নয়।

আমাদের যা করা উচিত তা হ'ল আমাদের ভেরিয়েবলের নামটি :

  • খুব সাধারণ নাম এড়িয়ে চলুন। zকোনও নামী বস্তুর প্রতিনিধিত্ব করে এমন কোনও শ্রেণীর পরিবর্তনশীল যখন এটির নাম রাখবেন না , বলুন, একটি ফোন বিল। এটা কল phoneBillবা PhoneBill
  • খুব নির্দিষ্ট নাম এড়িয়ে চলুন। অতিরিক্ত তথ্য ব্যতীত যখন কোনও বিষয় পরিষ্কার হয় তখন তা অন্তর্ভুক্ত করবেন না। যদি কোনও স্ট্রিংয়ের অক্ষরগুলি লুপ করার জন্য এটি কেবল একটি স্ট্রিং সূচক পরিবর্তনশীল হয় এবং আপনি কেবল একবার এটি ফাংশন মাইফঙ্ক ব্যবহার করেন তবে পৃথিবীতে কেন আপনি কখনও এটি কল করবেন MyFuncTempStringCharacterIndex? এটি একটি দুঃখজনক রসিকতা। কল করুন Posবা iআপনার ভাল লাগলেও। প্রসঙ্গে, পরবর্তী প্রোগ্রামার সহজেই এর অর্থ কী তা বুঝতে পারবে।

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

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

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

vrbDo advnot vrbuse nou হাঙ্গুরি নোটনেশন সিএনজোর অ্যাডজেড অ্যাডোস্টর নোটেশন। প্রিপএ এনউপ্রোগ্রামারস, প্রোউ ভ্রাবশোল্ড অ্যাডনোট ক্রিয়া nouasing "nounotation" prpfor proour adjvariable nounames।

দ্বারা যোগ তথ্য, আমি তৈরি করে একটি সম্পূর্ণ ব্যথা পড়তে।

সুতরাং স্বরলিপি ভুলে যান। আপনি সর্বদা যুক্ত হওয়া বিশেষ উপসর্গগুলি ভুলে যান। আমার মতে, এখানে আসল গাইডলাইনটি হ'ল:

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


আমাদের মানদণ্ডগুলি প্রায় এটিই। পার্থক্যটি হ'ল আমরা প্যাসকাল কেসটিকে পছন্দ করি যখন জিনিসগুলির নামকরণ করা হয় যাতে মূলধন সংবেদনশীল হয়।
ডিফোর্ড 42

5

আইডেন্টিফায়ারের উদ্দেশ্য তার ধরণের চেয়ে বেশি গুরুত্বপূর্ণ। আপনি যদি আপনার প্রোগ্রামগুলিতে শনাক্তকারীদের জন্য বর্ণনামূলক নাম ব্যবহার করেন তবে আপনার হাঙ্গেরিয়ান স্বরলিপি ব্যবহার করার দরকার নেই। isConnectedএর চেয়ে সবসময় বেশি পঠনযোগ্য এবং বোঝা সহজ boolConnected


2
আমি একেবারে একমত! এটিকে তারা 'সিস্টেম হাঙ্গেরিয়ান' এর বিপরীতে 'অ্যাপ হাঙ্গেরিয়ান' বলে call
25'11

@ বাসতিবে: না, এগুলিই তারা বর্ণনামূলক নাম বলে। অ্যাপস হাঙ্গেরিয়ান সংক্ষেপে নির্ভর করে।
জ্যাকবিবি

2

আমি যখন সি ++ প্রোগ্রামার থাকি তখন আমরা হাঙ্গেরীয় ফিরে ব্যবহার করি এবং এটি দুর্দান্ত ছিল। আপনি ঘোষণার সন্ধান ছাড়াই ভেরিয়েবলের ধরণ (ফী বিএসটিআর, সিএসস্ট্রিং, এলপিসিটিএসটিআর বা চর *) দেখতে পেয়েছিলেন। এই দিনগুলিতে, আপনি এইভাবে ঘোষণাটি অনুসন্ধান করবেন:

  1. Ctrl-বাড়ি
  2. Ctrl-এফ
  3. পরিবর্তনশীল নাম
  4. প্রবেশ করান

সুতরাং এটি কিছুটা গুরুত্বপূর্ণ। তবে কোথাও কোথাও 2000, কয়েকটি ঘটনা ঘটেছে:

  • এডিটরিয়ালরা ভেরিয়েবল টাইপটিকে একটি টুলটিপ হিসাবে প্রদর্শন করতে যথেষ্ট বুদ্ধিমান হয়ে ওঠে
  • সম্পাদকদের একটি "ঘোষণায় যান" শর্টকাট এবং ফিরে ব্রাউজ করার একটি দ্রুত উপায় ছিল
  • সি ++ কম ব্যবহৃত হত এবং বেশিরভাগ অন্যান্য ভাষায় কম চলক প্রকার রয়েছে have উদাহরণস্বরূপ, সি # তে আপনি খুব নিশ্চিত যে lastNameএটি একটি System.String, কারণ কেবল একটি স্ট্রিং ক্লাস রয়েছে।

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


2

আমি কেবল হানিয়ার স্বরলিপিটি ঘৃণা করি, আমি পরিবর্তনশীল নামগুলি সীমিত করতে আন্ডারস্কোর ব্যবহার পছন্দ করি।

তার উপরে, যখন আপনি আপনার চলক নামের শুরুতে প্রথম অক্ষর হিসাবে টাইপটি রাখেন: ভাসমান বেগ; vect vDirection; স্ট্রিং ** পিপিএসজর্ড;

স্বাবলম্বতা এগুলি সমস্তকে বাছাই করে এবং আপনি যা চান তা খুঁজে পেতে আপনার সমস্যা হয় এবং লোকেরা তাদের যা ভাল বলে মনে করেন তা ব্যবহার করার ঝোঁক থাকে এবং এটি আর একটি স্বরলিপি নয়।

আমি কেবল থিংসলাইকটি লিখতে চাই যখন আমার ভেরিয়েবল সম্পর্কে খুব বর্ণনামূলক হওয়া দরকার কারণ এটি স্থান বাঁচায় এবং ক্যাপগুলি থাকার কারণে এটি আরও পাঠযোগ্য।

আমি সাধারণত যা করি তা হ'ল আমার পদ্ধতি এবং ক্লাসের নাম হ'ল প্রথম অক্ষরটি বড় হাতের অক্ষর এবং ভেরিয়েবল নামের জন্য ছোট হাতের অক্ষর এবং চলক নামেরের জন্য একটি আন্ডারস্কোর (আমি এই শেষটিকে দরকারী বলে মনে করি)।

গুরুত্ব সহকারে আমি লোকদের সেই নিয়মগুলির যত্ন নেওয়ার পক্ষে পছন্দ করি: প্রাসঙ্গিক স্পেস সহ কমা, গাণিতিক এবং ধনুর্বন্ধনী ব্যবহার করুন:

void f(int a, char b);
int a = b + 4 / (3 + 4);

প্রতি লাইনে 80 টির বেশি নয়, বা 90 টি বেশি অক্ষরে, ফাংশন বা দীর্ঘ জন্য মাল্টি-লাইন আর্গুমেন্ট ব্যবহার করবেন না if:

if
(
    checkthat(a, b) == checkthis(b, d) &&
    checkthat(d, b) == checkthis(v, d)
)

1

বেশিরভাগের সাথে একমত, এটি একটি পুরানো স্টাইল।

আধুনিক আইডিই'র সাহায্যে, একটি ভেরিয়েবলের উপর দ্রুত হভার আপনাকে টাইপটি দেখায়।


2
আমি এটি (যে আইডিই সাহায্য করে) একটি দুর্বল যুক্তি খুঁজে পেয়েছি - যখন আপনি কোডিং করছেন, হ্যাঁ, আপনার সেই সুবিধাটি হবে। তবে এমন কয়েকটি সংখ্যক কেস রয়েছে (প্রতিশ্রুতিবদ্ধ হওয়া, পর্যালোচনা করা, পৃথক / দোষ ইত্যাদি) যেখানে আপনার কাছে সেই সমর্থন উপলব্ধ নেই।
মার্ফ

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