|
|
|
| Refactoring Resource Center | |
| | |
 | |
| |
|
| Refactoring For Everyone | | http://www.ibm.com/developerworks/library/os-ecref | | Article: "Refactoring For Everyone," by David Gallardo. Discusses why refactor?, types of refactoring in Eclipse, physical reorganization and renaming, redefining class relationships, promoting anonymous and nested classes, moving members within the class hierarchy, using a supertype, getting code within a class, extracting and inlining, encapsulating fields, and change method signature. | | |
| |
|
| The SOA Refactoring | | http://www.soarefactoring.com | | The SOA Refactoring site is devoted to issues and trends in the refactoring of legacy code/systems to SOA architecture. Resources available include features and announcements, publications, tools, and news. | | |
|
| Refactoring in Eclipse 3.2 | | http://www.javabeat.net/javabeat/ide/eclipse/articles/2007/04/refactoring_in_eclipse_3_2_1.php | | Article: "Refactoring in Eclipse 3.2," by Marcelo Giorgi. Discusses the clean up wizard, code style, control statements, expressions, variable declarations, members access, unnecessary code, missing code, an introduction to indirection refactoring, extract superclass refactoring, refactoring history, refactor scripts, rename type updates similarly named elements, refactor of subpackages names, and migrate JAR files that depend on refactor changes. | | |
| |
|
| Modifying Mozilla Address Book Code | | http://www.mozilla.org/directory/addrbook-refactoring-proposal.html | | Article: "Modifying Mozilla Address Book Code," from Mozilla.org. Discusses the process to modify the existing code of the Mozilla address book to enable the support of many types of address books, RDF datasource, RDF resource, the card RDF datasource XPCOM (cross platform component object model) component, the card RDF resource XPCOM component, the card property XPCOM component, the directory, managing multiple address book types, the LDAP address book, multiple data sources, multiple sub-directories, the framework, and the star webtop LDAP address book. | | |
| |
|
| Refactoring, Reuse and Reality | | http://st-www.cs.uiuc.edu/users/opdyke/wfo.990201.refac.html | | White paper: "Refactoring, Reuse and Reality," by Bill Opdyke. Discusses why developers are reluctant to refactor their programs, understanding how and where to refactor, refactoring to achieve near-term benefits, reducing the overhead of refactoring, refactoring safety, a reality check (revisited), other resources and references for refactoring, and implications regarding software reuse (and technology transfer). | | |
| |
|
| Bad Smells in Code | | http://sis36.berkeley.edu/projects/streek/agile/bad-smells-in-code.html#bad+smells+in+code+by+kent+beck+and+martin+fowler | | Article: "Bad Smells in Code," by Martin Fowler and Kent Beck. Discusses duplicate code, the long method, the large class, long parameter list, divergent change, shotgun surgery, feature envy, data clumps, primitive obsession, switch statements, parallel inheritance hierarchies, lazy class, speculative generality, temporary fields, message chains, middle man, inappropriate intimacy, alternative classes with different interfaces, incomplete library class, data class, and refused bequest. | | |
| |
| |
|
| Martin Fowler Site | | http://www.martinfowler.com | | Martin Fowler is the author of the much cited book Refactoring (see the Books section of the resource center). Resources available on his site include articles, a list of his books, FAQs, RSS feeds, useful links and upcoming events. Topics include new methodology, dependency injection, continuous integration, refactoring, analysis patterns, enterprise patterns, EAI patterns and database refactoring. | | |
|
| Refactoring C# Code Using Visual Studio 2005 | | http://msdn2.microsoft.com/en-us/library/ms379618.aspx | | Article: "Refactoring C# Code Using Visual Studio 2005 ," by Andrew W. Troelsen. Discusses the role of code refactoring, and the refactoring techniques supported by Visual Studio 2005, defining the refactoring process, refactoring support under Visual Studio 2005, the extract method, the encapsulate field, the extract interface, reorder parameters, remove parameters, rename, the promote local variable to parameter and the generate method stub. | | |
| |
| |
| |
|
| Refactoring: Small Steps to Help Clean Up Code | | http://www.stickyminds.com/bettersoftware/magazine.asp?fn=cifea&id=75 | | Article: "Refactoring: Small Steps Guaranteed to Help You Clean Up Your Code," by C. Keith Ray. Discusses code smells including comments, duplicated code, feature envy, inappropriate intimacy, Long Method, Long Parameter List, data clumps, and the iceberg class, the Extract Method refactoring, and the Move Method refactoring. | | |
| |
|
| Evolutionary Database Design | | http://www.martinfowler.com/articles/evodb.html | | Article: 'Evolutionary Database Design," by Martin Fowler and Pramod Sadalage. Discusses dealing with change, the practices (including DBAs collaborate closely with developers, everybody gets their own database instance, developers frequently integrate into a shared master, a database consists of schema and test data, all changes are database refactorings, automate the refactorings, automatically update all database developers, and clearly separate all database access code), variations (including keeping multiple database lineages and you don't need a DBA), tools to help and further steps and information. | | |
| |
|
| Refactoring Module Home | | http://refactoring.netbeans.org | | Refactoring Module Home from NetBeans.org. Discusses what refactoring is, the Metadata Repository, the refactoring roadmap, features added to the 5.0 release including extract interface/superclass, pull up, push down methods; extract method, convert synonymous to inner class, use super type where possible, safe delete, and move inner to outer level, and features added in the 4.1 release including undo and redo. | | |
|
| Multi-Language Refactorings | | http://www.jetbrains.com/idea/features/refactoring.html | | Multi-Language Refactorings from Jet Brains. Topics include XML-aware dedicated refactorings, drag-and-drop items in the project View bar, invert Boolean, safe delete, move instance method, inline constant, extract subclass, replace method code duplicates, convert To instance method, renaming of packages, classes, methods, fields, method parameters, and local variables with reference correction; moving classes and packages with reference correction, move inner class to upper class level, change method signature, make method static, copy/clone class, extract method, introduce variable, introduce field, introduce constant, introduce parameter, extract interface, extract superclass, use interface where possible, pull members up, push members down, replace inheritance with delegation, inline local variable, inline method, convert anonymous class to inner, encapsulate fields, replace temp with query, and replace constructor with factory method. | | |
|
| Practical Analysis for Refactoring | | http://st-www.cs.uiuc.edu/~droberts/thesis.pdf | | Thesis: “Practical Analysis for Refactoring,” by Donald Bradley Roberts (University of Illinois), 1999. Discusses a definition of refactoring, using postconditions to eliminate analysis, computing dependencies between refactorings, using dynamic properties of code, program transformation, program maintenance, refactoring, evolutionary software development, design patterns, model of refactoring, dependencies between refactorings, dynamic refactorings, refactoring tools, and the architecture of the refactoring browser. | | |
|
| Refactoring Information Page | | http://sourcemaking.com/refactoring | | Refactoring information page on SourceMaking.com. Resources include an introduction to refactoring (definition, problems, refactoring and design, performance, finding bugs, when to use refactoring, where refactoring came from, and why use refactoring), composing methods, moving features between objects, organizing data, simplifying conditional expressions, making method calls simpler, dealing with generalization, big refactorings, and bad smells in code (including alternative classes with different interfaces, comments, data class, data clumps, divergent change, duplicate code, feature envy, inappropriate intimacy, incomplete library class, large class, lazy class, long method, long parameter list, message chains, middle man, parallel inheritance hierarchies, primitive obsession, refused bequest, shotgun surgery, speculative generality, switch statements, and temporary files). | | |
|
| Refactoring Checklist | | http://michaelnielsen.org/blog/?cat=9 | | Blog: "Refactoring Checklist," by Michael Nielsen. Discusses his refactoring checklist that helps stimulate his thinking when refactoring such as selecting a single method to refactor, looking for ways to split methods that are too long, the naming of variables, methods, classes and files, fixing problems immediately, using partial solutions, how the readable code is being refactored, explaining the code to someone, and abstracting away what is being done that would enable other uses. | | |
| |
|
| Agile Database Refactoring with Hibernate | | http://www.onjava.com/pub/a/onjava/2007/06/07/agile-database-refactoring-with-hibernate.html | | Article: “Agile Database Refactoring with Hibernate,” by Gilad Buzi, Kelley Glenn, and Jonathan Novich. Discusses how to upgrade faulty schemas and data models without affecting existing applications or processes, repairing a faulty data model, dreaming up an improved data model, developing database views, stored procedures or Instead Of triggers, virtual foreign and primary keys, overriding insert, update and delete; data access objects, testing, peaceful coexistence and migration to a permanent data model. | | |
|
| Software Entropy w/ RefactorIT & Oracle JDeveloper | | http://www.oracle.com/technology/pub/articles/pefferly_refactor.html | | Article: "Managing Software Entropy with RefactorIT and Oracle JDeveloper 10,g," by Robert J. Pefferly, Jr., Yuri Schimke and Tanel Unt. Discusses the benefits of refactoring, extreme programming, fundamental questions answered by refactoring, the refactoring cycle (including the building stage, the manipulating stage, the maintaining stage and the recycling stage), detecting a problem, characterizing the problem, design solution, modifying the code, testing the code, a practical example, and refactoring operations including rename, move class, move method/field, pull up/push down in hierarchy, the extract method, extract superclass/interface, introduce explaining variable, add delegate methods, override/implement methods, inline variable, change method signature, encapsulate field, minimize access rights, and use super type where possible. | | |
|
| Refactoring PHP Code | | http://devzone.zend.com/article/2514-refactoring-php-code | | Article: "Refactoring PHP Code," by Roy Ganor. Discusses the strengths of refactoring, a definition of refactoring, forms of refactoring, renaming a class (pre-conditions and post-conditions), the extract operation, the change signature operation, the pull up and push down operations, refactoring in dynamic typed languages (such as PHP), model representation of source code, a set of rules for refactoring tasks, the abstract syntax tree (AST), an extensible model for object-oriented systems, development tools, the rename variable, and the rename class properties. | | |
|
| Javascript Refactoring/Safer Faster Better Ajax | | http://www.softwaresecretweapons.com/jspwiki/javascriptrefactoringforsaferfasterbetterajax | | Article: "Javascript Refactoring for Safer Faster Better Ajax," by Pavel Simakov. Discusses what JavaScript is, JavaScript refactoring, anti-patterns, global variables and functions, private and public access to object variables and functions in JavaScript, global variables reg and ready, a general code structure of a sample application before refactoring, design rules and goals, placing global variables and functions into an object, declaring variables private, logging information and improving error handling, adding support functions, and prototypes instead of closures. | | |
|
|
| |
 |
|
|
|
|