Object Oriented Design in the - Amazon...
Transcript of Object Oriented Design in the - Amazon...
![Page 1: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/1.jpg)
@jessitron
Object Oriented Design in the
![Page 2: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/2.jpg)
![Page 3: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/3.jpg)
6 package-level principles +
DRY YAGNI+&
SOLID
![Page 4: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/4.jpg)
classestypesJava
Haskell Ruby
ECMAScript
![Page 5: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/5.jpg)
?
![Page 6: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/6.jpg)
Single Responsibility
Principle
SOLID
![Page 7: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/7.jpg)
Don’tRepeatYourself
![Page 8: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/8.jpg)
![Page 9: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/9.jpg)
![Page 10: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/10.jpg)
Sell
Track
Buy
![Page 11: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/11.jpg)
class Good implements InvItem, Purchase, Sellable{ InventoryImpl inventory; PurchaseImpl purchase; SellableImpl sellable; ... }
Java
![Page 12: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/12.jpg)
Ruby
class Good include SellableItem include InventoryTracking include Purchaseend
![Page 13: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/13.jpg)
Ruby
joy discipline
![Page 14: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/14.jpg)
Haskell
joydiscipline
![Page 15: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/15.jpg)
data Good = Good SaleInfo InvInfo PurchInfo
instance ReceiptItem Good where format Good s _ _ = desc s + price s
Haskell
![Page 16: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/16.jpg)
dictionaries
functions
ECMAScript
![Page 17: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/17.jpg)
ECMAScript
var good = _.extend({}, invInfo, saleInfo, purInfo)
{ name: “Canteen”, sku: 37671287, price: 1399, format: function() {...} cost: 715}
![Page 18: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/18.jpg)
![Page 19: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/19.jpg)
InterfaceSegregation
Principle
SOLID
![Page 20: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/20.jpg)
String receiptLine(Sellable item)
Java
![Page 21: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/21.jpg)
ECMAScript
function receiptLine(item) { console.log(“Cha-ching! profit ” + item.price - item.cost) return format(item.desc, item.price) }
![Page 22: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/22.jpg)
![Page 23: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/23.jpg)
Haskell
print :: ReceiptItem -> String
![Page 24: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/24.jpg)
LiskovSubstitution
Principle
SOLID
![Page 25: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/25.jpg)
Java
List sneaky = new MyList()...
if (sneaky.length == -1) { System.out.println(“WAT!”)}
![Page 26: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/26.jpg)
LSP
![Page 27: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/27.jpg)
PLS
![Page 28: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/28.jpg)
Principle of
Least
Surprise
![Page 29: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/29.jpg)
Ruby
def form_receipt_line(item_sold) ... line_with_desc_and_priceend
![Page 30: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/30.jpg)
violate expectations
access global state
modify input
change the world
![Page 31: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/31.jpg)
DependencyInversionPrinciple
SOLID
![Page 32: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/32.jpg)
App
Hibernate
![Page 33: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/33.jpg)
App
HibernatePersistence
API
![Page 34: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/34.jpg)
HibernatePersistence APIAppfunction
another function
data
![Page 35: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/35.jpg)
ECMAScript
find items
format receipt
lineitem data
var items = _.map(codes, findItem)var lines = _.map(items, formatReceiptLine)
![Page 36: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/36.jpg)
> cat data.csv | grep 42 | cut -f2 | sort
ksh
![Page 37: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/37.jpg)
Open/ClosedPrinciple
SOLID
![Page 38: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/38.jpg)
Extension
Closed
![Page 39: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/39.jpg)
App
Module
LibraryClosed for
modification
![Page 40: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/40.jpg)
> cat data.csv | grep 42 | cut -f2 | sort
![Page 41: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/41.jpg)
![Page 42: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/42.jpg)
package principles
3 x cohesion3 x coupling
![Page 43: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/43.jpg)
couplingcohesion
![Page 44: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/44.jpg)
Common Reuse
Principle
Common ChangesPrinciple
![Page 45: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/45.jpg)
Reuse-ReleaseEquivalency
Principle
![Page 46: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/46.jpg)
App
LibraryReuse This
![Page 47: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/47.jpg)
right problem
best solutionevidence of actual use
name and location
code reviews documentation
testsexisting functionality
maintenanceburden
machinery
bugslegacy code
![Page 48: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/48.jpg)
Planning for reuse is premature
optimization
![Page 49: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/49.jpg)
![Page 50: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/50.jpg)
Premature optimizationis the root of all evil
Donald Knuth
![Page 51: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/51.jpg)
AcyclicDependencies
Principle
![Page 52: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/52.jpg)
App
Module
Library
![Page 53: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/53.jpg)
App
Module
Library
Module Module
Library LibraryLibraryLibrary
App
![Page 54: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/54.jpg)
![Page 55: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/55.jpg)
![Page 56: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/56.jpg)
Stable Abstractions
Principle
Stable Dependency
Principle
![Page 57: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/57.jpg)
Increasing stability
![Page 58: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/58.jpg)
Concrete
Abstract
![Page 59: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/59.jpg)
Reusable
You Are Here
Abstract
![Page 60: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/60.jpg)
DRY
![Page 61: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/61.jpg)
getTaxRate capitalize
customerRewards formatDate
![Page 62: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/62.jpg)
YouAin’tGonnaNeed It
![Page 63: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/63.jpg)
ConcreteYou Are Here Simple
![Page 64: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/64.jpg)
Time Reading
UseChange
![Page 65: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/65.jpg)
![Page 66: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/66.jpg)
![Page 67: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/67.jpg)
$ $$$
![Page 68: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/68.jpg)
6 package-level principles +
DRY YAGNI+&
SOLID
![Page 69: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/69.jpg)
![Page 70: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/70.jpg)
SmallClear intent
older = better
![Page 71: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/71.jpg)
@jessitronFreedom
![Page 72: Object Oriented Design in the - Amazon S3s3-eu-west-1.amazonaws.com/presentations2013/20_presentation.pdf · Object Oriented Design in the . 6 package-level principles + DRY YAGNI](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee14ccdad6a402d666c3af5/html5/thumbnails/72.jpg)
@jessitron@jessitron