How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk. 0201633612B07092001
Martin Fowler, Kent Beck
Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.
Build your expertise as you move beyond the basics—and delve into the core topics of programming with ASP.NET 2.0. Useful to both experienced developers and those developing new skills, this ultimate reference is packed with expert guidance, hands-on programming instruction, and practical examples to help you advance your mastery of developing applications for the Web. Discover how to: Author rich, visually consistent pages and manage layout with themes and Master pages Create personalized pages that persist user preferences Retrieve, modify, and manage data with Microsoft ADO.NET Configure the HTTP pipeline to serve ASP.NET 2.0 pages Control program flow by tracing and handling exceptions Design caching layers and learn state management techniques to optimize application performance Manage users with membership control, registration, and authentication capabilities Build real-world data access layers using common design patterns Use custom collections with data source controls Learn the internals of grid controls PLUS—Get code samples on the Web
This practical book includes a tutorial of the entire set of Windows and .NET APIs required to write concurrent programs. Because so much of the threading and synchronization features of the platform are Windows-general, the author, Joe Duffy, focuses first on the general behavior and then on the API details of native and managed code. Interspersed among the tutorial are many difficult-to-discover, useful insights, and internal details about how things work.
Maurice Herlihy, Nir Shavit
Multiprocessor machines, or Multicores, as they are known in the industry, are quickly taking over every aspect of computing. This volume provides a presentation of the guiding principles and algorithmic techniques necessary for effective multiprocessor programming.
The first edition of this book was released at the 2001 Tech-Ed conference in Atlanta, Georgia. At that time, the .NET platform was still a beta product, and in many ways, so was this book. This is not to say that the early editions of this text did not have merit—after all, the book was a 2002 Jolt Award finalist and it won the 2003 Referenceware Excellence Award. However, over the years that author Andrew Troelsen spent working with the common language runtime (CLR), he gained a much deeper understanding of the .NET platform and the subtleties of the C# programming language, and he feels that this fifth edition of the book is as close to a “final release” as he’s come yet. This new edition has been comprehensively revised and rewritten to make it accurately reflect the C# 4 language specification for the .NET 4 platform. You’ll find new chapters covering the important concepts of dynamic lookups, named and optional arguments, Parallel LINQ (PLINQ), improved COM interop, and variance for generics. If you’re checking out this book for the first time, do understand that it's targeted at experienced software professionals and/or graduate students of computer science (so don't expect three chapters on iteration or decision constructs!). The mission of this text is to provide you with a rock-solid foundation in the C# programming language and the core aspects of the .NET platform (assemblies, remoting, Windows Forms, Web Forms, ADO.NET, XML web services, etc.). Once you digest the information presented in these 25 chapters, you’ll be in a perfect position to apply this knowledge to your specific programming assignments, and you’ll be well equipped to explore the .NET universe on your own terms. What you’ll learn Be the first to understand the .NET 4 platform and Visual C# 2010. Discover the ins and outs of the leading .NET technology. Learn from an award-winning author who has been teaching the .NET world since version 1.0. Find complete coverage of the WPF, WCF, and WF foundations that support the core .NET platform. Who this book is for This book is for anyone with some software development experience who is interested in the new .NET Framework 4 and the C# language. Whether you are moving to .NET for the first time or are already writing applications on .NET 2.0 or .NET 3.5, this book will provide you with a comprehensive grounding in the new technology and serve as a complete reference throughout your coding career. Table of Contents The Philosophy of NET Building C# Applications Core C# Programming Constructs, Part I Core C# Programming Constructs, Part II Defining Encapsulated Class Types Understanding Inheritance and Polymorphism Understanding Structured Exception Handling Understanding Object Lifetime Working with Interfaces Understanding Generics Delegates, Events, and Lambdas Advanced C# Language Features LINQ to Objects Configuring NET Assemblies Type Reflection, Late Binding, and Attribute-Based Prog Processes, AppDomains, and Object Contexts Understanding CIL and the Role of Dynamic Assemblies Dynamic Types and the Dynamic Language Runtime Multithreaded and Parallel Programming File I/O and Object Serialization ADO.NET Part I: The Connected Layer ADO.NET Part II: The Disconnected Layer ADO.NET Part III: The Entity Framework Introducing LINQ to XML Introducing Windows Communication Foundation Introducing Windows Workflow Foundation 40 Introducing Windows Presentation Foundation and XAML Programming with WPF Controls WPF Graphics Rendering Services WPF Resources, Animations, and Styles WPF Control Templates and UserControls Building ASP.NET Web Pages ASP.NET Web Controls, Master Pages and Theme ASP.NET State Management Techniques
The ASP.NET MVC 4 Framework is the latest evolution of Microsoft’s ASP.NET web platform. It provides a high-productivity programming model that promotes cleaner code architecture, test-driven development, and powerful extensibility, combined with all the benefits of ASP.NET. ASP.NET MVC 4 contains a number of significant advances over previous versions. New mobile and desktop templates (employing adaptive rendering) are included together with support for jQuery Mobile for the first time. New display modes allow your application to select views based on the browser that's making the request while Code Generation Recipes for Visual Studio help you auto-generate project-specific code for a wide variety of situtations including NuGet support. In this fourth edition, the core model-view-controller (MVC) architectural concepts are not simply explained or discussed in isolation, but are demonstrated in action. You’ll work through an extended tutorial to create a working e-commerce web application that combines ASP.NET MVC with the latest C# language features and unit-testing best practices. By gaining this invaluable, practical experience, you’ll discover MVC’s strengths and weaknesses for yourself—and put your best-learned theory into practice. The book's authors, Steve Sanderson and Adam Freeman, have both watched the growth of ASP.NET MVC since its first release. Steve is a well-known blogger on the MVC Framework and a member of the Microsoft Web Platform and Tools team. Adam started designing and building web applications 15 years ago and has been responsible for some of the world's largest and most ambitious projects. You can be sure you are in safe hands. What you’ll learn Gain a solid architectural understanding of ASP.NET MVC 4, including basic MVC Explore the entire ASP.NET MVC Framework Learn what's new in version 4 and how how best to apply these new features See how MVC and test-driven development work in action Capitalize on your existing knowledge quickly and easily through comparison of features in classic ASP.NET to those in ASP.NET MVC Learn about the latest security and deployment issues, including those related to IIS 7 Who this book is for This book is for web developers with a basic knowledge of ASP.NET and C# who want (or need) to start using the new ASP.NET MVC 4 Framework.
Anders Hejlsberg, Mads Torgersen, Scott Wiltamuth
The definitive reference to the C# Programming Language, updated for the new version 4.0, direct from its creator, Anders Hejlsberg * *New to this edition - all code presented in full color. *Contains insightful, valuable annotations from twelve leading C# programmers, available nowhere else. *C# has become the most widely used language for Windows development. *Anders Hejlsberg is the creator of C#, and a true legend among programmers. C# is now firmly established as the most-used language when writing applications for Windows and the Microsoft platform. Written by the language's architect, Anders Hejlsberg, and design team members, and now updated for C# 4.0, The C# Programming Language, 4/e, is the definitive technical reference for C#. It provides the most complete specification of the languages, along with descriptions, reference materials, and code samples from the C# design team. This edition also adds valuable notes, comments, and tips from twelve of the world's top C# programmers, including Bill Wagner, Chris Sells, Jesse Liberty, and Brad Abrams. It has been brought fully up to date with the new features of C# 4.0. And new to this edition, all the code will be presented in full color, so that it appears in the book exactly as it appears on screen. This book is a must-have for any developer using C# on a regular basis.
Windows Workflow Foundation (WF) is a revolutionary part of the .NET 4 Framework that allows you to orchestrate human and system interactions as a series of workflows that can be easily mapped, analyzed, adjusted, and implemented. As business problems become more complex, the need for workflow-based solutions has never been more evident. WF provides a simple and consistent way to model and implement complex problems. As a developer, you focus on developing the business logic for individual workflow tasks. The runtime handles the execution of those tasks after they have been composed into a workflow. Pro WF: Windows Workflow in .NET 4 provides you with the skills you need to incorporate WF in your applications, using a lively tutorial style with each example illustrated in C#. This book gets you up to speed with WF 4 quickly and comprehensively. Learn about WF 4’s new designer, it’s updated programming paradigm, and the completely new set of activities that can enable and extend your workflows. This book also includes detailed coverage of how to customize your workflows and access them in a variety of ways and situations so you can maximize the advantages of this technology. What you’ll learn WF 4 basics New activities and changes to existing activities in WF 4 Customizing your workflows Accessing your workflows in a variety of ways in a variety of situations Using WF with Web Services and ASP.NET Integrating WCF and WF Who this book is for This book is for intermediate to advanced .NET developers who need to learn how to use the latest version of Windows Workflow Foundation (WF 4). This book is not a primer on .NET or the C# language. To get the most out of the examples presented in this book, it is necessary to have a good working knowledge of .NET 2.0 or higher. All of the examples are presented in C#. Table of Contents A Quick Tour of Windows Workflow Foundation Foundation Overview Activities Workflow Hosting Procedural Flow Control Collection-Related Activities Flowchart Modeling Style Host Communication Workflow Services Workflow Services Advanced Topics Workflow Persistence Customizing Workflow Persistence Transactions, Compensation, and Exception Handling Workflow Tracking Enhancing the Design Experience Advanced Custom Activities Hosting the Workflow Designer WF 3.x Interop and Migration
Steven John Metsker
bull; A catalogue of proven solutions to recurring problems in C# software design bull; Part of the Addison-Wesley Software Patterns Series, with John Vlissides as consulting editor bull; Allows the growing legions of Microsoft technology developers to apply traditional software approaches to frequently encountered problems
Ian Griffiths, Matthew Adams, Jesse Liberty
With its support for dynamic programming, C# 4.0 continues to evolve as a versatile language on its own. But when C# is used with .NET Framework 4, the combination is incredibly powerful. This bestselling tutorial shows you how to build web, desktop, and rich Internet applications using C# 4.0 with .NET's database capabilities, UI framework (WPF), extensive communication services (WCF), and more. In this sixth edition, .NET experts Ian Griffiths, Matthew Adams, and Jesse Liberty cover the latest enhancements to C#, as well as the fundamentals of both the language and framework. You'll learn concurrent programming with C# 4.0, and how to use .NET tools such as the Entity Framework for easier data access, and the Silverlight platform for browser-based RIA development. Learn C# fundamentals, such as variables, flow control, loops, and methods Build complex programs with object-oriented and functional programming techniques Process large collections of data with the native query features in LINQ Communicate across networks with Windows Communication Foundation (WCF) Learn the advantages of C# 4.0's dynamic language features Build interactive Windows applications with Windows Presentation Foundation (WPF) Create rich web applications with Silverlight and ASP.NET
Design Patterns demonstrates how software developers can improve the performance, maintainability, portability, and scalability of their code through the use of the Gang of Four design patterns. After a discussion of patterns methodology, reasons for using design patterns, the book delves into each of the 23 patterns. Each pattern section gives a detailed description of the pattern, refactored from either Boolean logic or simpler, less-maintainable code that you might encounter in the real world, and shows readers how to use the pattern in their code. The text walks readers through making the move from current code to the pattern, lists the benefits of using the pattern, and shows how the pattern performs after the refactoring effort, with a goal throughout of providing practical implementations.
*The first advanced book offering important .NET 2.0 insights into C# and Windows Forms *Explains taking .NET controls to highest level for programmers, with advanced customizations *Follows the successful formula of the previous edition (1590590457), examining all the .NET controls from old staples to the new .NET 2.0 controls
* Good coverage of C# as well as Delphi for .NET. * Not a port of a Delphi book – tightly focused on what’s new which includes the FCL overview that you need to make sense of the Microsoft documentation. * Particularly clear and well-written.
David B. Makofske, Michael J. Donahoo, Kenneth L. Calvert
This volume focuses on the underlying sockets class, one of the basis for learning about networks in any programming language. By learning to write simple client and server programs that use TCP/IP, readers can then realize network routing, framing, error detection and correction, and performance.