مهدی خانزادی
۲۷ تیر ۱۴۰۵
با نحوه نوشتن داکیومنت و انتشار اون اشنا میشیم و همچنین یاد میگیریم چطور از Godoc استفاده کنیم.
یک بخش از برنامه نویسی, نوشتن مستندات برای کدها است. نوشتن مستندات باعث افزایش توسعه پذیری و دسترسی پذیری نرم افزار میشوند.
گولنگ ابزاری به نام Godoc دارد که کدها را بررسی (scan) میکند و مستنداتی که درون کد فراهم شده است را به صورت صفحات وب در دسترس ما قرار میدهد.
کامنتهایی که godoc بررسی میکند، بخشی از ساختار زبان Go نیستند و نیازی هم به داشتن یک نحو (syntax) خاص و قابلپردازش توسط ماشین ندارند. در واقع، کامنتهای godoc همان کامنتهای معمولی و باکیفیتی هستند که حتی بدون وجود godoc هم خواندنشان برای توسعهدهندگان مفید و قابلدرک است.
بهطور کلی، برای مستندسازی یک نوع داده، متغیر، ثابت، تابع یا حتی یک پکیج (package)، کافی است یک کامنت معمولی را دقیقاً قبل از اعلان کردن (declaration) آن بنویسید؛ بهطوریکه هیچ خط خالیای بین کامنت و اعلان وجود نداشته باشد تا godoc این کامنت را بهعنوان مستندات مربوط به همان مورد نمایش دهد.
به عنوان مثال درون پکیج fmt یک تابع با نام Fprintln وجود دارد که دارای کامنتی همانند زیر است:
این کامنتها در نهایت در مستندات پکیج منتشر میشوند.
هرکدام از این کامنتها یک جملهی کامل است و با نام همان عنصری که توضیح میدهد آغاز میشود. رعایت این قرارداد مهم باعث میشود بتوان مستندات را در قالبهای مختلفی تولید کرد؛ از متن ساده گرفته تا HTML و حتی صفحات راهنمای UNIX (man pages). علاوه بر این، وقتی ابزارها برای خلاصهسازی، بخشی از مستندات را نمایش میدهند (برای مثال فقط خط اول یا جملهی ابتدایی را استخراج میکنند)، خروجی همچنان خوانا و قابلفهم باقی میماند.
کامنتهایی که برای اعلان یک پکیج (package) نوشته میشوند، باید توضیحی کلی دربارهی هدف، کاربرد و محتوای آن پکیج ارائه کنند. به عنوان مثال پکیج sort درون مستندات خود دارای کامنتی مانند زیر است:
اگر مستندات پکیج شما خیلی مفصل است, میتوانید یک فایل doc.go درون پکیج خود ایجاد کنید و مستندات خود را درون این فایل قرار دهید. معمولا این فایل تنها شامل مستندات است و هیچ کد گولنگی درون آن نوشته نمیشوند. به عنوان مثال پکیج gob دارای فایل doc.go است. کامنت هایی که درون فایل doc.go قرار گرفته اند درون مستندات پکیج نیز منتشر میشوند. برای مثال مستندات پکیج gob شامل همان کامنت هایی که در doc.go نوشته شده اند است.
نکته: هنگام نوشتن کامنت برای یک پکیج، فارغ از اندازهی آن، به یاد داشته باشید که جملهی اول کامنت در فهرست پکیجهای godoc نمایش داده میشود؛ بنابراین بهتر است این جمله خلاصهای دقیق از هدف و کاربرد پکیج باشد.
کامنتهایی که مستقیماً قبل از هیچ اعلان سطحبالایی (top-level declaration) قرار نگرفته باشند، در خروجی godoc نمایش داده نمیشوند. البته یک استثنای مهم وجود دارد, کامنتهای سطحبالایی که با عبارت BUG(who) شروع میشوند، بهعنوان باگهای شناختهشده تشخیص داده شده و در بخش Bugs مستندات پکیج نمایش داده میشوند. مقدار who باید نام کاربری فردی باشد که میتواند اطلاعات بیشتری دربارهی آن مشکل ارائه دهد. برای مثال، نمونهی زیر یک باگ شناختهشده در پکیج bytes است:
گاهی یک فیلد از یک struct، یک تابع، یک نوع داده (type) یا حتی یک پکیج کامل دیگر مورد استفاده نیست یا دیگر ضرورتی ندارد، اما برای حفظ سازگاری با برنامههای قدیمی همچنان باید باقی بماند. در چنین مواردی، برای مشخص کردن اینکه یک شناسه (identifier) دیگر نباید استفاده شود، یک پاراگراف با عبارت Deprecated: به مستندات آن اضافه کنید و در ادامه دلیل یا توضیح مربوط به منسوخ شدن آن را بنویسید تا درون مستندات نمایش داده شود.
چندین قانون ساده وجود دارد که با در نظر گرفتن آنها باعث میشوید داکیومنتی که godoc تولید میکند دارای ساختار یکپارچه تری باشد:
نکتهی مهم این است که هیچکدام از این قوانین شما را مجبور به انجام کارهای پیچیده یا غیرمعمول نمیکنند. در واقع، یکی از نقاط قوت رویکرد سادهی godoc همین سهولت استفاده از آن است. به همین دلیل، بخش بزرگی از کدهای Go، از جمله تمام کتابخانهی استاندارد، از این قراردادها پیروی میکنند. کدهای شما نیز تنها با رعایت همین اصول سادهی نوشتن کامنت میتوانند مستندات مناسبی تولید کنند.
تمام پکیجهای Go که در مسیر $GOROOT/src/pkg قرار دارند و همچنین پکیجهای موجود در محیطهای کاری GOPATH، از طریق رابط خط فرمان و رابط HTTP مربوط به godoc در دسترس هستند. همچنین میتوانید با استفاده از فلگ -path مسیرهای دیگری را برای ایندکس شدن مشخص کنید، یا کافی است در پوشهی سورس خود دستور زیر را اجرا کنید:
همچنین در صورتی که نیاز است داکیومنت ها بر روی پورت خاصی قرار بگیرند میتوانیم از فلگ -http استفاده کنیم:
برای جزییات بیشتر میتوانید مستندات godoc را بررسی کنید.
توضیحات مفصل تری در مورد قواعد داکیومنت نویسی در گولنگ وجود داره که میتوانید با مراجعه به مستندات گولنگ آنها را بررسی کنید.
قسمت قبل: معرفی go fix | گولنگ به زبان ساده