অর্থপূর্ণ নাম দেওয়ার ক্ষেত্রে কীভাবে দুর্দান্ত হতে হয়

অর্থপূর্ণ নাম কেন?

  • আপনি কোনও শিশুকে কল করেছেন বলে মনে করেন (খুব সহজ, শোনায়?)
আপনিআরমিকিড (), কিউটলিটলবাবি (), লাজুকবি ()
  • আমি মনে করি আপনি এই নামগুলি বিবেচনা করতে চাইবেন।
কম্পিউটার বিজ্ঞানে, কেবল দুটি কঠিন কাজ করতে হবে: ক্যাশেটিকে অকার্যকর করা এবং নামকরণের জিনিসগুলি - ফিল কার্লটন

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

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

একজন বুদ্ধিমান প্রোগ্রামার এবং পেশাদার প্রোগ্রামার মধ্যে একটি পার্থক্য হ'ল পেশাদার বুঝতে পারে যে স্পষ্টতা হ'ল সর্বাত্মক এবং শেষ-সমস্ত। পেশাদাররা তাদের দক্ষতা ভাল কারণ এবং কোড লেখার জন্য ব্যবহার করেন যা অন্যরা বুঝতে পারে - রবার্ট সি মার্টিন

অন্তর্দৃষ্টিপূর্ণ নাম ব্যবহার করুন

একটি ভেরিয়েবল, ফাংশন, বা শ্রেণীর নামের গুরুত্বপূর্ণ প্রশ্নগুলির উত্তর দেওয়া উচিত। এটি আপনাকে জানাতে হবে যে এটি কেন বিদ্যমান, এটি কী করে এবং কীভাবে এটি ব্যবহার করবে। যখন কোনও নাম মন্তব্য করার প্রয়োজন হয়, নামটি তার উদ্দেশ্য দেখায় না।

খারাপ

int d; // দিনগুলিতে অতিবাহিত সময়
// নাম d কিছুই প্রকাশ করে না

পরিষ্কার

int elapsedTimeInDays;

নীচের কোডটি কি জন্য আপনি বলতে পারেন? এক মিনিটের জন্য ভাবুন

Def get_them ()
তালিকা 1 = []
the_list.each do | tl |
যদি tl [0] == 4
list1.push (tl) সমাপ্তি
শেষ
তালিকা 1 শেষ

জিজ্ঞাসা করুন:

1. তালিকায় কোন ধরণের জিনিস রয়েছে?
২. তালিকার একটি প্রবেশের জিরোথ ইনডেক্সের অর্থ কী?
3. 4 মান মানে কি?
৪. আমি ফিরে আসা তালিকাটি কীভাবে ব্যবহার করব?

কোড উদাহরণটিতে এই প্রশ্নের উত্তরগুলি অন্তর্ভুক্ত নয়, তবে এটি হতে পারে।

বিশৃঙ্খলা এড়ান

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

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

অর্থপূর্ণ পার্থক্য তৈরি করুন

একই অঞ্চলে দুটি ভিন্ন জিনিস উল্লেখ করতে আপনার একই নাম ব্যবহার করা উচিত নয়। আপনি নির্বিচারে একটি নাম পরিবর্তন করতে প্ররোচিত হতে পারে।

শব্দ শব্দ একটি অর্থহীন পার্থক্য। উদাহরণস্বরূপ, কল্পনা করুন আপনার একটি পণ্য বর্গ রয়েছে। আপনি যদি প্রোডাক্টআইএনফো বা প্রোডাক্ট ডেটা ব্যবহার করে অন্য কোনও শ্রেণি তৈরি করে থাকেন তবে আপনি নামগুলি অন্য কোনও কিছুতে পরিবর্তন করেন নি। তথ্য এবং ডেটা হ'ল এক, এক এবং এর মতো নির্বিচার শব্দ words

নামগুলির মধ্যে পার্থক্য করুন যাতে পাঠক জানতে পারে পার্থক্যগুলি কী। মানি অর্থকে অর্থ থেকে আলাদা করা যায় না, গ্রাহকআইএনফো গ্রাহকের থেকে আলাদা করা যায় না, অ্যাকাউন্ট ডেটা অ্যাকাউন্ট থেকে ডেটা আলাদা করা যায় না

উচ্চারণযোগ্য নাম ব্যবহার করুন

সহজেই উচ্চারণযোগ্য নামগুলি কল করা সহজ। আপনি যদি এটি উচ্চারণ করতে না পারেন, আপনি একটি নির্বোধের মতো শব্দ না করে এটি আলোচনা করতে পারবেন না

তুলনা করা

ক্লাস DtaRcrd102
ব্যক্তিগত তারিখ genymdhms;
ব্যক্তিগত তারিখ modymdhms;
বেসরকারী চূড়ান্ত স্ট্রিং pszqint = "102";
/ * ... * /
};

প্রতি

ক্লাস গ্রাহক {
ব্যক্তিগত তারিখ প্রজন্মের টাইমস্ট্যাম্প;
ব্যক্তিগত তারিখ পরিবর্তন টাইমস্ট্যাম্প;
ব্যক্তিগত চূড়ান্ত স্ট্রিং রেকর্ডআইডি = "102";
};

