خلاصه کتاب clean code - بخش سوم

وزش سنت در گیسوی مدرنیتهجوگیرساختن مخاطب برای خواندن تا تهبعد از خوندن این فصل، خواهید دونست که آیا کامنت اونقدرا هم که رسانه های معاند میگن خوب هست یا نه؟ کامنت خوب چیه کامنت بد چیه ؟ ویژگی های هر دسته چیه ؟ وقتی میشه با کد نطق کرد چرا کامنت گذاشت؟ خلاصه این فصل خیلی خوبه و شاید توش کد موفقیت در زندگی هم پیدا شد :‌)فصل چهارم - commentsکل فضا رو نور فراگرفته. صدات موقع حرف زدن اکو میشه. زمین و زمان دارن بهت صدباریکلا میگن و قیافشون اینطوری شده از این خوش‌خدمتی تو به انسانیت J . اون لحظه‌ی ملکوتی فرامیرسه و به خودت میگی وقتشه برنامه‌نویس خوبی باشم. بله . دیگه وقتشه برای کدهام کامنت بذارم.اینقدرها هم که در کوی و برزن و رسانه های معاند میگن که کامنت خوبه و خیلی کیمیاس، در واقعیت اینطوریام نیست. به صورت کلی کامنت چیز بدیه به استثنا جاهایی ک پایین تر به سمع جنابتان خواهد رسید. دلیلش هم اینه که خیلی وقتا کد عوض میشه اما کامنت همون قدیمیه میمونه. به خاطر همینه ک بزرگان از قدیم الایام فرموده اند که :Code never lies, comments sometimes doComments Do Not Make Up for Bad Codeبچه زرنگ اگر فکر میکنی با کامنت میتونی اون کدای آشغالی که زدیو جبران کنی سخت در اشتباهی. کامنت مثل عطر عمل میکنه. قراره بی بویی رو به خوش بویی تبدیل کنه. اگه بوی بد میدی باید بری حموم و بشوری. با کامنت نمیشه کد بد رو شست.Explain Yourself in Codeبه جای اینکه توی کامنت توضیح بدی که کد داره چیکار میکنه، بیا کدت رو خوب تر کن که دیگه نیازی به توضیح نباشه.خب ازینجا به بعد کامنت یه جاهایی توی خوب هاست یه جاهایی توی بدها. بریم ببینیم کجا خوبه کجا نامهربونه.Good Comments-Legal Commentsاز جاهایی که کامنت به خوبی نقش ایفا میکنه اونجاهایی که مثلا میخوایم یه چیزی راجع به کپی‌رایت بگیم یا هنرمند کد رو ذکر کنیم.Good Comments-Informative Commentsاز جمله مکان هایی که واقعا نمیتونیم با کد توضیح بدیم ومجبوریم کامنت بذاریم، اونجاییه که برای دادن اطلاعات کامنت میذاریم یا سهولت بدست آوردن اطلاعات راجع به کد. مثلا یه کدی نوشتیم که یه regex خاصی رو داره هندل میکنه. اگر بیایم یه مثال از اون regex بالاش بنویسیم جامون تو خلد برینه.Good Comments-Explanation of Intentاز جاهایی که کامنت واقعا مشکل گشاست جاییه که برنامه نویس میخواد اون نیت و هدف خودش رو ازینکه چرا اینطوری پیاده‌سازی کرده بگه. در این مواقع هرچقد هم کد خوب باشه دیگه انصافا کامنت نیازه و در آینده به کار میاد حتی اگه الان خار بیاد.Good Comments-Warning of concequencesبرای اینکه یکسری عواقب رو برای برنامه نویس بعدی ( که ممکنه خودمون هم باشیم ) مشخص کنیم. مثلا کامنت بذاریم که : اگر تابع ممد رو خواستی عوض کنی عواقبش با خودته‌:)دقیقا مناسب وقتایی که کدها با تف به هم چسبیدن. لازمه بگیم اگر یه چیزو تکون بده ده چیز دیگه هم به لرزه درمیان.Good Comments-TODO Commentsوقتایی که میخوایم یه کارو به تعویق بیندازیم به هردلیلی، میخوایم که یه متذکر داشته باشیم که بعدا یادمون نره. مثلا فلان ویژگی به این تابع اضافه بشه یا فلان باگ رو حواست باشه بعدا هندل کنی. این مواقع هم کامنت گذاری از کارای بچه های خوبه . البته نباید این بهانه ای باشه تا اینکه کد کثیف رو با یه تودو رها کنی.حالا که خودمونیم، ته پروژه همیشه یادمون میره تودو هارو دو کنیم : )میریم سراغ کامنت های بد ...Bad Comments-Redundant Commentsاینجا میریم سراغ حرف لینوس تروالدز که میگفتtalk is cheap show me the codeوقتی که کد گویای همه چیز هست دیگه نیازی به کامنت گذاری نیست. وقتی واضحه که توی تابع ممد، ورودی ها باهم جمع میشن و در خروجی نتیجه رو چاپ میکنه چرا میای باز بالاش توضیح میدی اینا رو ؟ خوش‌خدمتی؟Bad Comments-Mandated Commentsخیلی احمقانس که بگیم هر فیلدی یا هر تابعی باید کامنت داشته باشه. جاواداک نیستیم که.Bad Comments-Journal Commentsبعضیاتون هم دیده شده که وقتی جایی رو از کد تغییر میدید بالای اون جا مینویسید که : تغییر داده شد و تاریخ هم میزنید.مگه تخت جمشیده که یادگاری مینویسید رو کد؟Bad Comments-Noise Commentsکامنتی که هیچ اطلاعاتی به آدمی اضافه نکنه مثل زنبور بی عسله. اسم تابع واضح نوشته شده که ممد. بعد بالاش چرا کامنت میذاری که این تابع ممد است؟ ممد خودش زبون نداره مگه؟Bad Comments-Don’t Use a Comment When You Can Use a Function or a Variableگره ای که با دست تغییر اسم متغیر حل میشه رو چرا با دندون اضافه کردن کامنت میخای باز کنی؟Bad Comments-Position Markersخب بعضیا هم میان بنر نصب میکنن وسط کد که کل محل حالیشون شه .کامنت بد :// Actions //////////////////////////////////Bad Comments-Closing Brace Commentsبچه زرنگ هایی هم هستن که وقتی بلاکی طولانی میشه و میخوان بفهمن هر آکولاد بسته مال کدوم چیزه میان این کار رو میکنن. لایف هکه خوبیه باهوش. ولی نکن. به جاش فانکشن های کوتاه تر بنویس تا بفهمی چی کجا بسته میشه. بعدم الان ک دیگه این آکولاد ها رنگی و خوشگل موشکلن نیازی نیست واقعا.while ((line = in.readLine()) != null) { lineCount++; String words[] = line.split(&quot\\W&quot); wordCount += words.length; } //whileBad Comments-Attributions and Bylines/* Added by MrBug */جهت خود ستایی و ریا میای بالای کد مینویسن که آره اینو من نوشتم. چیزایی مثل گیت معلوم میکنه چیو کی نوشته . به خودت زحمت نده، جهان پهلوانBad Comments-Commented-Out Codeبارها شده که میرسیم ته پروژه و میبینیم کلی کد کامنت شده داریم و مثل مامانا به خودمون میگیم که حالا شاید به درد خورد، بذاریم بمونه. اون کد ها رفاقت نیست که هرچی بیشتر بمونه ارزشش بیشتر بشه که. پاکش کنید نهایتش اگر نیاز پیدا کردید توی ورژن کنترل تون هست دیگه .(گیت)Bad Comments-Nonlocal Informationراجع به همون چیزهای دور و بر کد کامنت بذار. نمیخواد روی در بنویسی که دیوار هم بشنوه. مثلا بیای بالای تابع اندازه قد ممد، بگی که ممد چه مهربونه قدر منو میدونه.Bad Comments-Too Much Informationباز میای برای خوش‌خدمتی کردن، به عنوان مثال برای تابع ممد، کل تاریخ رو توی کامنت بررسی میکنی که چه کسایی اسمشون ممد بوده. ممد تا الان چکار ها کرده. ممد چقد مهربونه و .... توضیحات اضافه برای نخوندنه. پس ننویسش.وبسایت: https://mrbug.irاینستاگرام: https://www.instagram.com/mrbug_irتوییتر: https://www.twitter.com/mrbug_irتلگرام: https://www.t.me/mrbug_ir https://virgool.io/@mrbug_ir/cleancode-part4-bzqm0rfoggpv