رابرت سی. مارتین،در فصل پنجم کتاب "The Clean Coder"، به معرفی و اهمیت روش توسعه به روش تستمحور یا TDD (Test-Driven Development) میپردازد. TDD یک روش توسعه نرمافزار است که برنامهنویسان را ملزم میکند قبل از نوشتن کد تولیدی، تستهای واحد (unit tests) را بنویسند. این روش که بخشی از جنبش "برنامهنویسی افراطی" (Extreme Programming) بود، طی سالها به یکی از اصول بنیادین در توسعهی چابک (Agile) تبدیل شده است. TDD به طور قابل توجهی بهرهوری را افزایش میدهد و کدهای بدون باگ و با کیفیت بالا تولید میکند.
پیدایش TDD و تجربه شخصی مارتین
مارتین توضیح میدهد که اولین بار در سال ۱۹۹۸ با مفهوم "برنامهنویسی با تست اول" یا "Test First Programming" آشنا شد و مانند بسیاری از برنامهنویسان، ابتدا به این ایده مشکوک بود. او که تا آن زمان حدود ۳۰ سال تجربه برنامهنویسی حرفهای داشت، این ایده را عجیب میدانست که قبل از نوشتن کد واقعی، تست بنویسد. اما با این حال، او تصمیم گرفت به مدفورد، اورگن سفر کند تا این روش را به طور مستقیم از کنت بک (Kent Beck)، یکی از بنیانگذاران TDD، یاد بگیرد.
او توضیح میدهد که چقدر این تجربه برای او شگفتانگیز بود. در حین کدنویسی با کنت بک، مارتین شاهد بود که کنت ابتدا یک تست کوچک نوشت، سپس مقدار کمی کد تولیدی نوشت تا تست به درستی اجرا شود. این فرآیند با سرعت بسیار بالا و در چرخههای زمانی ۳۰ ثانیهای انجام میشد. او از این که میدید کنت بدون هیچگونه توقفی به توسعه کد با این سرعت ادامه میدهد، شگفتزده شد. او فهمید که این چرخهی سریع میتواند بهرهوری را به طور چشمگیری افزایش دهد، همانطور که زمانی که او با زبانهای مفسری مانند Basic یا Logo بازی میکرد، چنین تجربهای داشت. این درک او را به سمت پذیرش TDD هدایت کرد.
سه قانون TDD
مارتین سه قانون اصلی TDD را برای درک بهتر این روش به صورت زیر تعریف میکند:
این قوانین به توسعهدهندگان کمک میکنند که فرآیند توسعه را به چرخههای کوتاه و سریع تقسیم کنند که در آن کد تولیدی و کد تست به صورت همزمان و مکمل یکدیگر رشد میکنند.
مارتین در این فصل به مزایای متعدد TDD پرداخته و توضیح میدهد که چرا این روش یکی از ابزارهای حرفهای برای توسعهدهندگان نرمافزار است. او برخی از مزایای TDD را به شرح زیر بیان میکند:
انتخاب حرفهایها (The Professional Option)
مارتین نتیجه میگیرد که TDD انتخابی حرفهای برای توسعهدهندگان نرمافزار است. این روش بهبود قطعیت، کاهش نرخ خطا، مستندسازی بهتر، و طراحی بهینه را به همراه دارد. با این حال، او تصریح میکند که TDD یک راهحل جادویی نیست و نمیتواند تضمین کند که کدهای نوشته شده همیشه بهترین باشند. او معتقد است که TDD باید با دقت و با توجه به شرایط خاص هر پروژه استفاده شود.
مارتین تاکید میکند که TDD یک راهحل جادویی نیست. این روش نیازمند دقت و توجه به جزئیات است و تنها رعایت قوانین آن تضمینی برای داشتن کد خوب نیست. همچنین، او تصریح میکند که TDD در همه شرایط عملی یا مناسب نیست و برنامهنویسان حرفهای باید بدانند که چه زمانی استفاده از این روش میتواند بیش از حد مفید باشد.
فصل پنجم به وضوح بیان میکند که TDD یک گزینه حرفهای برای توسعهدهندگان نرمافزار است که به بهبود قطعیت، کاهش نرخ خطا، مستندسازی بهتر، و طراحی بهینه کمک میکند. اگرچه TDD همیشه راهحل مناسبی نیست، اما فواید آن به قدری قابل توجه است که به عنوان یک روش استاندارد برای برنامهنویسان حرفهای توصیه میشود.