چهار تا نکته ساده و جالب توی برنامه نویسی

داشتم کتاب clean code in python را می‌خواندم. برخی نکته‌هایش به نظرم بسیار جالب‌توجه بود. البته، کل این کتاب جالب و خواندنی است.

چهار تا نکته یا اصل توصیه می‌شود و با اینکه شاید نکته‌ها خیلی ساده به نظر بیایند، اما واقعاً درخور توجه هستند؛ خصوصاً که خیلی از ما رعایتشان نمی‌کنیم.

من نکته‌ها را نوشته‌ام و چسبانده‌ام روی میز کارم تا همیشه جلوی چشمم باشند.

اصل اول:

DRY/OAOO : Don't Repeat Yourself (DRY) / Once and Only Once (OAOO)

خب، حالا این به چه معناست؟

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

دیزاین‌های گوناگونی از پترن‌ها و قاعده‌ها و ابزارها هستند که می‌توان از آن‌ها استفاده کرد تا کدمان تکراری نشود.

هر وقت بخشی از کدی را که می‌نویسم، کپی‌پیست می‌کنم، احساس شرم می‌نمایم و فکر می‌کنم جایی از کارم می‌لنگد که الان ناچارم چنین کاری بکنم.

در این کتاب، با دلیل به اهمیت این موضوع اشاره می‌شود:

نویسنده معتقد است لاجیکی که شما تکرارش می‌کنید، احتمال اِرور یا خطای زیادی دارد و البته، درست‌کردنش هم به این راحتی‌ها نیست. فرض کنید من لاجیکی را در سه بخش استفاده می‌کنم و به‌جای اینکه یک اینترفیس برایش داشته باشم، همه‌جا از اول می‌نویسم. بعد یکی خطا می‌دهد و همان یکی را درست می‌کنم. شک نکنید که یادم می‌رود دو تای دیگر را درست کنم و تعداد خطا‌هایم همین‌طور بیشتر می‌شود.

از دیگر ضررهای این کار این است که هزینه‌ها را بیشتر می‌کند؛ چنان‌که پیش‌تر نیز اشاره کردم، بسیار سخت است در کدی که این قاعده را رعایت نکرده، تغییری ایجاد کرد.

و نهایتاً نمی‌شود به این کد اعتماد کرد.

اما دومین اصل:

YAGNI: You Ain't Gonna Need It

گاهی‌وقت‌ها پیش می‌آید که برنامه‌ای را می‌نویسیم که قرار است کار معیّنی را انجام دهد. اما داریم علاوه بر آن کار معیّن، به هزار تا فرضیة دیگر نیز فکر می‌کنیم؛ مثلاً با خودمان می‌گوییم: «خب پس‌فردا اگر این‌جوری شد، چی؟ بگذار این فیچر را هم اضافه کنم.» بعد به خودمان می‌آییم و می‌بینیم که در زمان مشخصی که انتظار داشتیم این کار تمام شود، به همة آن فرضیه‌ها که نپرداخته‌ایم هیچ، آن کار اصلی را هم انجام نداده‌ایم.

اینکه به آینده فکر کنیم، لزوماً بد نیست‌؛ اما ضروری است که جنبه‌های مختلف را در نظر بگیریم،

جنبه‌هایی که در چارچوب کار اصلی‌مان باشند و ما را از هدف اصلی دور نکنند.

اصل سوم:

KIS : Keep It Simple

آقا، خانم، بردار، خواهر این‌طور فکر نکنید که هرقدر کد شما پیچیده‌تر باشد، برنامه‌نویس بهتری هستید.

اتفاقاً کاملاً برعکس است. برنامه‌نویسی خوب است که مسئله را به ساده‌ترین وجه ممکن حل کند و کدش کاملاً خوانا باشد؛ به‌طوری‌که هرکس بیرون از پروژه (حتی اگر برنامه‌نویسی هم بلد نباشد) قضیه را کاملاً بفهمد.

عمیقاً آرزو می‌کنم روزی چنین برنامه‌نویسی بشوم و کدهایم را همة آدم‌های روی کرة زمین بفهمند. :)

اصل چهارم:

EAFP/LBYL: EAFP (stands for Easier to Ask Forgiveness than Permission), while LBYL (stands for Look Before You Leap)

در این عبارت، دو تا اصل را یکجا گفته است.

به کلمة while بین دو تا اصل دقت کنید؛ چراکه این دو با همدیگر کاملاً متناقض هستند و نویسنده گفته سعی کنید جفتشان را رعایت کنید. :)

بخش اول چی می‌گوید؟ EAFP می‌گوید وقتی داری به مسئله‌ای فکر می‌کنی که حلش کنی، راه‌حل‌هایی به ذهنت می‌رسد. برو کدش را بزن و بعدش باگ‌هایش پدیدار می‌شوند.

یعنی لازم نیست مدام فکر کنی که نتیجة این و آن، چه خواهد شد. نتیجه در نوشتن و آزمایش‌کردن نمایان می‌شود.

دومی (LBYL) کاملاً برعکس این است. ترجمه‌اش می‌شود: «قبل از اینکه بپری، نگاه کن.»

یعنی سعی کنید به همة حالت‌ها و باگ‌ها و خطاهایی که ممکن است رخ دهد و کدتان با آن‌ها مواجه شود، فکر کنید.

نویسنده معتقد است که باید سعی کنید هر دو این‌ها را رعایت کنید و میانه‌رو باشید.

بعد در نکته‌ای ظریف می‌گوید:

(:
(:

امیدوارم آنچه نوشتم، مفید بوده باشد.

اشکالی داشت، حتماً بگویید. خوش‌حال می‌شوم.