Skip to content

Instantly share code, notes, and snippets.

View dimabory's full-sized avatar
💭
🦁

Dmytro Borysovskyi dimabory

💭
🦁
View GitHub Profile
@dimabory
dimabory / solid.md
Last active February 1, 2019 13:30
Principles Of Object Oriented Design http://wiki.c2.com/?PrinciplesOfObjectOrientedDesign
(SRP) The SingleResponsibilityPrinciple
(OCP) The OpenClosedPrinciple
(LSP) The LiskovSubstitutionPrinciple
(ISP) The InterfaceSegregationPrinciple
(DIP) The DependencyInversionPrinciple
There are three principles of package cohesion
(REP) The ReuseReleaseEquivalencePrinciple
(CCP) The CommonClosurePrinciple
(CRP) The CommonReusePrinciple
@dimabory
dimabory / 01-overview.md
Last active September 5, 2022 08:33
coupling, cohesion, encapsulation

http://wiki.c2.com/?CouplingAndCohesion

Low Coupling

Coupling refers to the relationship of a module with another module. A module is said to be highly coupled with another module if changes to it will result to changes to the other module. And a module is said to be loosely coupled if a module is independent of any other modules. This can be achieved by having a stable interface that effectively hides the implementation of another module.

Benefits of low coupling are

  • maintainability – changes are confined in a single module
  • testability – modules involved in unit testing can be limited to a minimum
@dimabory
dimabory / async.md
Last active January 28, 2019 13:03
Async PHP implementtions
@dimabory
dimabory / ddd_glossary.md
Last active April 8, 2024 16:40
Implementing Domain-Driven Design by Vaughn Vernon
  • Ubiquitous Language
  • Bounded Context
  • Context Map
  • Domain, Aggregate, Domain Events
  • Entities, Value Objects, Services, Repositories

The Ubiquitous Language is a shared language developed by the team—a team composed of both domain experts and software developers.

A Bounded Context is an explicit boundary within which a domain model exists. Inside the boundary all terms and phrases of the Ubiquitous Language have specific meaning, and the model reflects the Language with exactness.

@dimabory
dimabory / 3.md
Last active February 7, 2019 12:04
three words which are taking over the world

(DDD) Domain Driven Design
(TDD) Test-Driven Development
(BDD) Behavior-Driven Development
(TBD) Trunk Based Development

(MDA) Model Driven Architecture

(MVC, MVP, MMVM) Model-View-Controller, ...
(ADR) - Action Domain Responder

@dimabory
dimabory / gist:20da391838eb19a99973b9d213c77842
Created January 31, 2019 10:41
Message broker protocols

MQTT - Message Queue Telemetry Transport

http://mqtt.org

MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable networks. The design principles are to minimise network bandwidth and device resource requirements whilst also attempting to ensure reliability and some degree of assurance of delivery. These principles also turn out to make the protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of Things” world of connected devices, and for mobile applications where bandwidth and battery power are at a premium.

AMQP - Advanced Message Queueing Protocol

https://www.amqp.org/

The Advanced Message Queuing Protocol (AMQP) is an open standard for passing business messages between applications or organizations. It connects systems, feeds business processes with the information they need and reliably transmits onward the instructions that achieve the

@dimabory
dimabory / vo|dto.md
Last active January 31, 2019 14:31
VO, DTO
VO DTO
Data yes yes
Logic yes no
Identity no no
Immutability yes no

VO

final class Address
@dimabory
dimabory / gist:56e36474a1bb5573c08f26805a978fb5
Last active July 22, 2023 08:41
General Responsibility Assignment Software Patterns (GRASP)
@dimabory
dimabory / .md
Last active February 4, 2019 08:31
ddd-style project structure (WIP)