Repository Pattern

Provides an abstraction of data, so that your application can work with a simple abstraction that has an interface approximating that of a collection. Adding, removing, updating, and selecting items from this collection is done through a series of straightforward methods, without the need to deal with database. Allows your applications to perform CRUD-like operations.... » read more

Managed vs Unmanaged Code

Unmanaged code is compiled to machine code and therefore executed by the OS directly. It therefore has the ability to do damaging/powerful things Managed code does not. This is how everything used to work, so typically it’s associated with old stuff like .dlls. M Managed code is not compiled to machine code but to an intermediate language... » read more

Reference vs. Value

When a parameter is passed by value, the caller and callee have two independent variables with the same value. If the callee modifies the parameter variable, the effect is not visible to the caller. When a parameter is passed by reference, the caller and the callee use the same variable for the parameter. If the callee modifies the parameter... » read more

Software Design Patterns

Design patterns are well-tested solutions to common problems in software development. The primary goal of any designing pattern is to help you structure your code so it is flexible and resilient. When it comes to your designs, you have to first understand a pattern and then adapt it to your own code. They also allow... » read more

Visual Studio vs Visual Studio Code

Visual Studio Code is an editor while Visual Studio is an IDE. Visual Studio Code is a source code editor developed by Microsoft for Windows, Linux and macOS. It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring.

REST Methods (Verbs)

A REST resource enables access to data, but doesn’t in itself do anything with that data. To use a REST resource, we have to pass along instructions about what action we want to perform. This is done using HTTP methods, also called verbs. Anytime you use a web browser, you or rather the browser use... » read more

GRASP Principles of Software Engineering

General Responsibility Assignment Software Patterns. Creator Who is responsible for creating an object? Making it apparent which objects are responsible for creating other objects. Controller MVC. Should separate view from model (business logic). Use Controller to coordinate this. Pure Fabrication When the behavior does not belong anywhere else, create a new class. Information Expert A... » read more

General Software Development Principles

Don’t Repeat Yourself (DRY) Avoid duplication in code. There should be a single source of truth. There should be one place in our system that deals with the particular problem. You Ain’t Gonna Need It (YAGNI) Solve the problems that you know exist, don’t write speculative code. It’s very tempting for developers when writing code,... » read more

Object Oriented Programming Basics

Abstraction Abstraction means we focus on the essential qualities of something rather than one specific example. Generalize instead of going into details.  Encapsulation The idea of taking our attributes and then taking our behaviors and bundling them together in the same unit. We also want to restrict access to the inner workings. “I don’t care... » read more

Implicit transactions: Don’t use it.

By default the database engine uses what’s known as an auto commit. Every T-SQL statement is committed or rolled back when it completes.  The database engine will always use this auto commit functionality unless a transaction is explicitly specified with BEGIN TRAN. Implicit transaction are rarely used in SQL server and when the option is... » read more