Can PL/SQL be Clean? (2013)

43
Can PL/SQL Be Clean? AOUG, Oct. 2013 Peter Kofler, ‘Code Cop’ @codecopkofler www.code-cop.org Copyright Peter Kofler, licensed under CC-BY.

Transcript of Can PL/SQL be Clean? (2013)

Page 1: Can PL/SQL be Clean? (2013)

Can PL/SQLBe Clean?

AOUG, Oct. 2013

Peter Kofler, ‘Code Cop’@codecopkofler

www.code-cop.org

Copyright Peter Kofler, licensed under CC-BY.

Page 2: Can PL/SQL be Clean? (2013)

Peter Kofler

• Ph.D. (Appl. Math.)

• Software Developerfor 14 years

• “fanatic about code quality”

• Pair Programming #CodeCopTour

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 3: Can PL/SQL be Clean? (2013)

Agenda

● Define Clean Code● Define PL/SQL● Apply Clean Code to PL/SQL● Examples● Discussion

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 4: Can PL/SQL be Clean? (2013)

What is Clean Code?

Page 5: Can PL/SQL be Clean? (2013)

“CraftsmanshipOver Crap“

(Robert C. Martin)

Page 6: Can PL/SQL be Clean? (2013)

“Clean code looks like it was written by someone who

cares.”(Michael Feathers)

Page 7: Can PL/SQL be Clean? (2013)

Rule 1) Written by

someone who cares.

Page 8: Can PL/SQL be Clean? (2013)

What is Clean Code?

Page 9: Can PL/SQL be Clean? (2013)

Clean Code

Page 10: Can PL/SQL be Clean? (2013)

Clean Code is Not New

● Clean Coder, 2011● Clean Code, 2008● Implementation Patten, 2007● Agile Software Development, 2002● The Pragmatic Programmer, 1999● Refactoring, 1999● Code Complete 1st Ed, 1993 (!)

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 11: Can PL/SQL be Clean? (2013)

Quick And Dirty

Page 12: Can PL/SQL be Clean? (2013)

Code Complete

Page 13: Can PL/SQL be Clean? (2013)

“Write Programs for People First,

Computers Second.” (Steve McConnell)

Page 14: Can PL/SQL be Clean? (2013)

Rule 2) Written for People First.

Page 15: Can PL/SQL be Clean? (2013)

So how wouldYou

like the code to be?(besides working correctly)

Page 16: Can PL/SQL be Clean? (2013)

Code which does not make me want to kill the author.

http://programmers.stackexchange.com/a/13594/15057

Page 17: Can PL/SQL be Clean? (2013)

Easy and Simple!

● Easy to read.● Easy to follow.● Easy to understand.● Easy to modify.● Easy to test.● Easy ...

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

http://stackoverflow.com/a/954582/104143

Page 18: Can PL/SQL be Clean? (2013)

Procedural Language/Structured Query Language

Page 19: Can PL/SQL be Clean? (2013)

Should you write PL/SQL with care?

Page 20: Can PL/SQL be Clean? (2013)

Should you write PL/SQL for people?

Page 21: Can PL/SQL be Clean? (2013)

Tadaaa!

Page 22: Can PL/SQL be Clean? (2013)

Clean PL/SQL looks like it was

written by some-one who cares.

Page 23: Can PL/SQL be Clean? (2013)

Write PL/SQL for People First,

Databases Second.

Page 24: Can PL/SQL be Clean? (2013)

But...

Page 25: Can PL/SQL be Clean? (2013)

PL/SQL is not Java

• Clean Code targets “modern” languages– Java, C#– Ruby, Python– maybe C++

• Clean Code is about – Object Orientation– Test Driven Development

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 26: Can PL/SQL be Clean? (2013)

Do these guidelines apply to PL/SQL?

Page 27: Can PL/SQL be Clean? (2013)

PL/SQL is...

• compiled• imperative/procedural with modules

– function/procedure/package• structured

– if/loop/continue/exit– with exceptions

• static typed with strong type safety• kind of object-orientated (version 8)

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

http://en.wikipedia.org/wiki/PL/SQL

Page 28: Can PL/SQL be Clean? (2013)

Sounds much like Java to me ;-)

Page 29: Can PL/SQL be Clean? (2013)

Examples from

Page 30: Can PL/SQL be Clean? (2013)

Meaningful Names

Names should reveal intent. Use pronounceable names. Use Problem Domain Names.

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

e.g. http://www.zero1design.com/2011/10/31/cleaner-code-in-t-sql-part-1-%E2%80%93-naming-stored-procs-views/

Page 31: Can PL/SQL be Clean? (2013)

http://theprofoundprogrammer.com/post/26561881517/text-single-letter-variables-who-the-fuck-do

Page 32: Can PL/SQL be Clean? (2013)

Other Chapters

● Formatting ● Comments ● Functions ● Unit Testing

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 33: Can PL/SQL be Clean? (2013)

1/3 of “Clean Code” applies directly

Page 34: Can PL/SQL be Clean? (2013)
Page 35: Can PL/SQL be Clean? (2013)

Single Responsibility Principle

● „SRP“● Do one thing.● One reason for a function to change.● One level of abstraction per function.● Maybe applies to packages as well.

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 36: Can PL/SQL be Clean? (2013)

Other Object Oriented Stuff?

● Encapsulation ● Coupling (between packages) ● Cohesion ● Cyclomatic Complexity

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 37: Can PL/SQL be Clean? (2013)

½ of “Clean Code” applies (in some way)

Page 38: Can PL/SQL be Clean? (2013)

Conclusion

Page 39: Can PL/SQL be Clean? (2013)

1)Clean code always

looks like it was written by some-one who cares.

Page 40: Can PL/SQL be Clean? (2013)

2)Clean Code Applies

to PL/SQL(at least to a certain extend)

Page 41: Can PL/SQL be Clean? (2013)

3) Read It!

Page 42: Can PL/SQL be Clean? (2013)

Peter Kofler

@codecopkofler

www.code-cop.org

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 43: Can PL/SQL be Clean? (2013)

CC Images● cleaning: http://www.flickr.com/photos/inf3ktion/4477642894/● dump: http://www.flickr.com/photos/sanmartin/2682745838/● thumb: http://www.flickr.com/photos/leehaywood/4481372869/● knife: http://www.flickr.com/photos/21232564@N06/2234726613/● finish: http://www.flickr.com/photos/jayneandd/4450623309/

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY