TGViewer
DevTwitter | توییت برنامه نویسی DevTwitter | توییت برنامه نویسی @devtwitter · 32.6K subscribers
Post #11476 12.1K
چرا 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/>
  • 👍 41
  • 👎 29
  • ❤ 19
More from @devtwitter
  1. Oct 16, 2026اگر AI بتواند کد را ۱۲ برابر سریع‌تر تولید کند، آیا Git، Code Review و CI/CD ما هم برای چن…
  2. Oct 16, 2026یه اپ برای مدیریت clipboard توی مک. دیگه با خیال راحت چندین چیز رو میشه کپی کرد و انتخاب ک…
  3. Oct 16, 2026خب من دوباره کلی توکن کلاد سوزوندم تا مشکل اساسی فارسی‌نویسی رو توی ترمینال ویندوز حل کنم…
  4. Oct 16, 2026داشتم از روی کنجکاوی بررسی میکردم که چطور میشه جمع‌آوری و انتقال لاگ‌های لینوکس رو قابل‌ ا…
  5. Oct 15, 2026❓امروزه علت و ریشه‌ی عدم ثبات و زودرنجی بازیکنان برزیلی چیه؟ ❓چرا انسان به کنش‌های منفی نس…
  6. Oct 15, 2026Post #13561
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →