Refactoring: Improving the Design of Existing Code
Refactoring، فرآیند تغییر یک سیستم نرم افزاری است به گونه ای که رفتار خارجی کد عوض نشود در حالی که ساختار داخلی آن بهبود پیدا کند. این یک راه اصولی برای تمیز سازی کد است که شانس پدید آمدن باگ را به حداقل میرساند. در اصل زمانی که شما refactor میکنید دارید طراحی کد را بهبود میبخشید پس از آن که کد را نوشتید.
"بهبود طراحی کد پس از نوشتن آن". این عبارت به نوبهی خود، عجیب و غریب است. در درکی که از توسعهی نرم افزار داریم، ما معتقدیم که ابتدا طراحی میکنیم و پس از آن شروع به کد نویسی میکنیم. ابتدا یک طراحی خوب انجام میشود، و به دنبال آن کد نویسی صورت میگیرد. در طول مدت زمانی که کد و یکپارچگی سیستم تغییر خواهد کرد، ساختار آن با توجه به طراحی اش، به تدریج محو میشود.
با Refactoring میتوانید یک طراحی بد و حتی شلخته را بردارید و آن را به یک کد به خوبی طراحی شده تغییر دهید و هر گامی ار آن ساده است. یک فیلد را از کلاسی به کلاسی دیگر انتقال میدهید، قسمتی از کد را از یک متد برداشته و برای آن متدی مجزا مینویسید و کدی را به پایین یا بالا انتقال میدهید. مجموع تاثیرات این تغییرات کوچک میتواند طراحی را به طور اساسی بهبود بخشد. این دقیقا برعکس مفهوم معمول پوسیدگی نرم افزار است.
با فاکتور گیری مجدد، پی میبرید که تعادل کارها تغییر میکند. شما در مییابید که طراحی بیش از اینکه یک بار رخ دهد، به طور مداوم در طول توسعه طراحی مجددا انجام میشود. شما از ساخت یک سیستم یاد میگیرید که چگونه طراحی را بهبود بخشید. نتیجهی این تعامل منجر به برنامه ای میشود که طراحی آن در طول توسعه نیز خوب باقی میماند.
این کتاب راهنمایی برای انجام refactoring است که برای برنامه نویسهای حرفه ای نوشته شده است. هدف من نشان دادن این است که چگونه فاکتور گیری مجدد را به شیوه ای کنترل شده و کارآمد انجام دهید. شما یاد خواهید گرفت که به گونه ای refactor انجام دهید که باگی در کد باقی نگذارید.
Table of contents:
Chapter 1. Refactoring, a First Example
Chapter 2. Principles in Refactoring
Chapter 3. Bad Smells in Code
Chapter 4. Building Tests
Chapter 5. Toward a Catalog of Refactorings
Chapter 6. Composing Methods
Chapter 7. Moving Features Between Objects
Chapter 8. Organizing Data
Chapter 9. Simplifying Conditional Expressions
Chapter 10. Making Methods Calls Simpler
Chapter 11. Dealing with Generalization
Chapter 12. Big Refactorings
Chapter 13. Refactoring, Reuse, and Reality
Chapter 14. Refactoring Tools
Chapter 15. Putting It All Together