Skip to main content

Professional Refactoring in C# & ASP.NET

Professional Refactoring in C# & ASP.NET

Danijel Arsenovski

ISBN: 978-0-470-43452-9

Apr 2009

552 pages

Select type: Paperback

Product not available for purchase

Description

Refactoring is an effective way to quickly uncover problematic code and fix it. In this first book to provide a hands-on approach to refactoring in C# and ASP.NET, you'll discover to apply refactoring techniques to manage and modify your code. Plus, you'll learn how to build a prototype application from scratch and discover how to refactor the prototype into a properly designed, enterprise-level application.

With the help of step-by-step directions, you'll gain a better understanding of different code issues and refactoring transformations. Many of these transformations are developed from real-world scenarios that are the result of key business decisions. In addition, you'll find formal definitions of refactoring techniques that you'll be able to refer to while on the job.

This book covers the refactoring techniques that will enable you to become more efficient and productive. You'll be able to use this information to respond to change and improve the design of existing code.

What you will learn from this book

  • How to assemble your own refactoring toolkit
  • Techniques for performing unit testing

  • Tips on refactoring to patterns

  • How to use refactoring to upgrade legacy C# and ASP.NET code

  • Ways to take advantage of the method extraction to eliminate duplicated code

  • How to make code simpler, easier to modify, and more understandable

  • All about object oriented theory and design patterns

  • Methods for using LINQ and other C# 3.0 enhancements

Who this book is for

This book is for C# and ASP.NET developers who want to learn how to effectively manage and modify their code with refactoring tools and features.

Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.

Introduction.

Chapter 1: Refactoring: What’s All the Fuss About?

A Quick Refactoring Overview.

The Refactoring Process: A Closer Look.

No Programmer Is an Island.

C# and Refactoring.

Summary.

Chapter 2: A First Taste of Refactoring.

Sample Application: Calories Calculator.

Refactoring in Action.

Implementing the Persistence Functionality.

Calories Calculator, Refactored Version.

Summary.

Chapter 3: Assembling a Refactoring Toolkit.

Using an Automated Refactoring Tool.

Unit-Testing Basics: The Testing Harness.

About Version Control.

Summary.

Chapter 4: Application Prototype: Rent-a-Wheels.

Interviewing the Client.

Taking the Initial Steps in the Rent-a-Wheels Project.

Making the Prototype Work.

Fast and Furious Approach to Programming.

Summary.

Chapter 5: Basic Hygiene.

Eliminating Dead Code.

Reducing the Scope and Access Level of Unduly Exposed Elements.

Using Explicit Imports.

Removing Unused Assembly References.

Basic Hygiene in the Rent-a-Wheels Application.

Summary.

Chapter 6: From Problem Domain to Code: Closing the Gap.

Understanding the Problem Domain.

Published and Public Interfaces.

Summary.

Chapter 7: The Method Extraction Remedy for Duplicated Code.

Encapsulating Code and Hiding the Details.

DecomposingMethods.

InliningMethods.

The Duplicated Code Smell.

Extract Method and Replace Magic Literal Refactoring in the Rent-a-Wheels Application.

Summary.

Chapter 8: Method Consolidation and Extraction Techniques.

Dealing with Temporary Variables.

Dealing with Long and Nested Conditionals.

Method Reorganization and Rent-a-Wheels.

Summary.

Chapter 9: Discovering Objects.

A Brief Object-Oriented Programming Overview.

Designing Classes.

Discovering Hidden Classes.

Summary.

Chapter 10: Advanced Object-Oriented Concepts and Related Refactorings.

Inheritance, Polymorphism, and Genericity.

Inheritance Abuse and Refactoring Solutions.

Making Use of Generics.

Summary.

Chapter 11: Code Organization on a Large Scale.

Namespaces.

Assemblies

C# Project File Structure Organization.

Namespace Organization and Windows Forms Inheritance in Rent-a-Wheels.

Summary.

Chapter 12: Refactoring to Patterns.

Design Patterns: What’s All the Fuss About?

Example Design Pattern: Abstract Factory.

Dependency Injection Pattern.

Refactoring to Patterns and the Rent-a-Wheels Application.

Summary.

Chapter 13: LINQ and Other C# 3.0 Enhancements.

Type Inference for Local Variables.

Summary.

Chapter 14: A Short History of the Web for Developers and ASP.NET Tooling.

Refactor! for ASP.NET.

HTML History and Its Legacy.

Catching Up with theWeb.

Summary.

Chapter 15: Refactoring ASP.NET Applications.

Refactoring HTML.

Refactoring ASP.NET Code.

Rent-a-Wheels and ASP.NET Refactorings.

Summary.

Appendix A: Rent-a-Wheels Prototype Internals and Intricacies.

Hand Over Button Click Event-Handling Code.

Display Button Click Event-Handling Routine.

Summary.

Appendix B: Unleash Refactor! for ASP.NET.

Index.

Chapter 9 Download
Chapter 15 Download
Chapter 6 Download
Chapter 2 Download
Chapter 4 Download
Chapter 12 Download
Chapter 3 Download
Chapter 7 Download
All sample code from book Download
Chapter 13 Download
Chapter 5 Download
Chapter 8 Download
Chapter 10 Download
Chapter 11 Download
10Error in Code,The last line in More Readable Code column in the table on the page 10 should read as follow:

 portfolio.SelectNodes( //stocks[1]/* ) 
11/8/2010
39Error in Code,There is an faulty space between myPatient. and IdealBodyWeightMale();

It should be:

myPatient.IdealBodyWeightMale().
8/11/09
2, Figure 6-562Error in Text,Typo:

btnVeiw

should be:

btnView

07/22/2010
301Error in Code,if (History.Total > 3000)

Should be:

if (History.Total > 3000 & History.Total < 10000)
8/11/09
337Error in Text,on page 337, on line 3 instead of:
errorForm.ShowErrorMessage(e.Message);
should say:
errorForm.ShowErrorMessage(message);
2-16-11