• Bridges the gap between theory and practice, guiding students through applying key concepts to a pragmatic agile coding project
  • New coverage includes: Kanban for BAU, Domain-Driven Design, Hexagonal Architecture, Test-Driven Development, and Test-First methodology
  • Contains expanded coverage of unit testing, refactoring, and Pure Dependency Injection
  • Packed with up-to-date C# examples (and written for developers using multiple languages)  



  •          Published 4/12/2017

       2nd Edition  448 pages   Book 978-1-5093-0258-1    eBook 978-1-5093-0262-8

 Write code that can adapt to changes.

By applying this book’s principles, you can create code that accommodates new requirements and unforeseen scenarios without significant rewrites. Gary McLean Hall describes Agile best practices, principles, and patterns for designing and writing code that can evolve more quickly and easily, with fewer errors, because it doesn’t impede change.

Now revised, updated, and expanded, Adaptive Code, Second Edition adds indispensable practical insights on Kanban, dependency inversion, and creating reusable abstractions. Drawing on over a decade of Agile consulting and development experience, McLean Hall has updated his best-seller with deeper coverage of unit testing, refactoring, pure dependency injection, and more.

Master powerful new ways to:

• Write code that enables and complements Scrum, Kanban, or any other Agile framework

• Develop code that can survive major changes in requirements

• Plan for adaptability by using dependencies, layering, interfaces, and design patterns

• Perform unit testing and refactoring in tandem, gaining more value from both

• Use the “golden master” technique to make legacy code adaptive

• Build SOLID code with single-responsibility, open/closed, and Liskov substitution principles

• Create smaller interfaces to support more-diverse client and architectural needs

• Leverage dependency injection best practices to improve code adaptability

• Apply dependency inversion with the Stairway pattern, and avoid related anti-patterns

About You

This book is for programmers of all skill levels seeking more-practical insight into design patterns, SOLID principles, unit testing, refactoring, and related topics. Most readers will have programmed in C#, Java, C++, or similar object-oriented languages, and will be familiar with core procedural programming techniques.

Table of Contents

Chapter 1 Introduction to Scrum                                          

Scrum versus waterfall

Roles and responsibilities

Product owner

Scrum master

Development team


The Scrum board

Charts and metrics


The sprint

Release planning

Sprint planning

Daily Scrum

Sprint demo

Sprint retrospective

Scrum calendar

Agile in the real world






Chapter 2 Introduction to Kanban                                         

Kanban quickstart

The information radiator

Limiting work in progress

Protecting against change

Defining “done”

Event-driven ceremonies

Classes of service

Service level agreements

Class WIP limits

People as a class of service


Lead time and cycle time

Cumulative flow diagrams


Part II  Foundations of adaptive code

Chapter 3 Dependencies and layering                                    


A simple example

Framework dependencies

Third-party dependencies

Modeling dependencies in a directed graph

Managing dependencies

Implementations versus interfaces

The new code smell

Alternatives to object construction

Resolving dependencies

Dependency management with NuGet


Common layering patterns

Cross-cutting concerns

Asymmetric layering



Chapter 4 Interfaces and design patterns                               

What is an interface?


Explicit implementation


Adaptive design patterns

The Null Object pattern

The Adapter pattern

The Strategy pattern

Further versatility



Fluent interfaces



Chapter 5 Testing                                                               

Unit testing

Arrange, Act, Assert

Test-driven development

More complex tests

Unit-testing patterns

Writing maintainable tests

The Builder pattern for tests

The Builder pattern

Clarifying unit test intent

Writing tests first

What is TDD?

Test-driven design

Test-first development

 Further testing

The testing pyramid

Testing pyramid anti-patterns

The testing quadrant

Testing for prevention and cure

How do you decrease MTTR?



Chapter 6 Refactoring                                                         

Introduction to refactoring

Changing existing code

A new account type

Aggressive refactoring

Red, green, refactor…redesign

Making legacy code adaptive

The golden master technique


Part III SOLID code     

Chapter 7 The single responsibility principle                            

Problem statement

Refactoring for clarity

Refactoring for abstraction

SRP and the Decorator pattern

The Composite pattern

Predicate decorators

Branching decorators

Lazy decorators

Logging decorators

Profiling decorators

Decorating properties and events



Chapter 8 The open/closed principle                                      

Introduction to the open/closed principle

The Meyer definition

The Martin definition

Bug fixes

Client awareness

Extension points

Code without extension points

Virtual methods

Abstract methods

Interface inheritance

“Design for inheritance or prohibit it”

Protected variation

Predicted variation

A stable interface

Just enough adaptability

Predicted variation versus speculative generality

Do you need so many interfaces?



Chapter 9 The Liskov substitution principle                             

Introduction to the Liskov substitution principle

Formal definition

LSP rules




Data invariants

Liskov contract rules

Code contracts

Covariance and contravariance


Liskov type system rules



