+ All Categories
Home > Technology > Designing for Others- Commercial API Design (NYC Code Camp)

Designing for Others- Commercial API Design (NYC Code Camp)

Date post: 12-Nov-2014
Category:
Upload: gibraltar-software
View: 1,236 times
Download: 0 times
Share this document with a friend
Description:
 
Popular Tags:
17
© e S y m m e t r i x Designing APIs for Others Real World Lessons About Commercial API Development
Transcript
Page 1: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Designing APIs for OthersReal World Lessons About

Commercial API Development

Page 2: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Typical Programming Goals

• Minimize maintenance cost & risk

• Extensible / refactorable to new requirements

• Easy to read the source code

Page 3: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Commercial API Goals

• Other people use your library and like it.

• Short First Reference -> First Wow

• Digestible, iterative discovery

Easy Things are Easy, Hard Things are Possible

Page 4: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

How Users Discover

• Code Samples– Very narrow, taken literally

• IntelliSense Driven Discovery

• See that they probably can do what they want to.

Page 5: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

IntelliSense Discovery Demo

Page 6: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Design Priorities

• Discovery through your fingers

• Where possible can’t be misused

• Don’t show what they don’t need– Advanced features in advanced ways

• Hard Shell– Designer->Compile->Runtime

Page 7: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Key Implementation Method

• Always outside in – terms, flow, exception types.

• Reads like the outline of a book– Fewer, Flatter

• Sample Driven Development– Samples are your test cases– Digestible chunks of WHY

• Consistency

Page 8: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Inheritance Demo

Page 9: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Inheritance

• Awkward IntelliSense• Hardening Tricky• Alternating viewpoints (External & Internal)• Compromise Simplicity

Advanced User Cool FactorCustomer Request Safety Net

Page 10: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Exceptions

• Thrown at very predictable points

• Use intrinsic types wherever they can fit– Pick types that make sense from the outside– Custom types are great for internal exceptions

caught & re-thrown

Page 11: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Hardening

• Event Pattern

• Property Transitions

• Inheritance

Page 12: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Hardening Demo

Page 13: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

FxCop / VS Code Analysis

• Catches all manner of subtle things• You can ignore its advice – but know why– Use of generic event handlers– Exposing generic collections

• Samples too – don’t require users to break the rules

• FxCop free in the Windows SDK, VS Code Analysis in Pro & higher editions.

Page 14: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Packaging

• Fewer Assemblies• Runnable Sample Solution• Clear Redistribution Requirements• Xml Help, PDB if feasible• Unit tests if available

Page 15: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Common Mistakes

• Users aren’t as smart as you– Domain knowledge– Coding capability

• Internal / Tribe Language• Inconsistent– Framework + API + Experience

• Single Minded

Page 16: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Most Common Mistake

You must have at least two, independent external teams use your API while it’s still

changeable

Page 17: Designing for Others- Commercial API Design (NYC Code Camp)

©

e S

y m

m e

t r

i

x

Additional Information

Book– Framework Design Guidelines by Krzysztof Cwalina

Websites– www.GibraltarSoftware.com– www.eSymmetrix.com

Follow Up– [email protected]– Twitter: kendallmiller


Recommended