Post by Mohamed Elmasry

Backend Software Engineer | PHP • Laravel • REST APIs • MySQL • Redis • Queues • WebSockets | Building Scalable Backend Systems | Open to Remote & On-site Roles

صباح الخير معلومة جديدة في أقل من دقيقتين ممكن تخليك Backend Engineer أحسن من امبارح TDD أو Test Driven Development من الحاجات اللي عليها جدل كبير الفكرة ببساطة إنك بدل ما تكتب الكود الأول وبعدها تعمل Test بتعمل العكس بتكتب Test بيوصف السلوك اللي انت متوقعه وهيفشل طبيعي لأن الكود لسه مش موجود بعدها تكتب أقل كمية كود تخلي الـ Test يعدي وبعدين تعمل Refactor وتحسن الكود وانت مطمن إن الـ Tests هتقولك لو بوظت حاجة ودي الدورة المشهورة بتاعة TDD Red -> Green -> Refactor في ناس شايفة إنك لازم تستخدمه في كل مشروع وفي ناس شايفة إنه تضييع وقت بالنسبة ليا أنا مش بفضله في أغلب الحالات لأن في مشاريع كتير المتطلبات بتتغير كل شوية وساعتها هتلاقي نفسك بتعدل في الـ Tests أكتر ما بتعدل في الكود لكن في حالات معينة بشوف إنه يستاهل: لما يكون عندك Business Logic معقدة أو Feature حساسة وأي Bug فيها ممكن يكلفك وقت أو فلوس أو لما يكون الجزء اللي هتشتغل عليه محتاج تقعد تفكر في كل السيناريوهات والـ Edge Cases قبل ما تكتب أول سطر كود هنا TDD بيجبرك تسأل نفسك هيحصل ايه لو الـ Stock خلص هيحصل ايه لو المستخدم كرر نفس الطلب هيحصل ايه لو الداتا ناقصة هيحصل ايه لو حصل Failure في نص العملية الأسئلة دي غالبا هتخليك تكتشف مشاكل في الـ Design قبل ما تكتب الكود أصلا وساعتها الكود نفسه بيطلع أنضف وأسهل في الاختبار وأسهل في الـ Refactoring بعد كده لكن لو بعمل Prototype أو MVP أو لسه بجرب فكرة جديدة غالبا مش هستخدم TDD لأن وقتها الأهم إني أوصل لحل الأول وبعدها أرجع أثبت السلوك بالـ Tests في الآخر TDD مش حاجة لازم تطبقها في كل مكان هو مجرد Tool استخدمه لما يخليك تبني Software أحسن ومتستخدموش لما يبقى مجرد عبء من غير قيمة حقيقية #Laravel #PHP #BackendDevelopment #SoftwareEngineering #Testing #TDD