Skip to content

Latest commit

 

History

History
1366 lines (1020 loc) · 48.6 KB

keeping-tabs-on-software-design-patterns-and-refactoring.md

File metadata and controls

1366 lines (1020 loc) · 48.6 KB

Software Design Patterns and Refactoring

Architectures at Scale

Compilers Book

Programming Language Classification

First generation

  • Machine languages

Second generation

  • Assembly languages

Third generation (higher-level languages)

Fourth-generation (languages are languages designed for specific applications)

  • NOMAD for report generation
  • SQL for database queries
  • Postscript for text formatting

Fifth-generation (logic- and constraint-based languages)

  • Prolog
  • OPS5

Imperative (program specifies how a computation is to be done- there is a notion of program state and statements that change the state)

  • C
  • C++
  • C#
  • Java

Declarative (program specifies what computation is to be done)

  • ML (functional)
  • Haskell (functional)
  • Prolog (constraint logic)

Functional

  • ML (declarative)
  • Hasell (declarative)

von Neumann (computational model is based on the von Neumann computer architecture)

  • Many of today's languages
  • Fortrain
  • C

Object-oriented (a programming style in which a program consists of a collection of objects that interact with one another)

  • C++
  • C#
  • Java
  • Ruby

Scripting (interpreted languages with high-level operators de­signed for "gluing together" computations)

  • Awk
  • JavaScript
  • Perl
  • PHP
  • Python
  • Ruby
  • Tel

Programming Languages, Types, and Paradigms

Programming Languages

Programming Paradigms

Programming Language Comparisons

von Neumann

Martin Fowler

Enterprise Application Architecture

Enterprise Application Architecture Examples

Refactoring

Martin Fowler, Refactoring, Patterns, ThoughtWorks

Refactoring Book Examples

Software Design Patterns

Design Patterns for Humans

General Software Design Patterns

Design Patterns- Gang of Four (GoF)

Software Design Patterns

General Software Design Patterns- Types

Types of Patterns

Creational Patterns (object creation)

Creational Patterns- Can use Singleton in Implementation

Structural Patterns (relationships among entities)

Structural Patterns (relationships among entities)- Familiar

Behavioral Patterns

Behavioral Patterns- Familiar

Software Design Patterns- Built Into Python

Creational Patterns (object creation)

Behavioral Patterns

Python Software Design Patterns and Refactoring

Patterns Talks

Brandon

Gang of Four: Principles

Composition over Inheritance: https://python-patterns.guide/gang-of-four/composition-over-inheritance/ Problem: the subclass explosion Solution #1: The Adapter Pattern Solution #2: The Bridge Pattern Solution #3: The Decorator Pattern Solution #4: Beyond the Gang of Four patterns

Architectures

Hawt

Architectures

Interesting https://www.enterpriseintegrationpatterns.com/patterns/messaging/toc.html https://en.wikipedia.org/wiki/Software_architecture#Architectural_styles_and_patterns https://en.wikipedia.org/wiki/List_of_software_architecture_styles_and_patterns https://en.wikipedia.org/wiki/Software_architecture https://en.wikipedia.org/wiki/Architectural_pattern

https://en.wikipedia.org/wiki/Messaging_pattern

https://en.wikipedia.org/wiki/Post/Redirect/Get https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop | Read–eval–print loop - Wikipedia -->

Software Design Pattern Catalogs

Catalogs

Python Design Patterns

Python Design Patterns and Algorithms

Django Design Patterns

Patterns and Design Patterns- General

Design Patterns- General

Programming Paradigms- Object Oriented Software

Object-Oriented Programming Languages

Object Oriented Software Construction

Object

Constructor

Object Oriented Software Characteristics

Programming Paradigms- Functional, Imperative, Declarative, Reactive

Functional Programming

Imperative and Declarative

React?

Programming Paradigms- Functional Programming

Inheritance versus Composition

Composition

Useful Terminology

Example of stateless protocols

State

Code Complete and Clean Code

Checklists and Cheat Sheets

GRASP and Clean Architecture (Follows SOLID Principles)

Object Oriented Software Construction Principles

Software Principles (SOLID)

Clean Architecture

Clean Architecture in Python and Django

Software Laws

Programming Anti Patterns

Refactoring