چرا TDD سبک کدنویسی من رو توی لاراول عوض کرد؟
همهمون اون لحظه دلهرهآور رو تجربه کردیم که یه کدی رو دیپلوی میکنیم و فقط امیدواریم جایی از سیستم نترکیده باشه! امروز میخوام درباره روشی بگم که این ترس رو برای من از بین برد: TDD یا توسعه مبتنی بر تست.
کل داستان TDD اینه که برعکسِ همیشه عمل کنیم: «اول تست بنویس، بعد کد بزن.»
شاید اولش عجیب به نظر بیاد که برای چیزی که هنوز وجود نداره تست بنویسیم، ولی جادوی کار همینجاست. توی دنیای PHP و لاراول، فرآیند سه مرحلهای ساده است که بهش میگن Red-Green-Refactor:
۱. مرحله قرمز (Red):
اول یه تست مینویسم که شکست میخوره (Fail میشه). مثلاً توی تستم میگم “وقتی درخواست زدم به /register باید کاربر ساخته بشه”. چون هنوز کنترلری نساختم، تست فیل میشه. این یعنی هدفم مشخص شده.
۲. مرحله سبز (Green):
حالا فقط و فقط اونقدر کد میزنم که تستم پاس بشه (Green). اینجا اصلا مهم نیست کدم کثیفه یا بهینه نیست. هدف فقط سبز شدن تسته.
۳. مرحله ریفکتور (Refactor):
حالا که خیالم راحته کد کار میکنه، برمیگردم و تمیزش میکنم. کدها رو میبرم توی Service Layer، متغیرها رو مرتب میکنم و دیزاین پترنها رو پیاده میکنم. تا وقتی تستم سبزه، یعنی هیچی خراب نشده.
چرا توی لاراول استفاده از TDD حتی لذت بخش تره؟
لاراول خودش این مسیر رو هموار کرده. ابزارهایی مثل PHPUnit و Pest کنار دستمونن و نوشتن Feature Test برای روتها و دیتابیس واقعاً لذتبخشه.
شاید فکر کنید TDD وقتگیره، ولی باور کنید وقتی بعد از دو ماه برمیگردید سراغ کدتون و میخواید یه فیچر جدید اضافه کنید، داشتن اون تستها بهتون قدرتی میده که بدون ترس از شکستن کدهای قبلی، تغییرات رو اعمال کنید.
معماری TDD فقط باگها رو کم نمیکنه، بلکه باعث میشه معماری نرمافزارتون از همون اول تمیز و ماژولار شکل بگیره.
اگه هنوز شروع نکردید، پیشنهاد میکنم توی پروژه بعدیتون، قبل از ساختن اولین کنترلر، تستش رو بنویسید!
@DevTwitter | <Taha Zargar/>
Post #11476
12.1K
- 👍 41
- 👎 29
- ❤ 19