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.
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.
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.
The book covers 9 modules. They are
- Getting Started with WCF
- Configuring and Hosting WCF Services
- Endpoints and Behaviours
- Debugging and Diagnostics
- Handling Errors
- Improving WCF Service Quality
- Implementing WCF Security
- Implementing Transactions
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.
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.