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


10

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

আসুন বলুন যে আমার কাছে ইমেল ঠিকানাগুলি সংগ্রহ করার জন্য এবং একটি ডেটাবেস টেবিলের মধ্যে সেগুলি সংরক্ষণ করার জন্য একটি ওয়েবফর্ম আছে এবং বোতামটি এমন ফাংশনটি কল করে যা ঠিকানাটি ডিবিতে সংরক্ষণ করে।

আমি যদি হাঙ্গেরীয় স্টাইলের স্বরলিপি ব্যবহার করছি তবে আমি বাক্সটিকে txtEmailবোতামটি btnEmailএবং পাঠ্যবক্সে থাকা মানটিকে কল করতে পারিstrEmail । আমি তখন storeEmail(strEmail)ইমেলটি সঞ্চয় করতে কোনও ফাংশন ব্যবহার করতে পারি । আমার এখানে একটি পরিষ্কার কনভেনশন রয়েছে, প্রতিটি ভেরিয়েবল কী তা তা স্পষ্ট।

এই ভেরিয়েবলগুলির নামকরণের জন্য সেরা অনুশীলনটি কী হবে

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

2
আপনার অনন্য নামগুলি খুঁজে পেতে যদি সমস্যা হয় তবে সম্ভবত আপনার বাকী নামকরণের কনভেনশনগুলি বা আপনার ফাংশনগুলির আকারের সাথে কোনও সমস্যা রয়েছে।

আপনি কোন প্রযুক্তি ব্যবহার করছেন? এই উপসর্গগুলি ওয়েব ফর্মগুলিতে ndণ দেবে বলে মনে হয়।
StuperUser


@ ডেলানান - আপনি দয়া করে বিস্তারিত বলতে পারেন? কেন ফাংশন সাইজ নামকরণকে অনন্যসাথে সহজ করে তোলে?
ভয়ঙ্কর 16

@ ফিয়ারফোরস: একটি ছোট ফাংশনটির জন্য কম ভেরিয়েবল প্রয়োজন, এবং কম ভেরিয়েবল স্পষ্টতই কম ভেরিয়েবল সংঘাতের অর্থ। এটি অবশ্যই ধরে নিয়েছে আপনি প্রতিটি পরিবর্তনশীলকে ক্ষুদ্রতম সম্ভাবনায় রেখেছেন।

উত্তর:


8

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

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


2
ফর্ম / পৃষ্ঠা / উইন্ডো / ইমেলের জন্য যা কিছু বোতাম আছে, ইমেলের জন্য একটি পাঠ্য বাক্স এবং ইমেলের জন্য অন্য উইজেট / নিয়ন্ত্রণ থাকতে পারে তখন এটি সামান্য কৌশলযুক্ত হয়ে যায় ...
হতাশাহীন

7
অস্ট্রেলিয়া উইথফোর্ডস ডিজাইনার অগত্যা নয়। পাঠ্য বাক্সটি ইমেলএড্রেস ইনপুট হতে পারে যেখানে বোতামটি ইমেলএড্রেস সাবমিট হতে পারে এবং অভ্যন্তরীণ উপস্থাপনাটি কেবল ইমেলএড্রেস হতে পারে।
জোনাথন

@ জোনাথন: ভালো কথা।
হতাশ

3

ওয়েব ফর্মগুলি / উইন্ডোজ ফর্মগুলি / অন্যান্য গ্রাফিকাল স্টাফগুলির সাথে কাজ করার সময়, সিস্টেম হাঙ্গেরিয়ান ব্যবহার করা বোধগম্য হয় যেহেতু আপনার নিয়ন্ত্রণগুলি খুব শক্ত করে একসাথে বাঁধা থাকতে পারে instance উদাহরণস্বরূপ, একটি পাঠ্য বাক্স এবং একটি লেবেল যা একসাথে যায়; আপনি তাদের নাম txtEmailএবং lblEmailপার্থক্য করতে পারে । আমার অভিজ্ঞতায় এটি সাধারণ এবং বাস্তবে কার্যকর।

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

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


1
প্রকৃত txt এবং lbl হাঙ্গেরিয়ান নয়, txt কেবলমাত্র ছোট এবং পাঠ্যের জন্য লেবেল সংক্ষিপ্ত, কেবল কোনও দৈর্ঘ্যের শব্দ যেমন ইমেলটেক্সট এবং ইমেল লেবেল কোনও ফর্মটিতে ব্যবহার না করার কোনও কারণ নেই। হাঙ্গেরিয়ান হ'ল টাইপ, যা এই উভয় ক্ষেত্রেই একটি স্ট্রিং।
স্টিভ

