Book Reviews

Refactoring - Improving the design of exiting code
Refactoring
This book is “simply astonishing”. This is a book that every software developer must read. Martin Fowler describes the inside-out of various techniques for refactoring existing code. Refactoring code samples are demonstrated in Java. However, the techniques can be applied to any object oriented programming language.

Among lot of other things I learnt, I really enjoyed reading Chapter 10 – “Making Method Calls Simpler”, and Chapter 7 “Moving Features Between Objects”. These chapters contain lot of examples, which we use daily basis in our programming tasks. The key emphasis of this book is not only to demonstrate the techniques but to give the reader an understanding of the importance of refactoring.

Chapter 1 and Chapter 2 contain general facts behind refactoring tasks such as why and when we should refactor. Also it has some great insight into refactoring existing code for performance improvements and design etc.

Chapter 3 has some great examples on how to identify bad Code smells. This includes temporary fields, incomplete classes, incorrect usage of code comments etc.

Chapter 4 through Chapter 11 contains some great examples of various refactoring techniques. This includes replacing methods with objects, substituting algorithms, encapsulation of collections etc.

Chapter 12 contains some insight into major refactoring tasks and how to identify those major refactoring tasks.

Chapter 13 through Chapter 15, contains the general philosophy of refactoring and usage of refactoring tools.

Never refactor the code in big chunk. Always do bit by bit while ensuring the software continues to work. Martin Fowler refers to large refactoring as “A big refactoring is a recipe of a disaster”. When you work in a team and if other team members rely on your refactoring work, they would not have to suffer a lot when merging their changes back to the code base. It is always best to refactor when you add a new feature, and you can take bit of time to clean up the existing code base before you add new features. I strongly encourage you to read this book if you haven’t already done so.




Microsoft Enterprise Library 5.0
Microsoft Enterprise Library 5.0
As the title suggests, this book is about a complete guidance to Microsoft Enterprise Library 5.0 The author has provided an adequate depth of the content on various aspects of the Enterprise library. The content is specific, yet well described features of Enterprise Library 5.0. I have been using Microsoft Enterprise Library for few years and I have just upgraded my projects to use the new version 5.0. Over the years, one of the main concerns of Enterprise Library was that there was no adequate documentation. However after reading this book, I ‘m confident that this book provides some great insight into Enterprise Library and its Application Blocks.

The first chapter introduces the Enterprise Library by providing an overview of the application block. A well written short chapter to get you started with the Enterprise Library.

The second chapter provides some great information on Data Access Application Block. The first part of this chapter concentrated on providing the step by step guidance on the Data Access Application Block. I enjoyed reading the section “Adding Data Access Settings” which provide some fantastic examples on how to configure the Database Settings within the application block. I really appreciate the effort that author has taken to explain the use of Sql parameter mappers. I see this as a fantastic chapter for anyone who is interested in understanding the Data Access Application Block.

The third chapter provides some excellent example on Logging Application Block. There are some useful information on configuration Trace Listeners and Log Filters. Most examples are direct usage of the API and configuring the various aspects of the Logging Application Block. This is a great insight into custom Log Filters, which I see as a very important aspect from the reader’s point of view.

Chapter 4 provides information on Exception Handling Application Block. A nice introduction on why the exception handling is such an important aspect of today’s software development. I was expecting to see some more detail on Exception Handlers such as Logging Handler and WCF Exception Handler, but the provided information gives the reader enough information on how to get started with those exception handlers.

Chapter 5, 6, 7 and 8 describes Caching Application Block, Validation Application Block, Security Application Block and Cryptography Application block. All these chapters have some great information on the features provided by the Enterprise Library. Overall Sachin Joshi has provided some great insight into Enterprise Library 5.0. I recommend anyone who is interested in this topic to read this book. This is also a nice hand book to use as a quick reference when using various Application Blocks.




