37
Five agile principles that should guide you every time you write code by Talevski Igor

Laravel 5 and SOLID

Embed Size (px)

Citation preview

Five agile principles that should guide you every time you write code

by Talevski Igor

Talevski Igor

L 5 : N E W T H I N G S - Q U I C K R E V I E W

STRU

CTU

RE

Default namespace: Appapp/models=> nullapp/start => nullNEW => app/Providers

Controllers => app/HttpMiddleware => app/HttpRequests => app/Http

Route filters=> middleware

language files => resources directoryviews => resources directory

L 5 : N E W T H I N G S - Q U I C K R E V I E W

Contracts: illuminate/contractsController Method InjectionEvent ObjectsCommands / Queueing

Route Middleware (Filters)

Form Requests / Controller Request Validation

Route CacheDatabase QueueLaravel Scheduler

Elixir

SocialiteFilesystem abstraction: Flysystem

DotEnvAuthentication ScaffoldingConfiguration CacheNew Generators

TinkerSymfony VarDumper

L 5 : N E W T H I N G S - Q U I C K R E V I E W

NO

MO

RE…

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

SINGLE RESPONSIBILITY PRINCIPLE

A class should have only one reason to

change.

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

Software entities (classes, modules, functions,

etc.) should be open for extension,

but closed for modification.

OPEN/CLOSED PRINCIPLE

Separate extensible behavior behind an interface, and flip the dependencies

OPEN

/C

LO

SED

PRIN

CIP

LE

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

Let q(x) be a property provable about objects x of type T.

Then q(y) should be provable for objects y of type S

where S is a subtype of T.

LISKOV SUBSTITUTION PRINCIPLE

LIS

KO

VSU

BSTIT

UTIO

N P

RIN

CIP

LE

LIS

KO

VSU

BST

ITU

TIO

N P

RIN

CIP

LE

LIS

KO

VSU

BST

ITU

TIO

N P

RIN

CIP

LE

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

A client should never be forced to

implement an interface that it

doesn’t use

INTERFACE SEGREGATION PRINCIPLE

INTERFA

CE S

EG

REG

ATIO

N P

RIN

CIP

LE

INTERFA

CE S

EG

REG

ATIO

N P

RIN

CIP

LE

INTERFA

CE S

EG

REG

ATIO

N P

RIN

CIP

LE

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

A. High-level modules should not depend on low-level modules. Both should depend

on abstractions.

B. Abstractions should not depend upon details. Details should depend upon

abstractions.

DEPEN

DEN

CY IN

VERSIO

N P

RIN

CIP

LE

Dependency inversion principle

DEPEN

DEN

CY IN

VERSIO

N P

RIN

CIP

LE

DEPEN

DEN

CY IN

VERSIO

N P

RIN

CIP

LE

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE