Verantwortungsvoller Umgang mit Software-Paketen

Verantwortungsvoller Umgang mit Software-Paketen

Talk auf der SymfonyLive am 04.05.2018

B4a545f01e8bfd1f41a12d3d4decfcae?s=128

Matthias Pigulla

May 04, 2018
Tweet

Transcript

  1. Verantwortungsvoller Umgang mit So ware-Paketen Ma hias Pigulla – webfactory.de

    SymfonyLive, 4. Mai 2018
  2. webfactory.de/uncle- bob-papers

  3. Release/Reuse Equivalency Principle (REP) The granule of reuse is the

    granule of release. Only components that are released through a tracking system can effectively be reused. This granule is the package. — Robert C. Martin
  4. Release macht Code zum Produkt

  5. Zeitliche Entkopplung

  6. Schni stelle, nicht Implementierung

  7. X.Y.Z 1.2.0, 2.17.47, ... semver.org

  8. ! . " .

  9. @trigger_error( 'Raider heißt jetzt Twix', E_USER_DEPRECATED );

  10. Schni stelle?

  11. Transitive Abhängigkeiten

  12. $client = $this->fetchAcmeApiClient(); try { $client->addToCart(...); } catch (\GuzzleHttp\Exception\GuzzleException $e)

    { ... }
  13. Strategisches Paketdesign

  14. Common Reuse Principle (CRP) The classes in a package are

    reused together. If you reuse one of the classes in a package, you reuse them all. — Robert C. Martin
  15. None
  16. Common Closure Principle (CCP) The classes in a package should

    be closed together against the same kinds of changes. A change that affects a package affects all classes in that package. — Robert C. Martin
  17. None
  18. Acyclic Dependencies Principle (ADP) The dependency structure between packages must

    be a directed acyclic graph (DAG). That is, there must be no cycles in the dependency structure. — Robert C. Martin
  19. None
  20. None
  21. None
  22. Tools!

  23. clue/graph-composer github.com/clue/graph-composer

  24. maglnet/ComposerRequireChecker github.com/maglnet/ComposerRequireChecker

  25. webfactory/baton github.com/webfactory/baton baton.test.webfactory.de

  26. ! "

  27. None