Art of Unit Testing
Art of Unit Testing
Roy Osherove provides some excellent examples on how to write good Unit Tests. The book starts with the basics of Unit Testing, and slowly expands its context into more elaborate examples.

Apart from all the other technical things, what I really like about this book is that, it also covers how you would introduce Unit Testing into your organisation, and how you would succeed etc. Nice appendix at the end to describe extra tools and frameworks that you would use to assist in Unit Testing.

Roy explains how to use stubs and mocks within Unit Test and when not to overuse them. Chapter 4- Interaction testing using mock objects shows how to break the dependencies and how to write effective Unit Tests. There are lot of examples on how to write readable, maintainable and trustworthy Unit Tests.

Chapter 9 “Working with legacy code” has some great examples on tools and techniques which you can use to refactor your legacy application and make it more testable. The book uses NUnit as the Unit Test framework and Rhino Mocks as the isolation framework.

If you already writing Unit Tests, or willing to make an effort to write better Unit Tests, then this book will definitely assist you.




Visual Studio 2008: Windows Communication Foundation (6461A)
.NET Framework 2.0 Application Development Foundation
I received this book as part of the Microsoft official training course for WCF, which I have attended few weeks ago. I thought of giving a quick review as it has some eye caching content that you might be interested in. I’m not sure you can purchase this book separately, but it is part of the Microsoft Official Course guide. This book also comes with a CD, which contains lab materials and power point slides. This book assumes that readers have intermediate experience in developing application using Visual Studio at level 200.

The book covers 9 modules. They are
  1. Getting Started with WCF
  2. Configuring and Hosting WCF Services
  3. Endpoints and Behaviours
  4. Debugging and Diagnostics
  5. Handling Errors
  6. Improving WCF Service Quality
  7. Implementing WCF Security
  8. Implementing Transactions
The content of each chapter is relatively small and briefly summarised most of the topics, One thing that I appreciate about this book is, it has some great diagrams which explains the high level overview how things work. If you are an experienced WCF developer, this book will help you to review and revise your knowledge. If you are a new to WCF you might have a hard time understanding the content of this book. Since it is part of the official training course you would expected to be taught by a presenter the content of this book, which fill the knowledge gap if you are new to the scene.

I see the book has more emphasize on lab materials than the content. Which also means that you would expect to complete these labs in order to achieve a thorough knowledge in WCF. Each modules attempt to highlight its most important features. They have been included in Key Points section.

I would say it is a book that nice to have if your already know WCF and you need something for quick reference, or even if you doing a presentation on WCF you can refer to the key points that you would include in your presentation. For you to understand the in side and out side of WCF services this is not a recommended book.



.NET Framework 2.0 Application Development Foundation
.NET Framework 2.0 Application Development Foundation
An excellent book if you are preparing for the MCTS exam in .NET 2.0. This book contains the content for one of the two exams that you have to pass in order to obtains the relevant MCTS certification.

Book covers pretty much all the necessary .NET framework core features in depth. I personally find that book is very useful not only for test takers but anyone who is interested in familiarising the .NET technologies. Most .NET base class library features are well explained and there are labs, which covers important features.

One of my favourite study methods was the Case Scenarios. This will allow you to apply the knowledge into a more real world scenario. Each lesson has multiple-choice questions so you can review your learning.

If you need the real knowledge, just reading the book is not enough. You might pass the exam, however the real knowledge comes when you do the labs, case scenarios. If you can do Suggested Practices you will get a deeper knowledge of each section.

The book has a great flow when it explains the .NET base class library. It starts from easier and fundamental topics and move to more advanced topics gradually. For example you can find Managed Data Types, Collections, Generics, Threading in early chapters, Application Domains, Instrumentations and Security in mid chapters, and then more advanced topics such as Interoperation, Reflection in later chapters.

In each chapter, there are special notes, which describe the new features in .NET 2.0. Also there are exams tips. The content is easy to follow. In overall it is a comprehensive and well-written book.