The Principled Developer
Gerardo Gonzalez | @fmizzell |
The Principled Developer Gerardo Gonzalez | @fmizzell | The - - PowerPoint PPT Presentation
The Principled Developer Gerardo Gonzalez | @fmizzell | The Principle The Principle | Definitions Principle: A rule or standard, especially of good behavior Software: (...) and symbolic languages that control the
Gerardo Gonzalez | @fmizzell |
“The” Principle | Definitions
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
“The” Principle | Mission Statement
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
“The” Principle | Anything Missing?
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
“The” Principle | Improved Mission Statement
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
PHP and Drupal | PHP
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
PHP and Drupal | Drupal
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
PHP and Drupal | Drupal
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
class Node extends ContentEntityBase implements NodeInterface { }
Software Design Principles | SOLID
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
Software Design Principles | Liskov substitution principle
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
class Feline { public function meows() { return TRUE; }} class Tiger extends Feline { public function meows() { return "ROOOOOAAAARRRR!!!"; }}
Software Design Principles | Single responsibility principle | 1
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
print "<p>Hello World!!!<\p>";
Software Design Principles | Single responsibility principle | 2
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
$outputter->output( $formatter->format("Hello World!!!") );
Software Design Principles | Open/Closed principle
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
Software Design Principles | Interface segregation principle | 1
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
interface CacheInterface { public function set($cid, $data); public function get($cid); public function expire($timestamp); }
Software Design Principles | Interface segregation principle | 2
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
interface CacheInterface { public function set($cid, $data); public function get($cid); } interface ExpirableCacheInterface extends CacheInterface { public function expire($timestamp); }
Software Design Principles | Interface segregation principle | 3
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
Software Design Principles | Dependency inversion principle | 1
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
Software Design Principles | Dependency inversion principle | 2
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
Software Design Principles | Dependency inversion principle | 3
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
class Engine { private $clutch; public function __construct() { $this->clutch = new Clutch(); } }
Software Design Principles | Dependency inversion principle | 4
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
class Engine { private $clutch; public function __construct(ClutchInterface $clutch) { $this->clutch = $clutch; } }
What about improved communications? | Recap
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
What about improved communications? | Problem
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
What about improved communications? | Solution | 1
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
What about improved communications? | Solution | 2
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
Conclusion
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS
DRUPAL GOVCON 2017 | THE PRINCIPLED DEVELOPER | GERARDO GONZALEZ | @FMIZZELL | @CIVICACTIONS