1
@ স্টেভ হাই - না, আমি নিজেরাই নিয়ন্ত্রণগুলি নিয়ে কথা বলছি। আপনার কাছে txtEmail নামক "পাঠ্যবক্স" টাইপের একটি অবজেক্ট এবং lblEmail নামক "লেবেল" টাইপের একটি অবজেক্ট রয়েছে। তাদের উভয়ই স্ট্রিং নয়। তারা পারে আছে স্ট্রিং সম্পত্তি, কিন্তু তারা নিজেরাই নিজেদের স্ট্রিং নেই।
অ্যান্ড্রু আর্নল্ড

1
ওহ দুঃখিত. হ্যা অবশ্যই. তবুও, ইমেলটেক্সটবক্সের মতো আরও বর্ণনামূলক নাম ব্যবহার না করার কোনও কারণ নেই। কেবল ভিএস একটি খারাপ নাম উত্পন্ন করার অর্থ এই নয় যে আপনার এটি রাখা উচিত। তবে, ফর্মগুলির প্রসঙ্গে, txt এবং lbl সংক্ষিপ্ত বিবরণগুলি এত ভালভাবে বোঝা গেছে আমি সম্ভবত এই ক্ষেত্রে উদ্বিগ্ন হব না।
স্টিভ

3

একটি পরিবর্তনশীল "দীর্ঘ দীর্ঘ" কি করে?

বদলে txtEmail, btnEmailআপনি ব্যবহার করতে পারে UserEmailText, UserEmailButtonএবং AdminEmailText,AdminEmailButton

এই সমস্যাটি হ'ল আপনি সম্ভবত অনুভূতি শুরু করতে পারেন যে পরিবর্তনশীল দীর্ঘ হতে শুরু করে:

AdminEmailIsValid আমি ভেরিয়েবলটি কতক্ষণ রাখার অনুমতি দিয়েছিলাম তা সীমান্তরেখা শুরু করে।

অতিরিক্তভাবে, আপনি লক্ষ্য করা শুরু করতে পারেন যে আপনি ভেরিয়েবলগুলির একটি সেট এবং সেই ভেরিয়েবলগুলির ক্রিয়াকলাপগুলির পুনরায় ব্যবহার করছেন। এটিই ওওপি-র জন্য ডিজাইন করা হয়েছে। ভেরিয়েবলের সেটের পরিবর্তে জেনেরিক অবজেক্ট তৈরি করুন:

class EmailForm
  var textBox, button, text
  function storeEmail()

তারপরে আপনি ক্লাস হিসাবে একটি নতুন ভেরিয়েবল ইনস্ট্যান্টিয়েট করতে পারেন এবং আপনার ডেটা অ্যাক্সেস করতে একই ডট স্বরলিপি ব্যবহার করতে পারেন:

userEmailForm = new EmailForm(...data...)
adminEmailForm = new EmailForm(...different data...)
doSomething( userEmailForm.text )
doSomethingElse( adminEmailForm.text )

অবশ্যই, এটি ওওপি দৃষ্টান্ত ব্যবহার করে এমন ভাষাগুলির দিকে লক্ষ্যযুক্ত, তবে জনপ্রিয় ওয়েব বিকাশের বেশিরভাগ ভাষা অবজেক্ট-ভিত্তিক, বা অবজেক্ট-ওরিয়েন্টেড কোডের জন্য অনুমতি দেয় (পিএইচপি, পাইথন, সি #, সি ++, জাভা, জাভাস্ক্রিপ্ট, অ্যাকশনস্ক্রিপ্ট ইত্যাদি) )।


আমি ইউজার ইমেইলটেক্সট থেকে টেক্সটইমেলের সুবিধা দেখতে ব্যর্থ হয়েছি - আপনি কেবল টাইপটির উপসর্গের চেয়ে আরও ভাল লাগছেন। যদিও আমি "এটি ওওপি-র জন্য ডিজাইন করা হয়েছে" পছন্দ করি।
ভয়ঙ্কর

@ ফিয়ার অফস, ওপি স্বতন্ত্র নামগুলির সাথে একটি সমস্যা রয়েছে বলে স্বীকার করেছেন, আমি উদাহরণটিকে দুটি অনুরূপ ভেরিয়েবলের ( UserEmailTextএবং AdminEmailTextবিশেষত) মধ্যে পার্থক্য করার বর্ণনামূলক উপায় হিসাবে যুক্ত করেছি । আমি সাধারণত প্রত্যয় ধরণের হিসাবে এটি কোনও শ্রেণিতে চলে যাওয়ার জন্য নিজেকে ধার দেয় UserEmailText-> UserEmail.text-> User.email.textকতটা বিমূর্ততা / কার্যকারিতা প্রয়োজনীয় on তার উপর নির্ভর করে।
zzzzBov

ঠিক আছে দেখুন আপনি ওখান থেকে এসেছেন। প্রত্যয় / শ্রেণীর তুলনা করার জন্য +1। ওহ, এবং আমি ওপি!
ভয়ঙ্কর

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