4.20 قوانین کدنویسی در گو

4.20 قوانین کدنویسی در گو

قوانین در زبان گو همانند دیگر زبان های برنامه نویسی به دو دسته تقسیم می شود. بخشی از قوانین در سطح سینتکس زبان مطرح می شوند، لذا رعایت آنها مهم هست، در غیر اینصورت کامپایلر قادر به کامپایل درست کدهای شما نخواهد بود و در بعضی شرایط ممکن است به صورت خاموش خطا به محیط اجرا (runtime) نیز برده شود. بخشی از قوانین به عنوان پیشنهاد و ترجیح مطرح هستند که عموما توسط لینتر بررسی می شوند و تاثیر اصلی بر خوانایی منطق کدها دارند. یعنی رعایت آنها الزام قطعی ندارد. به طور مثال استفاده از _ در نام گذاری ها در گو توصیه نمی شود ولی در کتابخانه استاندارد (الحاقی به زبان گو) به وفور عدم رعایت این موضوع دیده می شود.

لازم به ذکر است که سازمان ها می توانند قوانین پیشنهادی خود را توسعه دهند و با توسعه لینتر اختصاصی در فرآیند توسعه نرم افزار خود با روش هایی مانند CI/CD از رعایت قوانین خود توسط توسعه دهندگان پروژه های نرم‌افزاری خود اطمینان حاصل نمایند.

4.20.1 قوانین نام گذاری #

در زبان برنامه‌نویسی Go برای نامگذاری توابع، همان گونه که در بالا نیز توضیح داده شد دو مدل قوانین (اجباری و اختیاری) وجود دارد. قوانین اجباری باید رعایت شوند و قوانین اختیاری بهتر است رعایت شوند تا کد هم خوانایی بیشتری داشته باشد و هم از نظر تعاریف و نام‌گذاری مطابق رویه های (پروتکل های) معرفی شده توسط تیم توسعه زبان، به صورت استاندارد باشند.

4.20.1.1 نام توابع #

نام توابع باید با حروف بزرگ یا کوچک شروع شود. توابعی که با حروف بزرگ شروع می‌شوند، به عنوان public تلقی می‌شوند و از سمت بیرون پکیج برای دیگران قابل دسترس هستند. توابعی که با حروف کوچک شروع می‌شوند، به عنوان private تلقی می‌شوند و فقط در داخل پکیج موجود هستند.

  • نام توابع public بصورت Pascal Case هستند مانند: ()CalculateInterestRate
  • نام توابع private بصورت camel Case هستند مانند: ()calculateInterestRate

برای اطلاعات بیشتر درخصوص public یا private میتوانید به بخش Encapsulation مراجعه کنید.

4.20.1.2 نام فایل های پسوند go. #

  • نام فایل باید با حرف کوچک شروع شود.
  • نام فایل باید از حروف بزرگ و خط تیره (-) استفاده نکند.
  • نام فایل باید با نام پکیج مطابقت داشته باشد.
  • نام فایل باید از جمله معانی آن و بخشی از توضیح فایل باشد. برای مثال: database_connection.go، calculator_test.go

4.20.1.3 نام interface #

  • نام اینترفیس باید با I شروع نشود.
  • نام اینترفیس باید با camelCase باشد.
  • نام اینترفیس باید صفت یا اسم باشد و معمولاً با حرف I شروع نمی‌شود. برای مثال: Reader، Writer
  • در انتهای نام حتما er داشته باشد.

4.20.1.4 نام پارامترهای توابع #

  • نام پارامترها باید با حروف کوچک شروع شود.
  • نام پارامترها باید با camelCase باشد.

برای مثال، تابع زیر درست نام‌گذاری شده است:

1func CalculateInterestRate(principal float64, interestRate float64, termInYears int) float64 {
2    // function code here
3}

در این مثال، تمامی پارامترهای تابع با حروف کوچک، با CamelCase نام‌گذاری شده‌اند.

به طور کلی، هدف از این قوانین نام‌گذاری، رعایت استانداردهایی برای نام‌گذاری است تا کد خواناتر و قابل فهم باشد و همچنین قابلیت نگهداری و توسعه را بهتری داشته باشد.

4.20.1.5 نام پکیج #

نام پکیج در Go باید با حرف کوچک شروع شود و نام پکیج باید شامل تنها حروف کوچک انگلیسی، اعداد و خط فاصله (-) باشد. همچنین در نام پکیج از حروف بزرگ استفاده نشود، همچنین اسم پکیج باید توصیفی از محتوای آن باشد. برای نام‌گذاری پکیج، معمولاً از نام اصلی محصول یا سرویسی که پیاده‌سازی می‌شود، یا نام ماژول یا قسمتی از نرم‌افزار استفاده می‌شود.

مثلاً اگر یک پروژه برای پردازش تصویر داریم، نام پکیج می‌تواند “imageprocessing” باشد. همچنین اگر می‌خواهیم یک کتابخانه بخشی از پروژه خود را به اشتراک بگذاریم، می‌توانیم از نام پروژه یا نام ماژول استفاده کنیم.

توجه داشته باشید که نام پکیج باید با نام پوشه‌ای که فایل‌های پروژه در آن هستند همخوانی داشته باشد. برای مثال، اگر فایل‌های پروژه در پوشه imageprocessing قرار دارند، نام پکیج باید imageprocessing باشد.

4.20.1.6 نام متغیر و const #

برای متغیرها و ثابت‌ها در زبان برنامه‌نویسی Go نیز نام‌های خاصی وجود دارد که برای آن‌ها پیشنهاد می‌شود. در ادامه به برخی از قوانین نام‌گذاری برای متغیرها و ثابت‌ها در Go اشاره می‌شود:

متغیر

  • نام متغیر باید با حرف کوچک شروع شود.
  • نام متغیر باید جهت نمایش نوع متغیر در نام آن و حاوی توضیح مختصر در مورد نام متغیر باشد.
  • نام متغیر باید با camelCase باشد.
  • نام متغیر باید کاملاً توصیفی باشد و نیازی به توضیحات اضافی در مورد آن نباشد.

برای مثال، به جای تعریف متغیر x برای نگهداری مقدار سن، می‌توان از نام age استفاده کرد:

1var age int // تعریف متغیر برای سن شخص

const

  • نام ثابت باید با حروف بزرگ شروع شود.
  • نام ثابت باید جهت نمایش نوع ثابت در نام آن و حاوی توضیح مختصر در مورد مقدار ثابت باشد.
  • نام ثابت باید با Snake_case باشد.
  • نام ثابت باید کاملاً توصیفی باشد و نیازی به توضیحات اضافی در مورد آن نباشد.

برای مثال، برای تعریف ثابت مقدار پاییز در فصل های سال، می‌توانیم از نام SEASON_AUTUMN استفاده کنیم:

1const SEASON_AUTUMN = "پاییز"

توجه داشته باشید که برای نام‌گذاری متغیرها و ثابت‌ها در Go، پیشنهاد می‌شود از نام‌هایی استفاده کنید که بهره بیشتری از خوانایی و قابلیت نگهداری کد برداشته شود. و نام‌هایی که توصیف کننده‌تر و صحیح‌تر هستند برای این منظور بهتر استفاده می‌شوند.