بعد از خوندن این فصل، خواهید دونست که آیا کامنت اونقدرا هم که رسانه های معاند میگن خوب هست یا نه؟ کامنت خوب چیه کامنت بد چیه ؟ ویژگی های هر دسته چیه ؟ وقتی میشه با کد نطق کرد چرا کامنت گذاشت؟ خلاصه این فصل خیلی خوبه و شاید توش کد موفقیت در زندگی هم پیدا شد :)
کل فضا رو نور فراگرفته. صدات موقع حرف زدن اکو میشه. زمین و زمان دارن بهت صدباریکلا میگن و قیافشون اینطوری شده از این خوشخدمتی تو به انسانیت J . اون لحظهی ملکوتی فرامیرسه و به خودت میگی وقتشه برنامهنویس خوبی باشم. بله . دیگه وقتشه برای کدهام کامنت بذارم.
اینقدرها هم که در کوی و برزن و رسانه های معاند میگن که کامنت خوبه و خیلی کیمیاس، در واقعیت اینطوریام نیست. به صورت کلی کامنت چیز بدیه به استثنا جاهایی ک پایین تر به سمع جنابتان خواهد رسید. دلیلش هم اینه که خیلی وقتا کد عوض میشه اما کامنت همون قدیمیه میمونه. به خاطر همینه ک بزرگان از قدیم الایام فرموده اند که :
Code never lies, comments sometimes do
Comments Do Not Make Up for Bad Code
بچه زرنگ اگر فکر میکنی با کامنت میتونی اون کدای آشغالی که زدیو جبران کنی سخت در اشتباهی. کامنت مثل عطر عمل میکنه. قراره بی بویی رو به خوش بویی تبدیل کنه. اگه بوی بد میدی باید بری حموم و بشوری. با کامنت نمیشه کد بد رو شست.
Explain Yourself in Code
به جای اینکه توی کامنت توضیح بدی که کد داره چیکار میکنه، بیا کدت رو خوب تر کن که دیگه نیازی به توضیح نباشه.
خب ازینجا به بعد کامنت یه جاهایی توی خوب هاست یه جاهایی توی بدها. بریم ببینیم کجا خوبه کجا نامهربونه.
از جاهایی که کامنت به خوبی نقش ایفا میکنه اونجاهایی که مثلا میخوایم یه چیزی راجع به کپیرایت بگیم یا هنرمند کد رو ذکر کنیم.
از جمله مکان هایی که واقعا نمیتونیم با کد توضیح بدیم ومجبوریم کامنت بذاریم، اونجاییه که برای دادن اطلاعات کامنت میذاریم یا سهولت بدست آوردن اطلاعات راجع به کد. مثلا یه کدی نوشتیم که یه regex خاصی رو داره هندل میکنه. اگر بیایم یه مثال از اون regex بالاش بنویسیم جامون تو خلد برینه.
از جاهایی که کامنت واقعا مشکل گشاست جاییه که برنامه نویس میخواد اون نیت و هدف خودش رو ازینکه چرا اینطوری پیادهسازی کرده بگه. در این مواقع هرچقد هم کد خوب باشه دیگه انصافا کامنت نیازه و در آینده به کار میاد حتی اگه الان خار بیاد.
برای اینکه یکسری عواقب رو برای برنامه نویس بعدی ( که ممکنه خودمون هم باشیم ) مشخص کنیم. مثلا کامنت بذاریم که : اگر تابع ممد رو خواستی عوض کنی عواقبش با خودته:)
دقیقا مناسب وقتایی که کدها با تف به هم چسبیدن. لازمه بگیم اگر یه چیزو تکون بده ده چیز دیگه هم به لرزه درمیان.
وقتایی که میخوایم یه کارو به تعویق بیندازیم به هردلیلی، میخوایم که یه متذکر داشته باشیم که بعدا یادمون نره. مثلا فلان ویژگی به این تابع اضافه بشه یا فلان باگ رو حواست باشه بعدا هندل کنی. این مواقع هم کامنت گذاری از کارای بچه های خوبه . البته نباید این بهانه ای باشه تا اینکه کد کثیف رو با یه تودو رها کنی.
حالا که خودمونیم، ته پروژه همیشه یادمون میره تودو هارو دو کنیم : )
میریم سراغ کامنت های بد ...
اینجا میریم سراغ حرف لینوس تروالدز که میگفت
talk is cheap show me the code
وقتی که کد گویای همه چیز هست دیگه نیازی به کامنت گذاری نیست. وقتی واضحه که توی تابع ممد، ورودی ها باهم جمع میشن و در خروجی نتیجه رو چاپ میکنه چرا میای باز بالاش توضیح میدی اینا رو ؟ خوشخدمتی؟
خیلی احمقانس که بگیم هر فیلدی یا هر تابعی باید کامنت داشته باشه. جاواداک نیستیم که.
بعضیاتون هم دیده شده که وقتی جایی رو از کد تغییر میدید بالای اون جا مینویسید که : تغییر داده شد و تاریخ هم میزنید.
مگه تخت جمشیده که یادگاری مینویسید رو کد؟
کامنتی که هیچ اطلاعاتی به آدمی اضافه نکنه مثل زنبور بی عسله. اسم تابع واضح نوشته شده که ممد. بعد بالاش چرا کامنت میذاری که این تابع ممد است؟ ممد خودش زبون نداره مگه؟
گره ای که با دست تغییر اسم متغیر حل میشه رو چرا با دندون اضافه کردن کامنت میخای باز کنی؟
خب بعضیا هم میان بنر نصب میکنن وسط کد که کل محل حالیشون شه .
// Actions //////////////////////////////////
بچه زرنگ هایی هم هستن که وقتی بلاکی طولانی میشه و میخوان بفهمن هر آکولاد بسته مال کدوم چیزه میان این کار رو میکنن. لایف هکه خوبیه باهوش. ولی نکن. به جاش فانکشن های کوتاه تر بنویس تا بفهمی چی کجا بسته میشه. بعدم الان ک دیگه این آکولاد ها رنگی و خوشگل موشکلن نیازی نیست واقعا.
while ((line = in.readLine()) != null) { lineCount++; String words[] = line.split("\\W"); wordCount += words.length; } //while
/* Added by MrBug */
جهت خود ستایی و ریا میای بالای کد مینویسن که آره اینو من نوشتم. چیزایی مثل گیت معلوم میکنه چیو کی نوشته . به خودت زحمت نده، جهان پهلوان
بارها شده که میرسیم ته پروژه و میبینیم کلی کد کامنت شده داریم و مثل مامانا به خودمون میگیم که حالا شاید به درد خورد، بذاریم بمونه. اون کد ها رفاقت نیست که هرچی بیشتر بمونه ارزشش بیشتر بشه که. پاکش کنید نهایتش اگر نیاز پیدا کردید توی ورژن کنترل تون هست دیگه .(گیت)
راجع به همون چیزهای دور و بر کد کامنت بذار. نمیخواد روی در بنویسی که دیوار هم بشنوه. مثلا بیای بالای تابع اندازه قد ممد، بگی که ممد چه مهربونه قدر منو میدونه.
باز میای برای خوشخدمتی کردن، به عنوان مثال برای تابع ممد، کل تاریخ رو توی کامنت بررسی میکنی که چه کسایی اسمشون ممد بوده. ممد تا الان چکار ها کرده. ممد چقد مهربونه و ....
توضیحات اضافه برای نخوندنه. پس ننویسش.
وبسایت: https://mrbug.ir
اینستاگرام: https://www.instagram.com/mrbug_ir
توییتر: https://www.twitter.com/mrbug_ir
تلگرام: https://www.t.me/mrbug_ir