Refactoring delphi 2005 win32
This presentation is the property of its rightful owner.
Sponsored Links
1 / 22

Refactoring Delphi 2005 Win32 PowerPoint PPT Presentation


  • 124 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Refactoring delphi 2005 win32

RefactoringDelphi 2005 Win32


Agenda

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


Motivation

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


What is refactoring

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


What is refactoring1

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


When to refactor

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


Refactoring safely

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


Problems with refactoring

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


Available refactorings

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


Refactoring delphi 2005 win32

demo

Refactoring Using Delphi 2005

Delphi 2005 Refactoring


Refactoring using delphi 5 7

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


Castalia 3

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


Summary

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


Summary1

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


Summary2

Summary

“Things should be made as simple as possible, but no simpler.”

Albert Einstein

Delphi 2005 Refactoring


Resources web sites

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


Resources books

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


Resources books1

Resources (Books)

Refactoring Workbook

William Wake

Addison-Wesley, 2004

ISBN 0-321-10929-5

Delphi 2005 Refactoring


Resources books2

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


Contact and update information

Contact and Update Information

Craig Murphy

Updated slides, notes and source code:

http://www.CraigMurphy.com

Delphi 2005 Refactoring


Refactoring delphi 2005 win32

Questions?

Delphi 2005 Refactoring


Refactoring delphi 2005 win32

Delphi 2005 Refactoring


  • Login