Developers: Learn a New Programming Language or App Development with Deitel LiveLessons Videos!
Login  |  Register  |  Media Kit  |  Press  |  Contact Us  |   Twitter Become a Deitel Fan on Facebook  
Custom Search
Resource Center

Refactoring Resource Center
Refactoring MySQL Cursors
Article: “Refactoring MySQL Cursors,” by Roland Bouman. Discusses cursor trouble, attempts to use unsupported features, nested cursor loops, basic cursor loop handling problems, unnecessary usage of cursors, and are you sure you need a cursor?
Null Object Refactoring
Article: "Null Object Refactoring," by Brian Mains. Discusses the Null Object refactoring (for specifying a null value in business systems), assigning a null value to a reference-type property, the status example, and the factory example.
Refactoring For Everyone
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.
Article: "Refactoring," from VersionOne. Discusses whet refactoring is, what refactoring does, code hygiene, specific "refactorings," refactoring to patterns, the flow of refactoring and refactoring automation in IDEs.
The SOA Refactoring
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: Small Steps to Help Clean Up Code
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.
Real Programmers Don't Use Refactoring Tools
Article: "Real programmers don't use refactoring tools," by Julian M. Bucknall. Discusses the rename identifier, the extract method, the create method stub, the decompose parameter, the move type to file, the extract interface, the inline temp, and the use of String.Format.
Evolutionary Database Design
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 in Eclipse 3.2
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.
Refactoring with Code Metrics
Article: "In Pursuit of Code Quality: Refactoring with Code Metrics," by Andrew Glover. Discusses what refactoring is, subjective and objective refactoring, the extract method pattern, a cure for cyclomatic complexity, when small is beautiful, testing private methods, and the PrivateAccessor class.
Refactoring Module Home
Refactoring Module Home from 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
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.
Dive Into Python: Refactoring
Sample chapter: "Refactoring," from Dive Into Python, by Mark Pilgrim. Discusses refactoring, compiling regular expressions, compiled regular expressions, and output.
Modifying Mozilla Address Book Code
Article: "Modifying Mozilla Address Book Code," from 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.
Transient Message Refactoring
Article: "Transient Message Refactoring and Component Usage Philosophy," from OpenCode Software. Discuses refractor vs. migrate, why make it an adapter?, and when to use a utility vs. an adapter.
Refactoring, Reuse and Reality
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).
Michael Stal on Architecture Refactoring
Article: "Michael Stal on Architecture Refactoring," by Niclas Nilsson. Discusses architectural refactoring, what architectural refactoring is, the relationship of architectural to code refactoring and patterns, and examples of how refractorings have been done.
Bad Smells in Code
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.
Working with Re-Factored Components in Windows
Article: “Working with Re-Factored Components in Windows XPe FP2007,” by Lynda Allen. Discusses Internet Explorer, volume shadow copy service, Outlook Express, simple network management protocol (SNMP), and Windows firewall/Internet connection sharing (ICS).
Martin Fowler Site
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
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 Thumbnails
Article: “Refactoring Thumbnails,” by Sven Gorts. Discusses what a refactoring thumbnail is, the move feature, evolution charts, and the differences between refactorings and refactoring thumbnails.
The Refactoring Cycle
Article: “The Refactoring Cycle,” by Sven Gorts. Discusses the interaction between designing and maintaining code, the expansion phase, the contraction phase, interaction and expansion-only refactoring.
Refactoring in the Large
Article: “Refactoring in the Large,” by Sven Gorts. Discusses working with large refactorings, more features, more issues; design defects, minimizing the footprint, resistance to change, one thing at a time, time constraints, intermediate design changes, and understanding the dynamic.
Refactoring in Visual Basic 2005
Article: “Refactoring in Visual Basic 2005,” by Matthew MacDonald. Discusses refactoring basics, the encapsulate method, reordering parameters and the define constant.
Practical Analysis for Refactoring
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
Refactoring information page on 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
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.
Refactoring Home Page
Refactoring Home Page. Includes a definition of refactoring, resource links to books and podcasts, a refactoring tools workshop, and a research site on refactoring.
Agile Database Refactoring with Hibernate
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
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
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
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.

Discounts on subscriptions

Update :: December 18, 2017