جزییات کتاب
Refactoring، فرآیند تغییر یک سیستم نرم افزاری است به گونه ای که رفتار خارجی کد عوض نشود در حالی که ساختار داخلی آن بهبود پیدا کند. این یک راه اصولی برای تمیز سازی کد است که شانس پدید آمدن باگ را به حداقل میرساند. در اصل زمانی که شما refactor میکنید دارید طراحی کد را بهبود میبخشید پس از آن که کد را نوشتید.
"بهبود طراحی کد پس از نوشتن آن". این عبارت به نوبهی خود، عجیب و غریب است. در درکی که از توسعهی نرم افزار داریم، ما معتقدیم که ابتدا طراحی میکنیم و پس از آن شروع به کد نویسی میکنیم. ابتدا یک طراحی خوب انجام میشود، و به دنبال آن کد نویسی صورت میگیرد. در طول مدت زمانی که کد و یکپارچگی سیستم تغییر خواهد کرد، ساختار آن با توجه به طراحی اش، به تدریج محو میشود.
با Refactoring میتوانید یک طراحی بد و حتی شلخته را بردارید و آن را به یک کد به خوبی طراحی شده تغییر دهید و هر گامی ار آن ساده است. یک فیلد را از کلاسی به کلاسی دیگر انتقال میدهید، قسمتی از کد را از یک متد برداشته و برای آن متدی مجزا مینویسید و کدی را به پایین یا بالا انتقال میدهید. مجموع تاثیرات این تغییرات کوچک میتواند طراحی را به طور اساسی بهبود بخشد. این دقیقا برعکس مفهوم معمول پوسیدگی نرم افزار است.
با فاکتور گیری مجدد، پی میبرید که تعادل کارها تغییر میکند. شما در مییابید که طراحی بیش از اینکه یک بار رخ دهد، به طور مداوم در طول توسعه طراحی مجددا انجام میشود. شما از ساخت یک سیستم یاد میگیرید که چگونه طراحی را بهبود بخشید. نتیجهی این تعامل منجر به برنامه ای میشود که طراحی آن در طول توسعه نیز خوب باقی میماند.
این کتاب راهنمایی برای انجام refactoring است که برای برنامه نویسهای حرفه ای نوشته شده است. هدف من نشان دادن این است که چگونه فاکتور گیری مجدد را به شیوه ای کنترل شده و کارآمد انجام دهید. شما یاد خواهید گرفت که به گونه ای refactor انجام دهید که باگی در کد باقی نگذارید.
As the application of object technology-particularly the Java programming language-has become commonplace, a new problem has emerged to confront the software development community. Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, "non-optimal" applications. For several years, expert-level object programmers have employed a growing collection of techniques to improve the structural integrity and performance of such existing software programs. Referred to as "refactoring," these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use. . .until now. In Refactoring: Improving the Design of Existing Software, renowned object technology mentor Martin Fowler breaks new ground, demystifying these master practices and demonstrating how software practitioners can realize the significant benefits of this new process. With proper training a skilled system designer can take a bad design and rework it into well-designed, robust code. In this book, Martin Fowler shows you where opportunities for refactoring typically can be found, and how to go about reworking a bad design into a good one. Each refactoring step is simple-seemingly too simple to be worth doing. Refactoring may involve moving a field from one class to another, or pulling some code out of a method to turn it into its own method, or even pushing some code up or down a hierarchy. While these individual steps may seem elementary, the cumulative effect of such small changes can radically improve the design. Refactoring is a proven way to prevent software decay. In addition to discussing the various techniques of refactoring, the author provides a detailed catalog of more than seventy proven refactorings with helpful pointers that teach you when to apply them; step-by-step instructions for applying each refactoring; and an example illustrating how the refactoring works. The illustrative examples are written in Java, but the ideas are applicable to any object-oriented programming language.
درباره نویسنده
مارتین فولر (به انگلیسی: Martin Fowler) (متولد ۱۹۶۳) بریتانیایی، مهندس نرمافزار، نویسنده و سخنران بینالمللی پیرامون توسعه ی نرمافزار، متخصص طراحی و آنالیز برنامهنویسی شیءگرا، یو امال، الگوی طراحی، و روش شناس باشگاه توسعه نرمافزار، از جمله برنامهسازی مفرط می باشد.