اخیرا گوگل مستنداتی به عنوان Style Guide برای گولنگ ارائه داده که پیشنهاد میکنم مطالعهش کنید. حداقل قسمت Overview و Style Guide رو مطالعه کنید و قسمت های Decisions و Best-Practices رو میتونید به عنوان مرجع در نظر بگیرید. یعنی هر وقت برای مسالهای دنبال راه حل بودید یا بر سر نحوه نوشتن کد یه statement خاص دچار تردید بودید، در مرجع جستجو کنید ببینید چیزی در اون مورد گفته یا نه.
در Style Guide نکات خیلی پایهای و مهم رو برای داشتن یه Code Style Guide خوب در گولنگ مطرح کرده.
از بین موارد مطرح شده، Clarity خیلی مهمه. Clarity یعنی اینکه کدی که شما مینویسی برای خواننده واضح باشه. این شاخص دو تا وجه داره، وجه اول اینه که کد شما باید به نحوی باشه که خواننده با خوندنش متوجه بشه کد داره چیکار میکنه.
اما وجه دومی هم داره که به شخصه شاید کمتر بهش اهمیت میدادم، اونم بحث «چرایی» هست. کد خوانا کدی هست که علاوه بر اینکه خواننده با خوندنش متوجه بشه که «کد داره چیکار میکنه»، خواننده به این موضوع هم پی ببره که «کد چرا داره این کار رو میکنه».
برای اینکه کد شما از نظر شاخص Clarity دارای نمره خوبی در وجه دوم (چرایی) هم باشه بهتره که در قسمتهایی که لازم هست یه سری توضیحات (commentary) رو بنویسید که خواننده متوجه جزییات و چرایی کد هم بشه. در مستندات لینکهایی برای نمونه قرار داده شده که میتونید با خوندنشون ایده بگیرید، مثل توضیحات ابتدای پکیج sort.
البته برای گولنگ چندین سال هست که مرجعی منتشر شده به اسم Effective Go، پیشنیاز Style Guide هست و اگه مطالعهش نکردید بهتره اول مطالب مربوط به Effective Go رو بخونید و بعد به سراغ Style Guide بیاید.
روشی که خود من با این دست از مستندات برخورد میکنم اینطوریه که سعی میکنم در ابتدا قسمتهای مهم رو مطالعه کنم. بعدش در مورد موضوعات مختلف سعی میکنم قسمتهایی که تو کار بیشتر اهمیت داره رو حتما مطالعه کنم، مثلا نحوه نامگذاری متغیرها، توابع و غیره به نظرم بخش مهمی هست، که بهتره مطالعه بشه. بعد از مطالعه این قسمتهای مهم سعی میکنم بصورت روزمره در کدهایی که مینویسم پیشنهادات ارائه شده رو اعمال کنم. مزیت این روش اینه که شما با خوندن بخش کوچیکی از مستندات، میتونید به صورت کاربردی از مطالبش بهرهمند بشید و در کدتون اعمالش کنید. مزیت دیگهش هم اینه که به مرور زمان که با چالشهای بیشتری تو کد مواجه میشید، میتونید به مستندات برگردید و کم کم قسمتهای بیشتری از پیشنهادات ارائه شده در مستندات رو در کدتون اعمال کنید.
گفتن این نکته هم خالی از لطف نیست که لازم نیست همه مطالب گفته شده در مستندات رو حتما اعمال کنید، حتی ممکنه در مواردی لازم باشه بر خلاف مستندات رفتار کنید. خود مستندات برای این موضوع یه تقسیم بندی انجام داده و مطالب منتشر شده رو به چند بخش تقسیم کرده، مطالبی که Canonical هستند یه جورایی استاندارد محسوب میشن، در طول زمان خیلی تغییر نمیکنن و خوبه که همه جا اعمال بشن. مطالبی که Normative هستند، شامل مطالبی میشه که اکثریت Code Reviewerها روش توافق دارن و ممکنه در طول زمان تغییر کنه و لزومی نداره همه توسعهدهندگان ازش با خبر باشن و هدف اصلی این دسته از مطالب ایجاد ثبات (Consistency) در کد هست.
طبق این تعریف، مطالب گفته شده در Style Guide هم Canonical هست و هم Normative. مطالب گفته شده در Style Decisions فقط Normative هستند و مطالب بخش Best-Practices شامل هیچ کدوم از دو دسته مذکور نمیشه.