1 / 22

Refactoring Delphi 2005 Win32

Refactoring Delphi 2005 Win32. Agenda. Motivation What is Refactoring? When to Refactor Refactoring Safely Refactoring using Delphi 2005 .net example; applies to Win32 Refactoring Using Delphi 5-7 Summary. Motivation. To look at refactoring support in Delphi 2005

moeshe
Télécharger la présentation

Refactoring Delphi 2005 Win32

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RefactoringDelphi 2005 Win32

  2. Agenda • Motivation • What is Refactoring? • When to Refactor • Refactoring Safely • Refactoring using Delphi 2005 • .net example; applies to Win32 • Refactoring Using Delphi 5-7 • Summary Delphi 2005 Refactoring

  3. Motivation • To look at refactoring support in Delphi 2005 • To consider how “new” features can be used in earlier versions of Delphi • If you’re not [knowingly] refactoring now, this session will give you a flavour of what it’s all about • Tool support for earlier versions of Delphi • Ultimately…to become more productive inside the IDE • Avoid search’n’replace (and undo!) • Avoid manually making a small change in more than one place • Avoid “stupid” cut’n’paste bugs Delphi 2005 Refactoring

  4. What is Refactoring? • “Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behaviour” --- Martin Fowler • Improving the design of existing code • Minimising the chances of introducing “new” bugs Delphi 2005 Refactoring

  5. What is Refactoring? • Small, localised changes • …sometimes just changing one occurrence, other times changing many occurrences • …sometimes larger, more sweeping refactorings can be applied too • Can be applied by hand, manually • Not recommended • not consistent • not guaranteed to be repeatable • It’s very likely that you have already been refactoring, but didn’t realise it • Everybody wants to improve the design of their existing code Delphi 2005 Refactoring

  6. When to Refactor • When a piece of code is difficult to understand • Code smells, from the eXtreme Programming community, not exhaustive: • Comments • Duplicated Code • Long Method • Conditional logic, switch statement (simulated inheritance) • Large class • Magic Numbers • Name does not convey intent (uncommunicative name) Delphi 2005 Refactoring

  7. Refactoring Safely • How do we ensure that our refactorings have not altered or broken the original functionality? • Tests • Repeatable Tests • Automated, Repeatable Tests • Ideally, we should write tests before we refactor our code… • Delphi 2005 ships with NUnit and DUnit • Offers us an automated testing framework • NUnit/DUnit for .net • DUnit for Win32 (Delphi 5-7 can use DUnit) Delphi 2005 Refactoring

  8. Problems with Refactoring • If it ain’t broke, don’t touch it? • Early design decisions may limit future development • Performance issues • Code reviews • What do you tell your manager? • “Refactoring is a pointless exercise, we’ve shipped” • Analogies • Car manufacturer • Clean desk • You tell your manager that you are improving the code’s inherent value: code is an asset • For most of us, code pays our salary • The ability to keep an eye on your assets is important Delphi 2005 Refactoring

  9. Available Refactorings Visual Studio 2005 (Whidbey) • Rename • Extract Method • Encapsulate Field • Extract Interface • Promote Local Variable to Parameter • Remove Parameters • Reorder Parameters Delphi 2005 • Rename Parameter/Variable • Extract Method • Declare Variable • Declare Field • Extract Resource String • Sync Edit • Find Unit Delphi 2005 Refactoring

  10. demo Refactoring Using Delphi 2005 Delphi 2005 Refactoring

  11. Refactoring Using Delphi 5-7 • What tool support is there? • Productivity and IDE enhancers: • Castalia 3 • Supports Delphi 5, 6, 7, 8 and 2005 • Faithful to Fowler • ModelMaker’s Code Explorer • Supports Delphi 5, 6, 7, 8 and 2005 Delphi 2005 Refactoring

  12. Castalia 3 • Offers a “Refactoring Explorer” similar to Delphi’s Refactoring dock window: • Find References • Rename Class • Move Class • Rename Method • Extract Method • Add Parameter • Rename Local Variable • Inline Temporary Variable/Replace temp with query • Split Temporary Variable Delphi 2005 Refactoring

  13. Summary • Code is an asset, refactoring helps us improve the value of that asset • Refactoring lets us extend the life of an application with very little extra cost • Refactoring and Test-Driven Development go hand-in-hand • Bob Swart - Unit Testing with DUnit/NUnit Delphi 2005 Refactoring

  14. Summary • Delphi 2005’s refactorings are a step in the right direction • Let’s hope Corbin opens up the refactoring API • Let’s see more refactorings! • Generally, they work, but currently provide some interesting results • Particularly if you are extracting a method that is part of a IF condition • Look out for an article comparing the refactoring results of: • Delphi 2005, Visual Studio.net 2005 (Whidbey), • Castalia 3.x, Code Explorer Delphi 2005 Refactoring

  15. Summary “Things should be made as simple as possible, but no simpler.” Albert Einstein Delphi 2005 Refactoring

  16. Resources (web-sites) • Martin Fowler’s refactoring library: • http://www.refactoring.com/ • Joshua Kerievsky’s Refactoring To Patterns • http://industriallogic.com/xp/refactoring/catalog.html • An Introduction to Test-Driven Development • DUnit for Delphi 5-7 • csUnit for Delphi 8 and Visual Basic.net • http://www.craigmurphy.com/bug Delphi 2005 Refactoring

  17. Resources (Books) Refactoring: Improving the Design of Existing Code Martin Fowler Addison-Wesley, 1999 ISBN 0-201-48567-2 _____________________________ Refactoring To Patterns Joshua Kerievsky Addison-Wesley, 2004 ISBN 0-321-21335-1 Delphi 2005 Refactoring

  18. Resources (Books) Refactoring Workbook William Wake Addison-Wesley, 2004 ISBN 0-321-10929-5 Delphi 2005 Refactoring

  19. Resources (Books) test-driven development: A Practical Guide Dave Astels Prentice-Hall/Pearson Education, 2003 ISBN 0-13-101649-0 Reviewed BUG developers’ magazine, Nov/Dec 2003 http://www.craigmurphy.com/bug/tdd/review.htm ______________________________________ Test-Driven Development: By Example Kent Beck Addison-Wesley, 2003 ISBN 0-321-14653-0 ______________________________________ Test-Driven Development in Microsoft.NET James W. Newkirk; Alexei A. Vorontsov Microsoft Press, 2004 ISBN 0-7356-1948-4 Delphi 2005 Refactoring

  20. Contact and Update Information Craig Murphy Updated slides, notes and source code: http://www.CraigMurphy.com Delphi 2005 Refactoring

  21. Questions? Delphi 2005 Refactoring

  22. Delphi 2005 Refactoring

More Related