Chapter 10  Interface segregation                                          

A segregation example

A simple CRUD interface


Multiple interface decoration

Client construction

Multiple implementations, multiple instances

Single implementation, single instance

The Interface Soup anti-pattern

Splitting interfaces

Client need

Architectural need

Single-method interfaces



Chapter 11  Dependency inversion                                        

Structuring dependencies

The Entourage anti-pattern

The Stairway pattern

An example of abstraction design



Abstracting capabilities

The improved client

Abstracting queries

Further abstraction


Part IV Applying adaptive code

Chapter 12  Dependency injection                                         

Humble beginnings

The Task List application

Constructing the object graph

Beyond simple injection

The Service Locator anti-pattern

Illegitimate Injection

The composition root

Convention over configuration



Chapter 13  Coupling, cohesion, and connascence                    

Coupling and cohesion









Execution order




Measuring connascence


Unofficial connascence

Static vs. dynamic connascence



Appendix   Adaptive tools                                                     

Source control with Git

Cloning a repository

Switching to a different branch

Continuous integration

Source  : The Microsoft Press Store



Effectively query and modify data using Transact-SQL
Master T-SQL fundamentals and write robust code for Microsoft SQL Server and Azure SQL Database. Itzik Ben-Gan explains key T-SQL concepts and helps you apply your knowledge with hands-on exercises. The book first introduces T-SQL’s roots and underlying logic. Next, it walks you through core topics such as single-table queries, joins, subqueries, table expressions, and set operators. Then the book covers more-advanced data-query topics such as window functions, pivoting, and grouping sets. The book also explains how to modify data, work with temporal tables, and handle transactions, and provides an overview of programmable objects.

Microsoft Data Platform MVP Itzik Ben-Gan shows you how to:

  • Review core SQL concepts and its mathematical roots
  • Create tables and enforce data integrity
  • Perform effective single-table queries by using the SELECT statement
  • Query multiple tables by using joins, subqueries, table expressions, and set operators
  • Use advanced query techniques such as window functions, pivoting, and grouping sets
  • Insert, update, delete, and merge data
  • Use transactions in a concurrent environment
  • Get started with programmable objects–from variables and batches to user-defined functions, stored procedures, triggers, and dynamic SQL

Source  : microsoft press store





Bill Karwin has helped thousands of people write better SQL and build stronger relational databases. Now he’s sharing his collection of antipatterns—the most common errors he’s identified in those thousands of requests for help.

Most developers aren’t SQL experts, and most of the SQL that gets used is inefficient, hard to maintain, and sometimes just plain wrong. This book shows you all the common mistakes, and then leads you through the best fixes. What’s more, it shows you what’s behind these fixes, so you’ll learn a lot about relational databases along the way.

Each chapter in this book helps you identify, explain, and correct a unique and dangerous antipattern. The four parts of the book group the anti​patterns in terms of logical database design, physical database design, queries, and application development.

The chances are good that your application's database layer already contains problems such as Index Shotgun, Keyless Entry, Fear of the Unknown, and Spaghetti Query. This book will help you and your team find them. Even better, it will also show you how to fix them, and how to avoid these and other problems in the future.

SQL Antipatterns gives you a rare glimpse into an SQL expert's playbook. Now you can stamp out these common database errors once and for all.

Whatever platform or programming language you use, whether you're a junior programmer or a Ph.D., SQL Antipatterns will show you how to design and build databases, how to write better database queries, and how to integrate SQL programming with your application like an expert. You'll also learn the best and most current technology for full-text search, how to design code that is resistant to SQL injection attacks, and other techniques for success.

Source  SQL Antipatterns




Learning SQL, 2nd Edition

Master SQL Fundamentals

learn sql

By Alan Beaulieu

Publisher: O'Reilly Media

Release Date: April 2009

Pages: 338

Updated for the latest database management systems -- including MySQL 6.0, Oracle 11g, and Microsoft's SQL Server 2008 -- this introductory guide will get you up and running with SQL quickly. Whether you need to write database applications, perform administrative tasks, or generate reports, Learning SQL, Second Edition, will help you easily master all the SQL fundamentals.

Each chapter presents a self-contained lesson on a key SQL concept or technique, with numerous illustrations and annotated examples. Exercises at the end of each chapter let you practice the skills you learn. With this book, you will:
  • Move quickly through SQL basics and learn several advanced features
  • Use SQL data statements to generate, manipulate, and retrieve data
  • Create database objects, such as tables, indexes, and constraints, using SQL schema statements
  • Learn how data sets interact with queries, and understand the importance of subqueries
  • Convert and manipulate data with SQL's built-in functions, and use conditional logic in data statements

Knowledge of SQL is a must for interacting with data. With Learning SQL, you'll quickly learn how to put the power and flexibility of this language to work.


Best Database books


1-Database System Concepts 6th Edition1-Database System Concepts 6th Edition1-Database System Concepts 6th Edition

