Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Co se PHP programátor může naučit od Javy?

Co se PHP programátor může naučit od Javy?

07ac3a80e69a6252140feb81b89cbb08?s=128

Filip Procházka

October 28, 2017
Tweet

Transcript

  1. Co se PHP programátor může naučit od Javy? @ProchazkaFilip

  2. Návrhové vzory jsou super • Decorator • Strategy • Visitor

    • Builder • Factory • BuilderFactory ❤ • FactoryBuilderFactory ❤❤ • BuilderFactoryBuilderFactory ❤❤❤
  3. None
  4. “Patterns always have two parts: the how and the when.

    Not just do you need to know how to implement them, you also have to know when to use them and when to leave them alone.” ~ Martin Fowler
  5. • Premature abstraction • Premature optimalization • … • Nejprve

    “nahrubo” • Dodržovat základní pravidla • Po pochopení refaktoring YAGNI
  6. Don’t reinvent the wheel: Hotová řešení • Frameworky ◦ Spring

    vs Nette vs Symfony • Knihovny ◦ Hibernate vs Doctrine • Články • Nástroje • ….
  7. Don’t reinvent the wheel: Standardy • JSR 354: Money and

    Currency API ◦ https://github.com/brick/money • JSR 310: Date and Time API ◦ https://github.com/brick/date-time
  8. Compile-time • Kompilace je spása ◦ Chvilku trvá... ◦ Nenahrazuje

    testy! • PHPStan https://xkcd.com/303/
  9. (silné) Typy!

  10. Silné typy: array • Std lib + Generika ◦ Map<LocalDate,

    List<LocalTime>> ◦ LinkedList vs ArrayList ◦ HashMap vs TreeMap • PHPDoc ◦ Příklady v PHPStan testech /** @var Collection|Dolor[] */ private $dolors;
  11. Silné typy: string • Musí být typehint string? • Nešlo

    by to lépe?
  12. Value objects • VO vs Entity • Hodnota vs identita

  13. Value objects • PHP nemá Time ani Date, má Datetime

    ◦ Můžu si napsat vlastní ◦ Nebo můžu použít Brick! :) • EmailAddress • PhoneNumber • Url (Nette) • DateRange, TimeRange, NumberRange • PostalAddress ◦ Může a nemusí být VO
  14. Value objects: vlastnosti • Rovnost ◦ == vs === vs

    equals() • Validita • Immutabilita • VO != DTO
  15. Shrnutí • Návrhové vzory jsou super • Don’t reinvent the

    wheel • Silné typy • Value objects
  16. @ProchazkaFilip