Skip to content

Books on Programming

Max Dörner edited this page Jun 27, 2021 · 8 revisions

This page contains a list of books that might be useful when working on Rubberduck. This reaches from books on general programming over books on C# and VBA to books on language processing with Antlr. Further references regarding VBA and COM can be found under VBA and VBE References.

General Programming

Clean Code

Clean Code by Robert C. Martins aka Uncle Bob is a must read for every programmer. Its overaching topic is how to write code someone else (or oneself after a few months) can comprehend. The more specific topics cover naming of variables and functions, formatting, breaking down long functions, comments, exception handling and more.

The book is primarily aimed at programmers in an object oriented language, but most of the book is applicable to any kind of programming. The examples are in Java, not in C#. However, that should not be much of a problem as these two languages look quite similar, anyway.

Principles, Patterns, and Practices

Agile Sofware Development - Principles, Patterns, and Practices by Robert C. Martins provides a good introduction to the SOLID principles and the major patterns used to write code that adheres to these principles. This book also covers some principles of agile development. Still, the main benefit is probably in the principles and patterns. The examples are in Java. However, knowing C#, that should be intuitive to read.

Adaptive Code via C#

Adaptive Code via C# by Gary McLean Hall is an introduction to SOLID principles in C#. Apart from some considerations regarding assembly architecture, this book does not contain a lot new over PPP by Robert Martins. However, the examples are in C# and they are presented in the context of the commonly encountered frameworks like ASP.NET. So, if you want something closer to C#, this book might be for you.

Dependency Injection in .NET

Dependency Injection in .NET by Mark Seeman is the book you want to read if you are interested in understand dependency injection. It is in C#, but in half of the book that does not really matter. After reading this book, you probably know enough to implement your own IoC Container, not that you should do that. (There are plenty already.)

The first 9 chapters deal with the why and how of dependency injection. Here chapter 7 has the very .Net specific position to show how to implement DI in the various frameworks like ASP.Net MVC, WPF and PowerShell. The rest of the book showcases a number of IoC Containers available for .Net. (This does not include Ninject, which is used in Rubberduck.)

The Art of Unit Testing

The Art of Unit Testing by Roy Osherove is a very good introduction to unit testing. It shows how to write good tests, how to use stubs and mocks and also how to write your code so that it is testable. As an added benefit, its examples are in C#.

Books on VBA and the VBE

VBA Developer's Handbook, Second Edition

VBA Developer's Handbook by Ken Getz and Mike Gilbert is the definitive reference for learning about VBA. It's first and foremost about VBA, regardless of the host application, so it is broad in coverage without confining the reader to implementations of a specific host. It's also one of the few VBA texts that fully explore the OOP capabilities of VBA, including Classes and Interfaces, and the role of Enumerable and Default attributes.

Practical Standards for Microsoft Visual Basic

Guidance on coding standards for VB6/VBA, although some suggestions are now out-dated, and are in conflict with modern best practices and the inspections that Rubberduck provides.

Developing Visual Basic Add-ins: The VB IDE Extensibility Model

Developing Visual Basic Add-ins: The VB IDE Extensibility Model by Steve Roman details the process of building add-ins for the VB6 and VBA editors, and also covers the entire VBIDE extensibility model.

Books on C#

C# in Depth

C# in Depth by Jon Skeet is the best reference to learn about C# language features from C#2 onwards. However, be advised that this book is not an introduction to C# and also really focuses on C# opposed to the .Net framework. You should be comfortable to read C# before starting to read this book. Then, it provides a very good background to all the never features of C#. The first chapters can be a bit boring if you are already comfortable with newer C# versions, but they still provide a good foundation and explain some oddities you might encounter.

C# in a Nutshell

C# *.0 in a Nutshell by Joseph Albahari and Ben Albahari (insert the current version) is a comprehensive reference about C# and the entire core .Net framework. The coverage includes things like LINQ, threading and networking, but excludes frameworks like WPF of ASP.Net MVC. So, if you want to know how something general works in .Net, this book will probably cover it. Just do not be disappointed that this books can be somewhat dry: it is a reference.

Language Processing

The Definitive Antlr4 Reference

If you really want to understand Antlr4, there is not much way around The Definitive Antlr4 Reference by Terence Parr, the creator of Antlr. It covers basically every part of the general workflow of Antlr. What you cannot find here, you probably cannot find anywhere else either. (Unfortunately, there are some abilities of Antlr4 which are not covered in this book.)

Language Implementation Patterns

Language Implementation Paterns by Terence Parr presents general patterns used in language implementation. Step by step it increases the abilities through a series of solutions for language problems of increasing difficulty. It all begins with validating very simple syntax and ends with interpreting and translating code.

Unfortunately, this book makes extensive usage of Antlr3 in its examples, which looks quite different than Antlr4, at least after parsing is done. Still, the general principles can be very educational.

Clone this wiki locally