1. নাম প্রণালী বোঝা
নাম প্রণালীগুলি সফ্টওয়্যার ডেভেলপমেন্টে গুরুত্বপূর্ণ, কারণ এটি একটি সার্বজনিক এবং বর্ণনামূলক মাধ্যমে আপনার চর, ফাংশন এবং অন্যান্য সনাক্তকারী সারাংশে আপনার চয়নকৃত নামগুলির জন্য একটি কাঠামো সরবরাহ করে। Go (সাধারণভাবে Golang হিসেবে সংজ্ঞায়িত) এ, প্রতিষ্ঠিত নামকরণের অনুসরণ করা না মাত্র আপনার কোডকে ওঠা, পড়া এবং বজায় রাখার জন্য সহজ করে, বরং অন্যদের (এবং আপনার ভবিষ্যতের নিজের) আপনার কোডবেসে বিস্তৃত বিবৃতি দিয়ে সম্প্রদায়ে সহযোগিতা করা বাদ্য হয়।
1.1. কেন নামকরণ গুরুত্বপূর্ণ
যে কোন প্রোগ্রামিং ভাষায়, আপনি যে ভাবে আপনার সনাক্তকারী নাম দিয়েছেন, তা আপনার কোডের বোঝা-পেটায় একটি বৃদ্ধি করতে পারে। গো তে, যা সাদৃশ্য এবং স্পষ্টতার উপর জোর দেয়, যথার্থে প্রকৃত নামকরণটি আরও গুরুত্বপূর্ণ। ভেরিয়েবল বা ফাংশনের উদ্দেশ্যটি প্রতিনিধিত্ব করানো নামগুলি, অতিরিক্ত মন্তব্যের প্রয়োজনকে কমিরে পেতে সহায়ক হয়, এবং কোডটি নিজস্ব-নথিতে করে দেয়। এটি সময়ের মধ্যে একটি কোডবেস রক্ষণাবেক্ষণ এবং বان্ধুত্বের জন্য গুরুত্বপূর্ণ এবং টীম সহকারে সম্ভাবনা করার জন্য খুবই গুরুত্বপূর্ণ।
1.2. নামকরণের জন্য সাধারণ নিয়ম
গোর নামকরণের নিবন্ধনগুলি সরল তবু শক্তিশালী:
-
ক্ষুরা, সংক্ষেপনশীল নাম ব্যবহার করুন: গো, সুলভতা এবং স্পষ্টতাকে জোর দেয়, অতএব ফাংশনগুলির জন্য খুব ক্ষুরা নামগুলি প্রশংসা করে। উদাহরণস্বরূপ, লুপ গণনার জন্য
i
ব্যবহার করা হতে পারে, কিন্তু একটি অধিক স্পষ্টতা পেতে তো আপনিindex
বাcounter
ব্যবহার করতে পারেন। -
CamelCase for বহুবর্ণী নামগুলি: মৌলিকভাবে যখন একটি নাম একাধিক শব্দের টোটো তবে ক্যামেলকেস নোটেশন ব্যবহার করুন। রপ্ত নামগুলি (যেগুলি প্যাকেজের বাইরে অ্যাক্সেস করা হওয়া উচিত) উচ্চাকার অক্ষরে শুরু হতে হবে (
MyFunction
), যা অন্তর্নিহিত নামগুলির (myFunction
) শুরু হতে হবে। -
অর্থপূর্ণ নাম ব্যবহার করুন: নামগুলিতে ব্যাখ্যা বাড়াও এবং বাস্তবায়নের বড় হলেও নামগুলি ব্যাখ্যাপ্রদ হওয়া উচিত। উদাহরনঃ,
CalculateNetIncome
একটিCNI
এর চেয়ে একটি পছন্দযোগ্য উচিত। -
সুনির্দিষ্ট_ এর জন্য এগিয়ে যান: কিছু ভাষাকে বিপরীত ভাবে, G বিধান সংগ্রহের ব্যবহার থেকে বাচের করে। তাদের বরং আপনি
recordCount
এর বিধানটি ব্যবহার করবেন। -
যদিও ব্যবহার করা হবে তাহলে এগিয়ে যান: নামগুলিতে আক্ৰমণগুলি ব্যবহার করা হলে, তাদের একটি ঝলকে রাখুন। পরিচয়গুলির জন্য সম্ভাব্য একেবারে উচ্চরৈকে (
HTTPServer
), এবং অনতর্নিহিত পরিচয় গুলির জন্য সার্বিকভাবে ছোট হতে হবে (httpServer
)। -
প্যাকেজ নামগুলি সহজ থাকা উচিত: গোতে প্যাকেজ নাম সহজ এবং ছোট অক্ষরিতে থাকে, কোনও দণ্ড বা মিশিত অক্ষরিত নয়। তারা যে প্যাকেজের উদ্দেশ্যটি প্রতিনীতি করে (
net
,os
,json
) সম্পূর্ণ একক শব্দ হওয়া উচিত। -
প্রকারের উপর ভিত্তি করে চয়নকরণের নাম: স্ট্রাক্টস্ এর প্রতিনিধিত্ব করার জন্য এখানে স্ট্রাক্টস নামকে লো কোড হিসেবে ব্যবহার করা হয় (
var user User
)।
উপরেরটি একটি Go কোডের উদাহরন যেখানে নামকরণ সাধারণ তাদের চয়নের ব্যাখ্যা করা আছে।
package main
import "fmt"
type User struct {
FirstName string
LastName string
Age int
}
func main() {
var currentUser User // Using struct name in lowercase as the variable name.
currentUser.FirstName = "John"
currentUser.LastName = "Doe"
currentUser.Age = 30
fmt.Println(formatUserDetails(currentUser))
}
// formatUserDetails takes a User struct as input and returns a formatted string.
// The function name starts with a lowercase letter since it's unexported (private).
func formatUserDetails(u User) string {
return fmt.Sprintf("Name: %s %s, Age: %d", u.FirstName, u.LastName, u.Age)
}
এই নামকরণ নিয়মগুলির অনুসরণ করা গো কোডের গুনগত নির্ধারণ বাড়াতে সাহায্য করবে, কারণ এটি আরও পঠনযোগ্য এবং রক্ষণাকাঙ্ক্ষী হবে।
2. গোতে সনাক্তকারী
গোয়া আপনার যাত্রা শুরু করার সময়, সনাক্তকারী পাতা বুঝতে গুরুত্বপূর্ণ। সনাক্তকারী হল নামগুলি প্র্যাক্টিকালি প্যাকেজ, ফাংশন, এবং স্থায়ীদের বিভিন্ন ইলিমেন্টস্ দিয়ে থাকা। অর্থপূর্ণ এবং সংগতিপূর্ণ নাম বাছাই করা, আপনার কোডটি আরও পঠনয়গ্য এবং রক্ষণাকাঙ্ক্ষী হয়।
2.1. ভেরিয়েবল নামকরণের নীতি
গোতে, ভেরিয়েবলের নাম মৌলিকভাবে একটি অক্ষর বা একটি আন্ডারস্কোর দিয়ে শুরু হতে হবে, পরবর্তীতে কোনো সন্মিশ্রণ বর্ণ, অঙ্ক বা আন্ডারস্কোরের যে কোনো সংমিশ্রণ হতে পারে। তবে, এটি সাধারণত বিশেষ ক্ষেত্রের জন্য সম্পর্কিত নয় কারণ এটি সাধারণত বিশেষ ব্যবহারের জন্য সংরক্ষণ করার জন্য সংরক্ষণ করা হয়। **
2.2. ফাংশন নেমিং কনভেনশন
Go-তে ফাংশনগুলি চলানোর নামের ব্যাপারে ভেরিয়েবলগুলির প্রবর্তনের মতোই নিয়ম অনুসরণ করে। নামটি ফাংশনের উদ্দেশ্য প্রতিফলন করা উচিত, এবং এর বৈশিষ্ট্য প্রথম অক্ষরের মামলায় বিবেক করে।
সেরা অনুসরণ:
- উদ্দেশ্যসূচক নামগুলি ব্যবহার করুন যা ফাংশনের উদ্দেশ্য প্রতিফলিত করে।
- অভ্যন্তরীণ ফাংশনের জন্য নিচের মামলাঃ লোয়ার-কেস অক্ষর দ্বারা শুরু করুন।
- নির্যাতিত ফাংশনের জন্য প্যাসকালকেস (বড় হাতের অক্ষর দ্বারা শুরু) ব্যবহার করুন।
- ফাংশনের নামগুলি সংক্ষেপক কিন্তু অর্থপূর্ণ রাখুন।
উদাহরণঃ
func calculateTotal(price int, quantity int) int { // অভ্যন্তরীণ ফাংশন
return price * quantity
}
func CalculateDiscount(totalPrice int) float64 { // নির্যাতিত ফাংশন
return totalPrice * 0.1
}
এই উদাহরণগুলি ব্যাখ্যা করে ফাংশনের অ্যাক্সেসিবিলিটির ভিত্তিতে উদ্দেশ্য ফাংশনের মৌলিক ধারণা ফাংশনগুলির অনুমোদন করে।
2.3. ধারাগুলির নামাকরণ সংবিধান
ধারাবাদামী মানের ধারাগুলি হচ্ছে যা, একবার সংজ্ঞায়িত হয়ে গেলে, পরিবর্তন করা যাবে না। গোয়ে, ধারাগুলি const
কীওয়ার্ড ব্যবহার করে ঘোষণা করা হয় এবং অক্ষর, স্ট্রিং, বুলিয়ান বা সংখ্যাত্মক মান হতে পারে।
সেরা অনুসরণ:
- আন্ডারস্কোর দিয়ে সম্পূর্ণ অপার-কেস হ্রস্ববর্ণ ব্যবহার করুন (উদাহরণঃ
MAX_LIMIT
।) - সাংখ্যিক ধারাগুলির জন্য,
iota
অনুগ্রহ করে ব্যবহার করুন। - নির্যাতিত ধারাগুলিতে বড় বর্ণের অক্ষর দিয়ে শুরু করুন।
উদাহরণঃ
const MAX_RETRY_COUNT int = 3 // নির্যাতিত ধারা
ধরন ByteSize float64
const (
_ = iota // প্রথম মানটি ইগনোর করতে প্রাথমিক সনাক্তকে ফাঁকা শীর্ষকে বুঝিয়ে দেওয়া
KB ByteSize = 1 << (10 * iota)
MB
GB
TB
)
উদাহরণটি সাধারণ ধারাগুলি এবং বাইট আকারের iota
ব্যবহার করে সম্পর্কিত ধারাগুলির এক সেট সংজ্ঞায়িত করা হয়েছে।
3. নামের জন্য নেং数
এই অধ্যায়টি বিভিন্ন প্রকারের নামগুলির জন্য মান নিয়ে গুরুত্ব দেয়। যেমন স্ট্রাক্ট এবং ইন্টারফেস।
3.1. স্ট্রাক্ট নামকরণ নির্দেশিকা
সারমর্মঃ Go-তে স্ট্রাক্ট কম্পোজিট ডেটা ধরে। স্ট্রাক্টগুলির নাম দেওয়ার সময়, প্যাসকালকেসে বর্ণনামূলক নামগুলি ব্যবহার করুন, যা বড় অক্ষর দিয়ে শুরু হয়।
- ভাল অনুসরণ: এমন নামগুলি ব্যবহার করুন যা প্রাকটনই বর্ণনা করে যে তারা কী প্রতিনিধিত্ব করে। উদাহরণঃ
// ভাল
ধরন করুন Employee struct {
ID int
প্রথমনাম string
শেষনাম string
পদ string
}
- অবহরণঃ অনিশ্চয় বা সাধারণ নামগুলি ব্যবহার করা যা না বোঝায় স্ট্রাক্টের উদ্দেশ্য।
// এডাটি এবং উদাহরণ এমন ///
ধরন করুন এডাটি struct {
ID int
প্রথমনাম string
শেষনাম string
পদ string
}
3.2. ইন্টারফেস নামকরণ নির্দেশিকা
সারমর্মঃ Go-তে ইন্টারফেসগুলি পদ-সেট নির্ধারন করে এবং যদি এটি যুক্তি প্রয়ান করে, ইন্টারফেস গুলির নামকরণ নির্দেশিত, সে 'এর' সাফিক্স পর্যন্ত।
- ভাল অনুসরণ: ইন্টারফেসগুলির নাম যখন প্রতিষ্ঠান যে behavior চঞ্চলক করে তখন নাম করুন সেই জ্ঞানের অনুপ্রেরণা দেওয়া হবে। সাধারণত, যদি একটি ইন্টারফেসটি শুধুমাত্র একটি মেথড ধারণ করে, তবে নামটি ঠিকই তার মেথডের ক্রিয়াকলাপের অনুপ্রেরণা করা উচিত.
- ব্যবহারের জন্য সংগ্রহ: যদি একটি ইন্টারফেস পরিচালনা একগুচ্ছ সংজ্ঞায়িত করে, তবে এর উদ্দেশ্য প্রকাশ করা যেতে হবে নতুন 'এর' সাফিক্স ব্যবহার উচিত নয়।
// ভাল
ধরন Reader interface {
পড়ুন(পি []বাইট) (n ইন্ট, ত্রুটি ত্রুটি)
}
// আচরণ সমূহের সংগ্রহ:
ধরন Filesystem interface {
ফাইলপথ string) ([]বাইট, ত্রুটি)
WriteFile(পথ string, তথ্য []বাইট) ত্রুটি
}
4. মামলা সন্ধানা এবং নির্যাতিত শখন গুরুত্ব
4.1. নির্যাতিত বনাম নির্যাতিত নাম
Go-তে, একটি শনাক্তার অনুমোদন তার নিজের প্যাকেজের বাইরের তার লেখক অক্ষরের ব্যাপারে চোখের মাধ্যমে নির্ধারণ করা হয়। একটি শনাক্তার যা বড় হাতের অক্ষর দিয়ে শুরু হয় তা 'নির্যাতিত' এবং অনুপাতিতরাম। অতএব, এটি অন্যান্য প্রোগ্রামিং ভাষাগুলিতে পাবলিক স্কোপের সাথে তুলনা করা যেতে পারে। অন্যদিকে, ছোট অক্ষর দিয়ে শুরু হয় না-নির্যাতিত বা ব্যক্তিগত এবং এটি শুধুমাত্র নিজেদের প্যাকেজের মধ্যে ব্যবহার করা যায়।
উদাহরণঃ
প্যাকেজ জুড়াবারিঃ জিওমেট্রিঃ
// নির্যাতিত শনাক্তা
ধরন Rectangle struct {
Length, Width float64
}
// নির্যাতিত শনাক্তা
ধরন point struct {
x, y float64
}
এই উদাহরণে, Rectangle
একটি নির্যাতিত প্রকার কারণ এটি বড় হাতের অক্ষর দিয়ে শুরু হয় এবং geometry
প্যাকেজ ইম্পোর্ট করা অন্য প্যাকেজগুলি দ্ব
4.2. নামবিশেষ পরামর্শ
যখন পরিবেশিত নামগুলি নির্দেশনা করা হলে, অন্যকে কোডটি পড়া এবং বুঝতে সাহায্য করার জন্য কিছু সেরা প্রযুক্তি অনুসরণ করা জরুরী:
-
ব্যাকুলতা বৈশিষ্ট্য: চেষ্টা করুন পরিষ্কার ও বর্ণনামূলক নামের আগে পরিষ্কার ও সংক্ষেপণ মূলক নামগুলি বিরতি করার। উদাহরণস্বরূপ,
CalculateArea
পছন্দসুবিধাCalcA
এর অধিক পছন্দসুবিধা হিসেবে ব্যবহার করা হয়। - সাঙ্গতিক: আপনার কোডবেসের উপরোধীগণরা নামকরণ অবধানের সাথে সাঙ্গত্য বিধাননা করুন। যদি আপনি নামের অনুরূপ সমতাকারী নির্ধারণ করা শুরু করেন, তাহলে অটলেন।
-
অপর্যাপ্ততা হাটান: প্যাকেজের নামগুলির নামের একইরকম প্রাধান্য করার ক্ষেত্রে পুন: প্যাকেজগুলির নামের মাধ্যমে পুনরাবর্তন না করুন,
geometry.GeometryRectangle
এবংণে, GeometryRectangle ব্যবহার করুনgeometry.Rectangle
. - প্রসঙ্গ বিবেচনা করা: নামকরণের নামগুলির নামকরণ প্রসঙ্গ সাঙ্গত্যে হওয়া উচিত। বোঝার ক্ষতি হতে পারে নামগুলির নামকরণি বা অস্বস্তিকারক হতে পারে নামে।
- নথি মন্তব্য: পরিষ্কার নামগুলির নামগুলি নথি ব্যবহার করুন, পরিষ্কার করুন যে তারা কি করে এবং কিভাবে ব্যবহার করা উচিত।
উদাহরণ:
package geometry
// CalculateArea returns the area of a rectangle.
func (r Rectangle) CalculateArea() float64 {
return r.Length * r.Width
}
এই উদাহরণে, CalculateArea
একটি পরিদৃশ্যমান কাজের নামকর্ণ থাকলেও তার উদ্দেশ্য ব্যাখ্যা করে নেয়া ডকুমেন্টেশন মন্তব্য রয়েছে।
5. বাস্তবে নামবিশেষ
এই অধ্যায়ে, আমরা প্রারম্ভিক ব্যর্থতার উল্লেখযোগ্য উদাহরণগুলির মধ্যে গোর বর্ণনামূলক ইংলিশ অনুসরণ করার জন্য। এই মর্মে বুঝাবাঁধ এবং অধিক পড়া এবং রক্ষণ করার জন্য এতেও গুরুত্বপূর্ণ।
5.1. প্রাণাদারের সাধারণ দুর্দান্ত এবং তাদের এড়ান করার কিভাবে হয়
বেতন, ফাংশন, এবং অন্যান্য নামকরণের প্রভাব সর্বোচ্চ হয়ে উন্নত দেয়া হয় অধিকাংশ সময় নেমিং. সাধারণ ভুলগুলি অন্তর্দৃষ্টি রাখা হ্রাস হার্বাডার প্রয়োজন।
-
সাধারণ নাম ব্যবহার করা: উদাহরণস্বরূপ,
data
, অথবাinfo
এরকম ব্যাকুলতা নয় বর্ণনামূলক নাম লেখা। - অত্যন্ত লম্বা নামগুলি: বর্ণনামূলক নামগুলিতে অত্যন্ত অত্যধিক নামের প্রয়োজন হয় না। একটি সামঞ্জস্যপূর্ণ স্তর স্ট্রাইক।
-
বহুকথা নামকরণের লেখাবলি: গো ভুলো ক্যালেম কেস ঠিক রাখে যেখানে পাঠ্যকে
underscore
ব্যবহার করা উচিত না ভালো অভ্রাণ করা।
ভুল দিগ্ভ্রান্তি এড়ানের টিপ:
- সংক্ষিপ্ত অপর্যাপ্ত নামগুলি ব্যবহার করুন। উদাহরণস্বরূপ,
data
এর পরিবর্তে,userData
ব্যবহার করুন যেখানে এটি ব্যবহারকারীদের তথ্য বিবরণ করে। - অক্ষরূণা ক্ষেত্রে গো এর মধ্য স্রোত অনুসরণ করুন; এবং প্রেম প্রাধান্য রাখে তারা বৃহত্তম অবদান দান করুন,
HTTPServer
তুলনা করা,HttpServer
। - পাকেজের স্তরের বেলুন, অদুর্বার নামগুলির জন্য পাকেজের স্তরের ধন্যবাদ্বাদ ডিগ্রীয় ধন্যবাদ্বাদ; কারণ তারা সীমাবদ্ধ সীমা আছে।
5.2. নামগুলির নামের জন্য পুনরারক্ষণ্
নামের মাধ্যমে নাম পুনরারক্ষণের কোড উন্নত করা নামান্তর থেকেই কোড পড়াবাঁধ অনুসার জটিল কোড বাড়াচ্ছে। এখানে চিকিৎসা লাভিন সমাজিক তথ্য আলোচনা করুন:
-
বর্ণনামূলক নাম ব্যবহার করুন: নামগুলি পুনরারক্ষণ ব্যবহার করে পুনুই প্রগতি করুন কী নিয়ে বলে। উদাহরণস্বরূপ,
Process
দেয়া স্থানে, যদি এটা করে,ProcessUserInput
নামে আবারে পুনুই করুন। -
সরণিকরণ সরণি: সরনেশনোগ্রন্থি ভরণোন্ট অ্যানালাইজিং গো কোডের সমন্বয়ে নিরাপদ নামকরণ করতে
gorename
এর মতো সররন্তি অনুসরণ। - সগতগত মন্তব্য: মুছোনেন যে আপনি কি করার জন্য এটা অনুগ্রহপূর্বক কিছু অন্যের জন্য স্পষ্ট। সোাশলাবন্ধনা মধ্যে সহায়ক হতে পারে সমন্বয়ে.
- প্রতিবাদ চক্: পরিবর্তন করার পরে, ইউজারদের অনুসরণে প্রতিবাদ সঞ্জাত ও প্রতিবাদ চক্রে পুন্।
এই প্রযুক্তিগুলি অনুসরণ করে, আপনি এটি নিশ্চিত করতে, আপনার গো কোডবেস পরিষ্কার, বুঝুতি, এবং সংরক্ষণযোগ্য থাকবেন।