لطفا جاواسکریپت مرورگر خود را فعال سازید!

نحوه فعال سازی در کروم
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نحوه فعال سازی در فایرفاکس
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
Code Review، بخشی لاینفک از فرایند توسعهٔ نرم‌افزار

Code Review، بخشی لاینفک از فرایند توسعهٔ نرم‌افزار

اغلب فکر می‌کنیم بعد از به پایان رساندن فرایند توسعهٔ یک نرم‌افزار، برای بررسی کدهای آن باید خط‌به‌خط به کدها نگاه کنیم، کیفیت کدها را بسنجیم و کارهایی از این دست اما درعین‌حال در اکثر مواقع از سؤالاتی کلی که در مورد یک نرم‌افزار باید از خود بپرسیم، غافل می‌شویم. گاهی‌اوقات یک برنامه‌ای می‌نویسید و مشتری از شما می‌خواهد که تغییراتی در آن ایجاد کنید و یا باگی را برطرف نمایید که کارهایی از این دست همواره از میزان ریسک قابل‌توجهی برخوردارند. در این مقاله سعی کرده‌ایم به بررسی در مورد بهینه‌ترین روش به‌منظور اعمال تغییرات جدید و یا برطرف کردن باگی که در نرم‌افزار به‌وجود آمده است -آن هم با صرف انرژی کمتر- بپردازیم.

هنگامی که کدی را بررسی می‌کنید، آیا مایلید کد را اجرا، تست و یا نگاهی به داکیومنت‌های آن بیاندازید؟ امیدواریم در پایان این مقاله متقاعد شده‌ باشید که هیچ یک از موارد فوق کار درستی نیستند!

کار را با تست‌ کردن نرم‌افزار شروع کنید
اولین چیزی که روی آن اصرار می‌ورزیم، این است که باید بتوان کد را در جایی اجرا کرد که بسیار شبیه به محیطی است که کد قرار است مورد استفاده قرار گیرد (Production Environment). حال برای انتخاب چنین محیطی، چند گزینه روی میز وجود دارد. در برخی موارد، این به‌معنای «اجرای زندهٔ کد» یا دپلوی کردن کد در همان محیط مورد استفاده است؛ به‌عبارت دیگر، سورس‌کد را دقیقاً در همان محیط مورد استفاده به‌طور زنده ران کرد. 

وقتی پای تست کردن به میان می‌آید، نمونه دیتا‌هایی برای آزمایش یک ویژگی جدید یا رفع باگ داده می‌شوند؛ در بسیاری مواقع این دست داده‌ها، همچون دیتای واقعی نیستند و همین مسئله می‌تواند دولوپرها را در فرایند دیباگینگ دچار مشکل کند.

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

مثلاً متن «lorem ipsum» در طراحی قالب‌ و پر کردن فیلدهای یک فرم خوب به‌نظر می‌رسند، اما وقتی حتی در فیلدی که قرار است عدد دریافت کند متن lorem ipsum وارد می‌کنیم، در ولیدیشن فرم‌ها نیز دچار گمراهی خواهیم شد و به همین دلیل است که اصرار می‌ورزیم برای تست نرم‌افزار، از دیتای واقع‌بینانه استفاده شود.

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

خطرهای اعمال تغییرات را مدنظر قرار دهید
تغییرات گاهی از هم مستقل نیستند و به‌یکدیگر وابسته‌اند؛ یعنی این تغییرات می‌توانند روی دیگر قسمت‌های سیستم هم اثر بگذارند؛ اگر متوجه شدید که تغییرات تحت بررسی کاملاً از هم مستقل نیستند، تصمیم‌گیری برای ادامۀ کار کمی دشوار می‌شود.

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

تمرکز روی خروجی نرم‌افزار را از دست ندهید
قبل از این‌که در مورد کیفیت کدها فکر کنید، لازم است سؤالاتی از خود بپرسید که از جملهٔ مهم‌ترین آن‌ها می‌توان به موارد زیر اشاره کرد:
- آیا این نرم‌افزار یک مشکل واقعی از مخاطب را برطرف می‌کند؟
- آیا راه‌حلِ قوی‌ای را در اختیار مخاطب می‌گذارد یا تنها این راه‌حل معمولی است؟ 
- چگونه به این نکته پی ببریم که این تغییر بهترین تغییر ممکن است؟
- چه مشکلات جدیدی ممکن است در نتیجۀ این تغییر ایجاد شوند و چگونه آن‌ها را کاهش دهیم؟
- اگر چیزی نادرست بود، آیا می‌توان تغییر را به‌طور کلی به‌راحتی بازگرداند؟
- هزینه‌های مربوط به نگهداری مرتبط با این تغییر کدامند؟

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

این فرآیند به‌نوعی تضمین‌کنندهٔ این است که شما درنهایت به‌طور دقیق کدهایی را بررسی کرده‌اید که احتمال بروز خطا در آن‌ها بالا است؛ درضمن، این‌کار باعث کاهش انرژی و زمان صرف شده در بررسی کدها می‌شود و از پاک کردن قسمتی از کدها که بعدها ممکن است پشیمانی به بار آورد جلوگیری می‌کند.

منبع


سحر شاکر