کد دوست‌داشتنی

  • یوسف مهرداد

در دوره‌های آموزشی از شرکت‌کنندگان می‌خواهم تا از دید خود بگویند چگونه کدی را دوست دارند و بدان عشق می‌ورزند. در ابتدا خصایص کد مورد علاقه خود را توضیح می‌دهند و بعد تکه کدی را (از کدهای خود یا دیگران) انتخاب و خصایص را در آن جست‌وجو می‌کنند و در صورت یافته نشدن، کد را به شکلی که دوست‌داشتنی شود، تغییر می‌دهند یا توضیح می‌دهند که چگونه این کار انجام شود.

این گونه کدها را «کد دوست‌داشتنی» می‌خوانیم.
توصیه می‌شود که در تیم‌های کاری یا دانشگاهی این ایده را پیاده کنید. خوشحال خواهم شد از نتایج آن آگاه شوم.

پرسش: شما چگونه کدی را دوست می‌دارید؟

گزیده:
برای زیستن دو قلب لازم است، قلبی که دوست بدارد، قلبی که دوستش بدارند.
احمد شاملو

https://bibalan.com/?p=497
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

نظرات (5)

wave
  • مظفری

    ۲۹ آذر ۱۳۹۰ در ۰۰:۰۰

    سلام استاد
    سوال خیلی برایم جالب است. و واقعا هم کد دوست داشتنی وجود دارد.
    کدی که خودم خیلی دوست دارم، البته از آداب برنامه نویسیه خوب کمی فاصله دارد 😛 ، کدهای inline ی هست که کارهای نسبتا بزرگ انجام می دهند. به عنوان مثال، وقتی در سیشارپ، توابع linq را ترکیب می کنم و در یک خط نسبتا کوتاه یک کار پیچیده را انجام می دهم (البته کد این کار را انجام می دهد) کلی از آن کد خوشم می آید.

    این سوال را امروز در وبلاگم مطرح کردم. برای مشاهده این پست، از لینک زیر استفاده کنید.
    http://cscience.mihanblog.com/post/278

    —————————————
    جناب آقای مظفری عزیز
    سلام،
    از لطفی که دارید بسیار سپاسگزارم. از این که این نوشته را در وبلاگ قشنگتان گذاشتید، تشکر می‌کنم.
    پیشنهادم این است که این کار را در بین دوستانتان تجربه کنید. مطمئن هستم که نتایج جالبی به دست خواهید آورد. خوشحال می‌شوم اگر مرا هم از نتایج آن مطلع کنید.
    شاد باشید و به دوستان سلام برسانید
    مهرداد

    پاسخ
  • امیر جلیلی فرد

    ۲۹ آذر ۱۳۹۰ در ۰۰:۰۰

    همیشه وقتی کدی مینویسم از خودم میپرسم :
    اگر Scott Hanselman کد های مرا ببیند آیا میتوانم دلیلی برای بودن هر خط کد برای او بیاورم؟ آیا میتوان برای کدهای من دلیلی برای نبودن فلان خط پیدا کرد؟ آیا این کد اصول شی گرایی و همچنین Refactoring را رعایت کرده است؟ آیا برای هر یک از متد ها کامنتی درج کرده ام؟ این متد من چقدر روی Performance تاثیر میگذارد؟ آیا کد های من حال کسی را بهم میزند؟! همیشه حس حالت تهوع را در برنامه نویسی که کد های من را میبیند تصور میکنم! .

    کد من باید مناسب برای نوع اپلیکیشن (مثلا وب یا ویندوز) باشد. برای مثال بسیاری از برنامه نویسان وقتی برنامه وب مینویسند توجهی به اصول برنامه نویسی در وب نمیکنند و بالعکس در مورد برنامه های غیر وب.

    در کدهای من چقدر آینده سیستم پیش بینی شده است؟برای مثال آیا پیش بینی شده است که با عوض شدن دیتابیس نباید کدهای من تغییر زیادی کند؟

    اینها معیارهایی بودند که فعلا به ذهنم رسید.

    پاسخ
  • مهدی حیدرزاده

    ۱۰ دی ۱۳۹۰ در ۰۰:۰۰

    به نظر من کدی ایده آل است که یک برنامه نویس دیگر بدون نیاز به خواندن کامنت آن و فقط با خواندن خود کد متوجه شود که کاری که کد نوشته شده انجام می دهد چیست.
    به قول Adam Bien که می گه Comments are evil !!!!
    بنابراین خوانا بودن کد در نگاه اول فاکتور مناسبی برای خوب بودن آن کد است.

    پاسخ
  • مهدی حیدرزاده

    ۱۰ دی ۱۳۹۰ در ۰۰:۰۰

    به نظر من کدی ایده آل است که یک برنامه نویس دیگر بدون نیاز به خواندن کامنت آن و فقط با خواندن خود کد متوجه شود که کاری که کد نوشته شده انجام می دهد چیست.
    به قول Adam Bien که می گه Comments are evil !!!!
    بنابراین خوانا بودن کد در نگاه اول فاکتور مناسبی برای خوب بودن آن کد است.

    پاسخ
  • سام ناصری

    ۲۰ بهمن ۱۳۹۰ در ۰۰:۰۰

    منظورتون از کد دوست داشتنی کد خوب هست یا لزوماً نه؟
    آخه همونطور که آقای مظفری گفتند linq خیلی زیبا و سکسی هست ولی من از بکار بردنش خودداری میکنم به خاطر اینکه نمیشه به راحتی دیباگش کرد و در ضمن در یک متود که فقط یه خط linq توش داره نمیشه از قابلیت Edit and Continue استفاده کرد.(تجربه شخصی)
    پس به نظر من کدی که با linq نوشته شده فوق العاده دوست داشتنی هست اما به دلیل محدودیت های گفته شده لزوما کد خوبی نیست.

    ———————————————–
    سلام
    به مثال جالبی اشاره فرمودید.
    اگر بخواهم گفته شما را از دیدگاه دیگری بیان کنم، شاید بدین شکل باشد:
    یکی از خصوصیات کد دواشتنی، سادگی خطایابی آن است.
    سپاسگزارم.
    مهرداد

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برای خروج از جستجو کلید ESC را بفشارید