অনুসন্ধানযোগ্য নাম ব্যবহার করুন

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

কোডিং এড়িয়ে চলুন

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

ভেরিয়েবল নামের সাথে ডেটা ধরণের অপ্রয়োজনীয় কোডিং এড়িয়ে চলুন।

স্ট্রিং ফার্স্ট নেমস্ট্রিং; ভাসা ওজন; ভাসা;

এটি সম্ভবত প্রয়োজন হয় না যদি পুরো বিশ্বটি জানে যে প্রথম নামটিতে ব্যবহারকারীর প্রসঙ্গে বর্ণের ক্রম রয়েছে। একই ওজনে (দশমিক সংখ্যা / ভাসা) প্রযোজ্য।

মানসিক মানচিত্র বর্জন করুন

বিভিন্ন দল একই পণ্যটির পৃথক মডিউল তৈরি করার সময় সহযোগিতা প্রায়ই ঘটে। নতুন কাউকে বা অন্য কোনও দল থেকে পড়ার সময়, তাকে / সে ইতিমধ্যে জানে অন্য নামগুলিতে মানসিকভাবে আপনার নামগুলি অনুবাদ করতে হবে না। এটি একক-বর্ণের পরিবর্তনশীল নামগুলির সাথে সমস্যা। অবশ্যই, একটি লুপ কাউন্টারে আই বা জে বা কে (তবে কখনই l নয়!) নাম থাকতে পারে যদি এর ব্যাপ্তিটি খুব কম থাকে এবং অন্য কোনও নাম এটির সাথে বিরোধ করতে পারে না। এটি কারণ এই এক-বর্ণের নামগুলি লুপ কাউন্টারগুলির জন্য প্রচলিত।

খারাপ

স্থানগুলি = ["অস্টিন", "নিউ ইয়র্ক", "সান ফ্রান্সিসকো"] অবস্থান.Ech do | l | কিছু কর
# ডিও_সোম_আর_ স্টাফ # অন্যান্য স্টাফ
# অপেক্ষা করুন, আমি আবার কিসের জন্য? শিপিং (l) শেষ

পরিষ্কার

স্থানগুলি = ["অস্টিন", "নিউ ইয়র্ক", "সান ফ্রান্সিসকো"] অবস্থান.Ech do | অবস্থান |
# জিনিসগুলি # ডিও_সোম_আর_ স্টাফ # ..
শিপিং (স্থান) সমাপ্তি

শ্রেণীর নাম

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

পদ্ধতির নাম

পদ্ধতির ক্রিয়া বা ক্রিয়া পদার্থের নাম পোস্ট ইনভয়েস, ডিলিটশীপমেন্টের মতো হওয়া উচিত

ধারণা অনুযায়ী একটি শব্দ চয়ন করুন

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

খারাপ

ব্যবহারকারীর তথ্য ব্যবহারকারীর ডেটা
শুরু সময়ে শুরু হয়

পরিষ্কার

ব্যবহারকারীদের দিয়ে শুরু

আরেকটি উদাহরণ

ডেটাফ্যাচার () বনাম ডেটাজেটার () বনাম ডেটা রিটারিভাল ()

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

সমাধান ডোমেন নাম ব্যবহার করুন

মনে রাখবেন যে আপনার কোডটি পড়ছেন তারা প্রোগ্রামার are সুতরাং কম্পিউটার বিজ্ঞান (সিএস) পদ, অ্যালগরিদমের নাম, প্যাটার্নের নাম, গাণিতিক পদ ইত্যাদি ব্যবহার করুন

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

অ্যাকাউন্টভিজার নামটির অর্থ ভিআইজিওআর প্যাটার্নের সাথে পরিচিত একজন প্রোগ্রামারের কাছে অনেক কিছুই।

সমস্যা ডোমেন নাম ব্যবহার করুন

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

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

অর্থবহ প্রসঙ্গ যুক্ত করুন

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

আপনি অ্যাডার ফার্স্টনাম, অ্যাডারলাস্টনেম, অ্যাড্রেস্টেট এবং আরও কিছু ব্যবহার করে প্রসঙ্গ যুক্ত করতে পারেন। অবশ্যই, এর চেয়ে ভাল সমাধান হ'ল অ্যাড্রেস নামে একটি শ্রেণি তৈরি করা

ক্লিন কোড লেখা একটি শিল্প এবং প্রচুর অনুশীলন নেয়।

উপসংহার

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

অন্যান্য বিকাশকারীরা আপত্তি করবে এই ভয়ে লোকেরা জিনিসটির নাম পরিবর্তন করতেও ভয় পায়। আমরা এই ভয়টি ভাগ করি না এবং নাম পরিবর্তিত হলে কৃতজ্ঞ (আরও ভাল জন্য)

আপনার নামকরণের কনভেনশনটি শীঘ্রই চালু করুন এবং এটি ইতিমধ্যে উপস্থিত না থাকলে এবং কিছু পরিষ্কার কোড চালান। মজা কোডিং আছে!