دانلود کتاب Growing Object-Oriented Software, Guided by Tests (به فارسی: رشد نرم افزار شی گرا، هدایت شده توسط تست ها) نوشته شده توسط «Steve Freeman – Nat Pryce»
اطلاعات کتاب رشد نرم افزار شی گرا، هدایت شده توسط تست ها
موضوع اصلی: برنامه نويسي
نوع: کتاب الکترونیکی
ناشر: Addison Wesley
نویسنده: Steve Freeman – Nat Pryce
زبان: English
فرمت کتاب: pdf (قابل تبدیل به سایر فرمت ها)
سال انتشار: 2010
تعداد صفحه: 385
حجم کتاب: 5 مگابایت
کد کتاب: 0321503627 , 9780321503626
نوبت چاپ: 1
توضیحات کتاب رشد نرم افزار شی گرا، هدایت شده توسط تست ها
این کتاب مدت زیادی در لیست پیشسفارشهای آمازون من بود و من مشتاقانه منتظر آن بودم. عنوان را به تنهایی از قبل عالی یافتم. استیون و نات (نویسندگان jMock) پزشکان متخصص TDD شناخته شده ای هستند، بنابراین من مشتاقانه منتظر حرف های آنها بودم. کتاب بهتر از چیزی بود که انتظار داشتم.
کتاب از 5 قسمت تشکیل شده است. بخش اول معرفی سریع TDD و jMock. قسمت دوم چرخه tdd را با جزئیات بیشتری مورد بحث قرار می دهد. قسمت سوم (150 صفحه) نمونه بسیار بزرگی از رشد یک نرم افزار است. بخش چهارم موضوعاتی را در مورد چگونگی حفظ TDD مورد بحث قرار می دهد و قسمت آخر برخی از موضوعات پیشرفته را پوشش می دهد.
در این بررسی، قسمت 1 را رد می کنم زیرا کوتاه بود و چیز خاصی نداشت. قسمت دوم چرخه TDD و پیوند به طراحی تکاملی را پوشش می دهد. استیو و نات یک سبک طراحی دارند که تقریباً صرفاً بر تعاملات بین کلاسهایی تمرکز میکند که اغلب با استفاده از انتظارات روی اشیاء ساختگی آزمایش میشوند (که به عنوان نویسندگان jMock تجربه زیادی با آن دارند). قابل توجه ترین قسمت 2، برای من، طبقه بندی اشیایی بود که آنها استفاده می کردند، تمرکز قوی روی تعامل و تمسخر (بیشتر از آنچه که معمولاً هنگام تست رانندگی دارم) و عدم تمرکز آنها بر کلاس ها اما تمرکز بر نقش ها و مسئولیت ها. نات و استیو تفکرات خود را به خوبی روشن می کنند که درک همه چیز را آسان می کند.
قسمت 3 بزرگترین بخش کتاب را می گیرد، جایی که آنها یک برنامه AuctionSniper را آزمایش می کنند. این یک برنامه کوچک است، اما برای نمونه کتاب بزرگ است. نویسندگان نشان میدهند که چگونه برنامه را با افزودن یک تست در آن زمان به تدریج ایجاد میکنند و چگونه در طول این فرآیند به بینشهایی دست یافتهاند که باعث میشود طراحی خود را تنظیم کنند. من احساسات متفاوتی در مورد این بخش داشتم، زیرا کتاب به نظر بهترین وسیله برای انجام این کار نیست، اما هنوز از بینش آنها و همچنین تلاش آنها برای نزدیک کردن آن به “دنیای واقعی” تا حد امکان قدردانی می کنم.
نوشتن تست ها یک چیز است، حفظ آنها در چیز دیگر. بخش 4 چگونگی پایدار نگه داشتن تست ها و پایدار نگه داشتن چرخه tdd را مورد بحث قرار می دهد. من شخصاً این بخش را بسیار روشنگر یافتم و نظم و انضباط نویسندگان نمونه بود. نویسندگان با بوهای مختلف آزمایش و اینکه در مورد آن چه باید کرد شروع می کنند. سپس خوانایی تست ها و پیام های خطا را مورد بحث قرار می دهند و مدتی را صرف ایجاد شی آزمایشی می کنند. قابل توجه ترین در آن بخش (برای من) تمرکز آنها بر استفاده از سازنده ها برای ایجاد داده های آزمایشی به جای مادران شی بود.
قسمت آخر سه (یا در واقع دو موضوع!) پیشرفته را پوشش می دهد. اول آزمایش تداوم است، جایی که جالبترین آن این بود که چگونه به نظر میرسد نویسندگان ترجیح میدهند «تا آخر راه بروند» در حالی که توصیه رایج (برای سرعت تست) این است که به عقب برگردند و بیشتر مسخره کنند. (این در واقع یک موضوع رایج در کتاب آنها بود). دو فصل آخر به کدهای چند رشته ای و همگام سازی می پردازد. من نفهمیدم چرا اینها در دو فصل از هم جدا شده اند و آنها به این ترتیب خاص هستند. اگرچه محتوا عالی بود، با این تفاوت که من برخی از دستورالعمل های طراحی معمولی مربوط به طراحی چند رشته ای را از دست دادم. تقریباً احساس می شد که آنها برای نوشتن دو فصل آخر عجله دارند …
به هر حال، در جمع بندی، این قطعاً یکی از کتاب های مورد علاقه من (اگر نه مورد علاقه) TDD و کتاب های طراحی عمومی خواهد بود. استیون و نات در این مورد کار فوق العاده ای انجام دادند. اگرچه کتاب کامل نیست، اما از آن لذت بردم. یک توصیه قطعی برای هر کسی که به طراحی مدرن و TDD علاقه دارد.
The book consists of 5 parts. The first part of a very quick introduction to TDD and jMock. The second part discusses the tdd cycle in more detail. The third part (150 pages) is a very large example of growing a piece of software. The fourth part discusses topics on how to sustain TDD and the last part covers some advanced topics.
In this review, I’ll skip part 1 as it was short and nothing special. Part two covers the TDD cycle and the link to evolutionary design. Steve and Nat have a design style that focuses almost purely on the interactions between classes which are most frequently tested using expectations on mock objects (which, as authors of jMock, they have lots of experience with). Most notable from part 2, for me, were the classifications of objects that they used, the strong focus on interaction and mocking (more than I usually have when test-driving) and their lack of focus on classes but focus on roles and responsibilities. Nat and Steve clarify their thinking exceptionally well which makes it all easy to understand.
Part 3 takes the largest part of the book, which is where they test-drive an AuctionSniper application. It is a small application, but large for a book example. The authors show how they gradually build up the application by adding one test at the time and how they gained insights during this process which made them adjust their design. I had mixed feelings about this part as a book didn’t seem like the best medium for doing this, but still I appreciate the insights they had and also their attempt to make it as close to “real world” as possible.
Writing tests is one thing, maintaining them in another. Part 4 discusses how to make the tests maintainable and the tdd cycle sustainable. Personally, I found this part very insightful and the authors discipline exemplar. The authors start of with different test smells and what to do about it. They then discuss readability of the tests and of the error messages and spend some time of test object creation. Most notable from that part (for me) was their focus on using builders for creating test data, rather than object mothers.
The final part covers three (or actually two!) advanced topics. First is testing persistence where most interesting was how the authors seemed to prefer to “go all the way” whereas the common advise (for test speed) is to rollback and mock more. (this was actually a common theme in their book). The last two chapters deal with multi-threading and async code. I was unclear why these were separated in two chapters and they they were in this particular order. The content was excellent though, except that I missed some typical design guidelines related to multi-threading design. It almost felt they were in a hurry to write the last two chapters…
Anyways, in conclusion, this will definitively be one of my favorite (if not the favorite) TDD books and general design books. Steven and Nat did a wonderful job on this one. Though the book is not perfect, I enjoyed it thoroughly. A definite recommendation for anyone interested in modern design and TDD.
دانلود کتاب «رشد نرم افزار شی گرا، هدایت شده توسط تست ها»
برای دریافت کد تخفیف ۲۰ درصدی این کتاب، ابتدا صفحه اینستاگرام کازرون آنلاین (@kazerun.online ) را دنبال کنید. سپس، کلمه «بلیان» را در دایرکت ارسال کنید تا کد تخفیف به شما ارسال شود.