SOLID is Solid - Enterprise principles in OOP architectural design ... · SOLID is Solid Enterprise...

Post on 09-Jul-2020

3 views 0 download

Transcript of SOLID is Solid - Enterprise principles in OOP architectural design ... · SOLID is Solid Enterprise...

SOLID is SolidEnterprise principles in OOP architectural design-phase

pattern-level constructs

Hillel Wayne

SOLID

I Single responsibility

I Open–closed principle

I Liskov substitution principle

I Interface segregation principle

I Dependency inversion principle

@hillelogram

Why SOLID?

@hillelogram

Why SOLID?

@hillelogram

Why SOLID?

@hillelogram

Why SOLID?

@hillelogram

Why SOLID?

@hillelogram

Why SOLID?

@hillelogram

What We Can Learn From Software History

Hillel Waynehillelwayne.com@hillelogram

www.hillelwayne.com/talks/software-history

@hillelogram

When you create the new classes, make sure you properlytest them and create them using SOLID principles so theywill be easier to change in the future.

If it’s too complex, it’s violating a ton of SOLID principles.

Don’t be STUPID: GRASP SOLID!

@hillelogram hillelwayne.com/talks/software-history

The Process

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

Do you know CS?

Can you think quickly?

@hillelogram hillelwayne.com/talks/software-history

Do you know CS?

Can you think quickly?

@hillelogram hillelwayne.com/talks/software-history

1. When did it happen?

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

2. What was the context?

@hillelogram hillelwayne.com/talks/software-history

Primary Source

Artifacts and information from that time

Secondary Source

Information produced after the fact

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

Do you know CS?

Can you think quickly?

@hillelogram hillelwayne.com/talks/software-history

3. What were the reasons?

@hillelogram hillelwayne.com/talks/software-history

Dynamic allocation

Fortran Nope

Lisps just cons it

Smalltalk copyWith: newElement

C Manual memory manipulation

@hillelogram hillelwayne.com/talks/software-history

Dynamic allocation

Fortran Nope

Lisps just cons it

Smalltalk copyWith: newElement

C Manual memory manipulation

@hillelogram hillelwayne.com/talks/software-history

Dynamic allocation

Fortran Nope

Lisps just cons it

Smalltalk copyWith: newElement

C Manual memory manipulation

@hillelogram hillelwayne.com/talks/software-history

Dynamic allocation

Fortran Nope

Lisps just cons it

Smalltalk copyWith: newElement

C Manual memory manipulation

@hillelogram hillelwayne.com/talks/software-history

Do you know CS?

Can you think quickly?

Have you used C?

@hillelogram hillelwayne.com/talks/software-history

Do you know CS?

Can you think quickly?

Have you used C?

@hillelogram hillelwayne.com/talks/software-history

Do you know CS?

Can you think quickly?

Have you used C?

@hillelogram hillelwayne.com/talks/software-history

4. What does this predict?

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

Does anyone know of a version of Smalltalk that runs onApollo workstations? [...] i’ve heard rumors that such aprogram exists at Utah or Brown but have no firm pointers.only full Smalltalk-80 please – not little Smalltalk.

@hillelogram hillelwayne.com/talks/software-history

Does anyone know of a version of Smalltalk that runs onApollo workstations? [...] i’ve heard rumors that such aprogram exists at Utah or Brown but have no firm pointers.only full Smalltalk-80 please – not little Smalltalk.

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

5. What are the loose ends?

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

Pointers require a complex form of doubly-indirectedthinking that some people just can’t do, and it’s pretty cru-cial to good programming. A lot of the “script jocks” whostarted programming by copying JavaScript snippets intotheir web pages and went on to learn Perl never learnedabout pointers, and they can never quite produce code ofthe quality you need.

That’s the source of all these famous interview ques-tions you hear about, like “reversing a linked list” or “de-tect loops in a tree structure.”

@hillelogram hillelwayne.com/talks/software-history

Pointers require a complex form of doubly-indirectedthinking that some people just can’t do, and it’s pretty cru-cial to good programming. A lot of the “script jocks” whostarted programming by copying JavaScript snippets intotheir web pages and went on to learn Perl never learnedabout pointers, and they can never quite produce code ofthe quality you need.

That’s the source of all these famous interview ques-tions you hear about, like “reversing a linked list” or “de-tect loops in a tree structure.”

@hillelogram hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history

Conclusion

@hillelogram hillelwayne.com/talks/software-history

www.hillelwayne.com/talks/software-history

@hillelogram hillelwayne.com/talks/software-history