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

Refactoring - Eine kurze Geschichte des Scheiterns

ElmarDott
December 13, 2022

Refactoring - Eine kurze Geschichte des Scheiterns

Für mein kleines Open Source-Projekt TP-CORE, das Sie auf GitHub finden können, hatte ich die großartige Idee, die iText-Bibliothek für OpenPDF zu ersetzen. Nachdem ich einen Plan gemacht hatte, wie ich mein Ziel erreichen könnte, startete ich alle notwendigen Aktivitäten. Aber im wirklichen Leben sind die Dinge nie so einfach, wie wir es uns ursprünglich vorgestellt haben. In diesem Vortrag erfahren Sie was genau passiert ist. Ich spreche über meine Motivation, warum ich die Änderung wollte und wie mein Plan war, alle Aktivitäten zum Erfolg zu führen. Sie werden erfahren wie es war, als ich den Punkt erreichte bei dem mir klar wurde, dass ich so nicht zum Ziel gelange. Ich erkläre kurz, was ich getan habe, dass dieses kurze Abenteuer den Rest des Projekts nicht beeinflusst hat.
--------------------------------------------------------------------------------------------------
Homepage : https://elmar-dott.com
AnchorFM : https://anchor.fm/elmar-dott
Twitter - https://twitter.com/ElmarDott
GitHub - https://github.com/ElmarDott
Lbry - https://lbry.tv/@elmar.dott:8
BitChute - https://www.bitchute.com/channel/3IyCzKdX8IpO/
--------------------------------------------------------------------------------------------------

ElmarDott

December 13, 2022
Tweet

More Decks by ElmarDott

Other Decks in Programming