516rrbL RWL. SX383 BO1204203200



Database System Concepts by Silberschatz, Korth and Sudarshan is now in its 6th edition and is one of the cornerstone texts of database education. It presents the fundamental concepts of database management in an intuitive manner geared toward allowing students to begin working with databases as quickly as possible.

The text is designed for a first course in databases at the junior/senior undergraduate level or the first year graduate level. It also contains additional material that can be used as supplements or as introductory material for an advanced course. Because the authors present concepts as intuitive descriptions, a familiarity with basic data structures, computer organization, and a high-level programming language are the only prerequisites. Important theoretical results are covered, but formal proofs are omitted. In place of proofs, figures and examples are used to suggest why a result is true.

2-Readings in Database Systems (MIT Press)

416M6SPPCBL. SX378 BO1204203200

Lessons from database research have been applied in academic fields ranging from bioinformatics to next-generation Internet architecture and in industrial uses including Web-based e-commerce and search engines. The core ideas in the field have become increasingly influential. This text provides both students and professionals with a grounding in database research and a technical context for understanding recent innovations in the field. The readings included treat the most important issues in the database area -- the basic material for any DBMS professional.This fourth edition has been substantially updated and revised, with 21 of the 48 papers new to the edition, four of them published for the first time. Many of the sections have been newly organized, and each section includes a new or substantially revised introduction that discusses the context, motivation, and controversies in a particular area, placing it in the broader perspective of database research. Two introductory articles, never before published, provide an organized, current introduction to basic knowledge of the field; one discusses the history of data models and query languages and the other offers an architectural overview of a database system. The remaining articles range from the classical literature on database research to treatments of current hot topics, including a paper on search engine architecture and a paper on application servers, both written expressly for this edition. The result is a collection of papers that are seminal and also accessible to a reader who has a basic familiarity with database systems.

3-Database Management Systems

51AcjY2mWgL. SX358 BO1204203200


Database Management Systems provides comprehensive and up-to-date coverage of the fundamentals of database systems. Coherent explanations and practical examples have made this one of the leading texts in the field. The third edition continues in this tradition, enhancing it with more practical material.

The new edition has been reorganized to allow more flexibi

lity in the way the course is taught. Now, instructors can easily choose whether they would like to teach a course which emphasizes database application development or a course that emphasizes database systems issues. New overview chapters at the beginning of parts make it possible to skip other chapters in the part if you don't want the detail.

More applications and examples have been added throughout the book, including SQL and Oracle examples. The applied flavor is further enhanced by the two new database applications chapters.


4-Fundamentals of Database Systems

41E8F7T9YZL. SX371 BO1204203200

Fundamentals of Database Systems has become the world-wide leading textbook because it combines clear explanations of theory and design, broad coverage of models and real systems, and excellent examples with up-to-date introductions and modern database technologies. This book has been revised and updated to reflect the latest trends in technological and application development. This fourth edition expands on many of the most popular database topics, including SQL, security, and data mining along with an introduction to UML modeling and an entirely new chapter on XML and Internet databases.

5-An Introduction to Database Systems


71EWEVP9DWL. SX377 BO1204203200 .gif

The Seventh Edition continues to focus on the hallmark feature of its previous editions: providing a solid grounding in the foundations of database technology and shedding some light on how the field is likely to develop in the future. This comprehensive introduction to databases has been thoroughly revised to reflect the latest developments and advances in the field of database systems. Emphasizing insight and understanding rather than formalism, Chris Date has divided the book into six parts: Basic Concepts, The Relational Model, Database Design, Transaction Management, Further Topics, and Object and Object/Relational Databases. Throughout the book, there are numerous worked examples and exercises for the reader--with selected answers--as well as an extensive set of annotated references. The release of this new edition of An Introduction to Database Systems coincides with the 25th Anniversary of its initial publication.

6-Database Systems: Design, Implementation, & Management 11th Edition

51OJuMfUfTL. SX389 BO1204203200

Practical and easy to understand, DATABASE SYSTEMS: DESIGN, IMPLEMENTATION, AND MANAGEMENT, Eleventh Edition, gives students a solid foundation in database design and implementation. Filled with visual aids such as diagrams, illustrations, and tables, this market-leading text provides in-depth coverage of database design, demonstrating that the key to successful database implementation is in proper design of databases to fit within a larger strategic view of the data environment. Renowned for its clear, straightforward writing style, this text provides students with an outstanding balance of theory and practice. The eleventh edition has been updated to include expanded relational algebra coverage, updated business vignettes showing the impact of database tech in the real world, updated coverage of cloud data services, expanded coverage of Big Data and related Hadoop technologies, SQL coverage expanded to include MySQL databases, and many other improvements! In addition, new review questions, problem sets, and cases have been added throughout the book so that students have multiple opportunities to test their understanding and develop real and useful design skills.