Refactoring Delphi 2005 Win 32 2001 2005 Craig

  • Slides: 22
Download presentation
Refactoring Delphi 2005 Win 32 § © 2001 -2005 Craig Murphy

Refactoring Delphi 2005 Win 32 § © 2001 -2005 Craig Murphy

Agenda § § § Motivation What is Refactoring? When to Refactoring Safely Refactoring using

Agenda § § § Motivation What is Refactoring? When to Refactoring Safely Refactoring using Delphi 2005 §. net example; applies to Win 32 § Refactoring Using Delphi 5 -7 § Summary Delphi 2005 Refactoring 2

Motivation § To look at refactoring support in Delphi 2005 § To consider how

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 3

What is Refactoring? § “Refactoring is a disciplined technique for restructuring an existing body

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 4

What is Refactoring? § Small, localised changes § …sometimes just changing one occurrence, other

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 5

When to Refactor § When a piece of code is difficult to understand §

When to Refactor § When a piece of code is difficult to understand § Code smells, from the e. Xtreme 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 6

Refactoring Safely § How do we ensure that our refactorings have not altered or

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 Win 32 (Delphi 5 -7 can use DUnit) Delphi 2005 Refactoring 7

Problems with Refactoring § If it ain’t broke, don’t touch it? § Early design

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 8

Available Refactorings Delphi 2005 § § § Rename Parameter/Variable Extract Method Declare Variable Declare

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

demo Refactoring Using Delphi 2005 Refactoring 10

demo Refactoring Using Delphi 2005 Refactoring 10

Refactoring Using Delphi 5 -7 § What tool support is there? § Productivity and

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 § Model. Maker’s Code Explorer § Supports Delphi 5, 6, 7, 8 and 2005 Delphi 2005 Refactoring 11

Castalia 3 § Offers a “Refactoring Explorer” similar to Delphi’s Refactoring dock window: §

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 12

Summary § Code is an asset, refactoring helps us improve the value of that

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

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

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

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 § cs. Unit 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

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

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

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.

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

Questions? Delphi 2005 Refactoring 22

Questions? Delphi 2005 Refactoring 22

Delphi 2005 Refactoring 23

Delphi 2005 Refactoring 23