Transcript

  1. #ittage
    12. – 15.12.2022
    Titeltext
    Textebene 1
    Textebene 2
    Textebene 3
    Textebene 4
    Textebene 5
    Refactoring
    Marco Schulz
    Eine kurze Geschichte des Scheiterns

    View Slide

  2. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Con
    s
    u
    l
    t
    an
    t
    El
    ma
    r Do
    t
    t
    (M. Schulz) studierte an der HS Merseburg Diplominformatik und twittert
    regelmäßig über alle möglichen technischen Themen. Seine
    Schwerpunkte sind hauptsächlich Build und Konfiguration Management,
    Software Architekturen und Release Management.
    Seit über fünfzehn Jahren realisiert er in internationalen Projekten für
    namhafte Unternehmen umfangreiche Webapplikationen. Er ist freier
    Consultant / Trainer. Sein Wissen teilt er mit anderen Technikbegeisterten
    auf Konferenzen, wenn er nicht gerade wieder einmal an einem neuen
    Fachbeitrag schreibt. https://elmar-dott.com
    + Consultant + Writer + Speaker + Trainer +

    View Slide

  3. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Ag
    e
    nd
    a
    Motivation
    Vorbereitungen
    Umsetzung
    Wenn etwas schief läuft
    Durchatmen und dennoch am
    Ziel ankommen

    View Slide

  4. © 2021
    {j
    j
    DD 2021 : R
    e
    f
    a
    c
    t
    o
    r
    i
    ng D
    i
    s
    a
    s
    t
    e
    r
    s
    Wa
    s i
    s
    t R
    e
    f
    a
    c
    t
    o
    r
    i
    ng?
    „Refactoring ist eine Technik zur
    Umstrukturierung eines bestehenden
    Quelltextes, der die interne Struktur ändert,
    ohne das externes Verhalten zu ändern.“
    - Martin Fowler

    View Slide

  5. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    D
    i
    e Pr
    o
    b
    l
    e
    m
    s
    t
    e
    l
    l
    u
    ng
    Austauschen der PDF Bibliothek iText gegen OpenPDF
    Legacy notice!
    iText 5 is the previous major version of iText's leading PDF SDK.
    iText 5 has been EOL, and is no longer developed. Switch your
    project to iText 7, integrating the latest developments.
    https://kb.itextsupport.com/home/it5kb

    AGPL & poropertäre kommerzielle Lizenz für iText 7

    LibrePDF / OpenPdf ist unter Mozilla Public License Version 2.0
    verfügbar

    OpenPDF ist ein fork von iText5

    View Slide

  6. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Nüt
    z
    l
    i
    c
    h
    e En
    twu
    r
    f
    s
    m
    u
    s
    t
    e
    r
    Adaptor: Auch bekannt als Wrapper, koppelt eine Schnittstelle
    zu einer anderen, die nicht kompatibel sind.
    Facade: bündelt mehrere Schnittstellen zu einer vereinfachten
    Schnittstelle.
    Proxy: ist eine Verallgemeinerung einer komplexen
    Schnittstelle. Es kann als Komplement zur Fassade verstanden
    werden, die mehrere Schnittstellen zu einer Einzigen
    zusammenfasst.

    View Slide

  7. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Nam
    e
    n
    s
    k
    onv
    e
    n
    t
    i
    on
    IPdfRenderer renderer = new PdfRendererImpl();
    VS.
    PdfRenderer renderer = new ITextRenderer();
    PdfRenderer renderer = new OpenPdfRenderer();

    View Slide

  8. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y

    Java 17 library

    Release 3.0.0

    Maven Build

    published on MVN
    Central
    Ar
    c
    h
    i
    t
    e
    k
    t
    u
    r
    https://github.com/ElmarDott/TP-CORE

    View Slide

  9. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Re
    l
    e
    a
    s
    e Man
    a
    g
    e
    m
    e
    n
    t

    Branch 2.2 iText &
    OpenPDF paralell

    Branch 3.0 iText
    Implemmetierung
    wurde entfernt

    View Slide

  10. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Fa
    l
    l
    s
    t
    r
    i
    c
    k
    e
    import com.lowagie.text.pdf.PdfReader;
    Import com.itextpdf.text.pdf.PdfReader;
    Erstens kommt es anders und zweitens als man denkt.

    View Slide

  11. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Me
    t
    h
    od
    e
    n üb
    e
    r
    l
    ad
    e
    n
    void writeDocument(com.itextpdf.text.pdf.PdfReader pdf, String destination);
    void writeDocument(PdfReader pdf, String destination);
    @deprecated
    com.itextpdf.text.pdf.PdfReader readDocument(File pdfDocument);
    PdfReader loadDocument(File pdfDocument);

    View Slide

  12. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Le
    s
    s
    on
    s L
    e
    a
    rnd
    „Never touch a runnig system!“
    (N)OR
    „Never run a touched system!“

    View Slide

  13. © 2021
    {j
    j
    DD 2021 : R
    e
    f
    a
    c
    t
    o
    r
    i
    ng D
    i
    s
    a
    s
    t
    e
    r
    s
    Re
    s
    ou
    r
    c
    e
    s
    [1] Marco Schulz, 2021, Continuous Integration mit Jenkins,
    Rheinwerk, ISBN: ISBN 978-3-8362-7834-8
    https://www.rheinwerk-verlag.de/continuous-integration-mit-
    jenkins/
    [2] https://www.refactoring.com
    [3] https://github.com/ElmarDott/TP-CORE
    [4] https://itextpdf.com/en
    [5] https://github.com/LibrePDF/OpenPDF
    [6] OpenPDF tutorial: https://www.netjstech.com/2021/02/html-
    to-pdf-java-flying-saucer-openpdf.html

    View Slide

  14. © 2022
    Man
    a
    g
    e
    m
    e
    n
    t Summ
    e
    r
    y
    Cr
    e
    d
    e
    n
    t
    i
    a
    l
    s
    ---------------------------------------------------------
    Homepage : https://elmar-dott.com
    GitHub : https://github.com/ElmarDott
    AnchorFM : https://anchor.fm/elmar-dott
    Twitter : https://twitter.com/ElmarDott
    Speaker Deck : https://speakerdeck.com/elmardott
    Lbry : https://lbry.tv/@elmar.dott:8
    BitChute : https://www.bitchute.com/channel/3IyCzKdX8IpO/
    ---------------------------------------------------------
    Danke / thank you / Gracias

    View Slide

  15. View Slide