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

A Therapy Session About Names

A Therapy Session About Names

Presented together with Simon Harrer (https://speakerdeck.com/simonharrer) at Developer Week 2019 in Nuremberg.

Bfe94b86a34d474ebaf6c0699bf08ec5?s=128

Ben Wolf

June 26, 2019
Tweet

Transcript

  1. Albträume bewältigen
 Eine Therapiesitzung zu Namen Simon Harrer @simonharrer Benjamin

    Wolf @ichaos1985 Photo by MindBodyStock on Unsplash
  2. „Lasst uns mehr über Probleme reden!“ DR. SIMON HARRER Senior

    Consultant bei INNOQ Deutschland GmbH Simon arbeitet beim Kunden in einem Remote Mob. Aus seinen Erfahrungen von über 6 Jahren Java Lehre an der Uni hat er ein Buch geschrieben.
  3. „Guter Code liest sich wie ein gutes Buch.“ BENJAMIN WOLF

    Senior Consultant bei INNOQ Deutschland GmbH Ben Wolf ist Architekt und Entwickler bei INNOQ. Er erträgt unsauberen Code nur schwer und scheut nicht vor umfangreichen Refactorings zurück.
  4. Photo by Pelly Benassi on Unsplash

  5. Therapiesitzung beginnt nun Photo by MindBodyStock on Unsplash

  6. 6 Disclaimer Wir stellen keine Diagnosen und geben keine Heilversprechen!

    Unser Vortrag dient der Verbesserung Deiner Softwarequalität. Es richtet sich an Personen die ihr Codepotential entfalten und ihren Wissensschatz erweitern möchten. Jede von uns gecoachte Person übernimmt die volle Verantwortung für den Umgang mit den ihr überlassenen Informationen. Bei bestehenden oder akuten Problemen empfehlen wir Dir den Consultant, Architekt oder Agile Coach Deines Vertrauens zu konsultieren und ggf. Rücksprache zu halten.
  7. Namen im Code Photo by Luca Bravo on Unsplash

  8. private int a; private int b; private int c;

  9. ActReqInter4ProcUp(string haMesCo)
 { 
 …

  10. ReadThisFromFileIfRequiredOrDoNotReadAndChangeOrder (false);

  11. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo)
  12. If Not disable_ssl = false Then

  13. if (microscope.isInorganic(sample)) { return Result.INORGANIC; } else { return analyzeOrganic(sample);

    }
  14. Die Therapie Photo by MindBodyStock on Unsplash

  15. ActReqInter4ProcUp(string haMesCo)
 { 
 ...

  16. ActivateReqInter4ProcUp(string haMesCo)
 { 
 ...

  17. ActivateRequiredInter4ProcUp(string haMesCo)
 { 
 ...

  18. ActivateRequiredInterface4ProcUp(string haMesCo)
 { 
 ...

  19. ActivateRequiredInterfaceForProcUp(string haMesCo)
 { 
 ...

  20. ActivateRequiredInterfaceForProcessUp(string haMesCo)
 { 
 ...

  21. ActivateRequiredInterfaceForProcessUpdate(string haMesCo)
 { 
 ...

  22. ActivateRequiredInterfaceForProcessUpdate(string hashedMesCo)
 { 
 ...

  23. ActivateRequiredInterfaceForProcessUpdate(string hashedMessageCo)
 { 
 ...

  24. ActivateRequiredInterfaceForProcessUpdate(string hashedMessageContent)
 { 
 ...

  25. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) {
  26. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) {
  27. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) {
  28. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) { engine;
  29. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) { engine;
  30. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) { engine;
  31. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) { engine;
  32. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) { engine;
  33. class MainSpaceShipManager { AbstractRocketPropulsionEngine
 abstractRocketPropulsionEngine; 
 INavigationController navigationController; boolean turboEnabledFlag;

    void navigateSpaceShipTo(PlanetInfo planetInfo) { engine;
  34. class SpaceShip { Engine engine; Navigation navigation; boolean turboEnabled; void

    navigateTo(Planet planet) {
  35. If Not disable_ssl = false Then

  36. If Not disable_ssl = false Then

  37. if (microscope.isInorganic(sample)) { return Result.INORGANIC; } else { return analyzeOrganic(sample);

    }
  38. if (microscope.isOrganic(sample)) { return analyzeOrganic(sample); } else { return Result.INORGANIC;

    }
  39. Namen werden viel öfter gelesen, als dass sie geschrieben werden.

    Wählt eure Namen so, dass Leute sie lesen wollen.
  40. Albträume bewältigt Photo by Rebecca Hobbs on Unsplash

  41. Namen in der Domäne Photo by Brooke Cagle on Unsplash

  42. Synonyme

  43. 33 Photo by Gianfranco Lanzio on Unsplash Prozess Modell Vorgehen

  44. 34 Photo by Gianfranco Lanzio on Unsplash Artikel Produkt Modell

  45. Homonyme

  46. 36 Photo by Gianfranco Lanzio on Unsplash Prozess Auftrag

  47. 37 Photo by Gianfranco Lanzio on Unsplash Modell Modell Modell

  48. Denglisch

  49. ! orderNumber " Bestellnummer


  50. ! wageAndTaxStatement " Lohnsteuerbescheinigung


  51. Die Therapie Photo by MindBodyStock on Unsplash

  52. Glossar

  53. Ein Glossar (lat. Glossarium, gr. γλωσσάριον glōssarion) ist eine Liste

    von Wörtern mit beigefügten Erklärungen oder Übersetzungen.
  54. Photo by Anastasia Zhenina on Unsplash

  55. Kunde Name Adresse Bezahlweise Registrierung Kunde Sessions Essenspräferenz Event-Mangement Kunde

    Name Job Firma Badge-Erstellung
  56. Kunde Name Adresse Bezahlweise Registrierung Kunde Sessions Essenspräferenz Event-Mangement Kunde

    Name Job Firma Badge-Erstellung
  57. Ubiquitous Language pro Bounded Context Alle Begriffe, die wirklich verwendet

    werden. Glossar
  58. UL – Wie finden? 47 Photo by Gianfranco Lanzio on

    Unsplash
  59. Reden! Photo by You X Ventures on Unsplash

  60. Event Storming 49

  61. ⛔ Übersetzen verboten! " Bestellnummer " Lohnsteuerbescheinigung

  62. Bestellnummer noun 1. order code
 2. catalogue number
 3. order

    number
  63. Lohnsteuerbescheinigung noun 1. wage and tax statement
 2. W-2

  64. ⛔ Übersetzen verboten! " Gutschein abgelaufen " Gutschein ungültig

  65. Albträume bewältigt Photo by Diana Parkhouse on Unsplash

  66. Namen von Menschen Photo by Benny Jackson on Unsplash

  67. Encoding

  68. Encoding Jan Stępień Jörg Pilawa 揲ג熫

  69. None
  70. Stępień

  71. Stępień St##pie## St?pie? St pie

  72. Encoding Jorg Pilawa ??? Jan St pie

  73. Dein Name ist ungültig! $

  74. https://twitter.com/BernhardDick/status/996338175713923072

  75. Dein Name ist ungültig! https://www.wired.com/2015/11/null/

  76. Dein Name ist ungültig! John Graham-Cumming Christopher Null „Ihr Name

    ist zu lang.“ „Ihr Name enthält unerlaubte Zeichen: 揲ג熫“ https://www.wired.com/2015/11/null/
  77. Hallo, Tim Apple!

  78. None
  79. public String parse(String fullName) { String[] components = fullName.split("[,| ]");

    if (components == null || components.length < 2) { return fullName; } if (fullName.contains(",")) { return components[0]; } else { return components[components.length - 1]; } }
  80. Name Erwartet Berechnet Korrekt? Neil Alden Armstrong ARMSTRONG ARMSTRONG ✅

    Edwin Eugene Aldrin, Jr. ALDRIN EDWIN ❌ 揲ג熫 揲 揲ג熫 ❌
  81. Hallo, mein Name ist … - Frau Dr. Angela Merkel

    - Personen ohne Nachname - etc. pp., sucht es euch aus.
  82. Die Therapie Photo by MindBodyStock on Unsplash

  83. UTF-8 überall.

  84. UTF-8 überall. Persistenz Anwendung Ausgabe Eingabe Erkennen 
 & konvertieren

  85. Ein eigenes Feld für die Begrüßung.

  86. Ein eigenes Feld für die Begrüßung. Nicht das Feld Vorname

    oder Nachname missbrauchen. Lasst den Nutzer entscheiden, 
 wie er vom System begrüßt werden möchte.
  87. Ein Feld für den Namen.

  88. Ein Feld für den Namen. Kein Feld für Zweitnamen Keine

    Vorname und Nachname Felder Kein Feld für den Titel
  89. Keine Namensvalidierung.

  90. Keine Namensvalidierung. Keine Schimpfwortliste Keine Längenbeschränkungen Keine Regex Na gut.

    Ein isBlank check ist OK.
  91. Trefft keine Annahmen über Namen. Nie. Und falls doch, gibt

    es eine einfache Eigentherapie. Lest euch die folgende 40-Punkte-Liste durch: h t t p s : // w w w . k a l z u m e u s . c o m / 2 0 1 0 / 0 6 / 1 7/ f a l s e h o o d s - p r o g r a m m e r s - b e l i e v e - a b o u t - n a m e s /
  92. Albträume bewältigt Photo by Kate Stone Matheson on Unsplash

  93. Therapiesitzung ist zu Ende Photo by MindBodyStock on Unsplash

  94. gesponsort von java.by-comparison.com

  95. 1. Namen werden viel öfter gelesen, als dass sie geschrieben

    werden.
  96. 2. Sprecht miteinander. Sprecht mit eurem Fachbereich.

  97. 3. Trefft keine Annahmen über Namen. Nie.

  98. Source: https://xkcd.com/327/

  99. Albträume bewältigt
 Nach einer erfolgreiche Therapiesitzung zu Namen wieder friedlich

    träumen. Simon Harrer @simonharrer Benjamin Wolf @ichaos1985 Photo by Jordan Whitt on Unsplash