This is a test message to test the length of the message box.
Login
ABAP Tools Arbeiten mit Eclipse
Erstellt von Software-Heroes

ABAP Tools - Arbeiten mit Eclipse (Refactoring)

1076

Im heutigen Artikel geht es um das Arbeiten mit Eclipse und wie du effizient und schnell dein Refactoring am Quellcode durchführen kannst

Werbung


Ein gutes Entwicklungstool erkennt man unter anderem an der Geschwinidgkeit in der man neuen Quellcode umsetzen kann und wie weit dir das Tool beim Beschaffen von Informationen behilflich ist. Aber ebenso die Aussagekraft der Fehler und die Anbindung weiterer Plugins ist dabei sehr wichtig. 

Im heutigen Artikel wollen wir uns einmal die Umsetzungszeit etwas genauer anschauen und wie euch Eclipse dabei unterstützen kann.

 

Vorbereitung

Beim Refactoring geht es um die Anpassung von bestehendem Quellcode. Methoden verkleinern oder aufsplitten, Umbenennung von Variablen oder Methoden, alles gehört zum Refactoring von Quellcode. Dabei unterstützt dich Eclipse auf verschiedene Weisen.

Für unser Beispiel verwenden wir eine kleine Klasse mit der Implementierung des Classrun-Interfaces. Dieses Beispiel werden wir nun mit den verschiedenen Methoden des Refactoring bearbeiten.

CLASS zcl_bs_test_refactoring DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS zcl_bs_test_refactoring IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    DATA:
      ld_identifier TYPE zbs_test_data-identifier.

    ld_identifier = 'REFACTORING'.

    SELECT SINGLE *
      FROM zbs_test_data
      WHERE identifier = @ld_identifier
      INTO @DATA(ls_data).

    out->write( 'The found data:' ).
    out->write( ls_data ).
  ENDMETHOD.
ENDCLASS.

 

Methode extrahieren

Der SELECT soll in eine neue Methode ausgelagert werden, damit wir ihn auch an anderen Stellen verwenden können. Normalerweise ist es auch üblich die Datenbankzugriffe in ein separates Objekt auszulagern, in diesem Beispiel behalten wir alles in einer Klasse.

Markiere dazu den kompletten SELECT und drück STRG + 1 um die den Quick-Fix anzeigen zu lassen. Hier kannst du den Eintrag "Extract method" auswählen.

 

Nach der Auslagerung wird die neue Methode "new_method" angelegt und der Select befindet sich nun in der Methode. Wie du bestimmt festgestellt hast, wurden die entsprechenden Schnittstellen zur Methode automatisch aus dem Kontext generiert. Du kannst den Namen der Methode noch ändern oder einfach nur mit ENTER bestätigen. In diesem Fall passen wir noch den ausgetauschten Aufruf der Methode durch eine Inline Deklaration aus, da eine explizite Definition hier nicht benötigt wird.

" After refactoring 
DATA ls_data TYPE zbs_test_data.
ls_data = new_method( ld_identifier ).

" After adjustment
DATA(ls_data) = new_method( ld_identifier ).

 

Sichtbarkeit ändern

Eine Methode wird zusätzlich als öffentliche Methode benötigt, weil auch andere Klassen sie nutzen soll. Dazu musste du einfach auf die Methodendefinition gehen und kannst wieder über den Quick-Fix (STRG + 1) arbeiten. Über "Make new_method public" kannst du dann die Methode direkt als Public einstellen.

 

Umbenennen

Der Methodenname ist mittlerweile nicht mehr der Richtige für unsere Bedürfnisse, deshalb kannst du diesen sehr einfach Umbenennen, obwohl es jetzt schon mindestens drei Stellen für die Verwendung gibt. Dazu auf den Namen der Methode gehen, egal ob ein Aufruf oder bei der Definition, und über Quick-Fix oder direkt Umbenennen (SHIFT + ALT + R) das Rename Popup aufrufen.

 

Nach der Aktion wirst du feststellen, dass sich die Verwendung im Coding überall geändert hat. Das Umbenennen wird immer vollständig und konsistent umgesetzt, du brauchst also keine Angst zu haben, dass sich später der Code nicht mehr aktivieren lässt.

Hinweis: Wenn du Klasse oder Methoden auch in anderen Programmen verwendet werden, dann werden diese ebenfalls aktualisiert und geändert. Ihr solltet also aufpassen, damit ihr nicht zu viel auf einmal ändert. Die Aufzeichnung der geänderten Objekte erfolgt aber ganz Normal.

 

Konstanten anlegen

Wie dir sicherlich aufgefallen ist, scheinen wir im Quellcode noch eine Konstante zu haben. Damit diese nicht hartcodiert im Quelltext steht, werden wir diese als lokale Konstante in der Klasse anlegen. Dabei unterstützt dich wieder der Quick-Fix, wenn du den Cursor auf das Literal stellst.

 

Der neu angelegten Klassen-Konstante kannst du dann noch einen neuen Namen geben und zum Abschluss die Aktion mit ENTER bestätigen.

 

Textsymbole auslagern

Das Auslagern von Literalen in Textsymbole funktioniert ebenso einfach wie bei den Konstanten und mit dem Quick-Fix, hast du alle Möglichkeiten an der Hand.

 

Nach Auswahl kannst du noch einmal den Text ändern oder die Länge des Feldes einstellen, bevor du bestätigst und damit ein neues Textsymbol anlegst.

 

Endergebnis

Das finale Ergebnis nach dem Refactoring findest du hier. Im Code hat sich einiges getan und wir stellen nun eine öffentliche Methode zur Verfügung, die man mit der Klasse nutzen kann.

CLASS zcl_bs_test_refactoring DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

    METHODS select_test_data
      IMPORTING
        id_identifier  TYPE zbs_test_data-identifier
      RETURNING
        VALUE(rs_data) TYPE zbs_test_data.

  PROTECTED SECTION.
  PRIVATE SECTION.
    CONSTANTS c_main_identifier TYPE string VALUE 'REFACTORING' ##NO_TEXT.

ENDCLASS.



CLASS zcl_bs_test_refactoring IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    DATA:
      ld_identifier TYPE zbs_test_data-identifier.

    ld_identifier = c_main_identifier.

    DATA(ls_data) = select_test_data( ld_identifier ).

    out->write( TEXT-001 ).
    out->write( ls_data ).
  ENDMETHOD.

  METHOD select_test_data.
    SELECT SINGLE *
      FROM zbs_test_data
      WHERE identifier = @id_identifier
      INTO @rs_data .
  ENDMETHOD.
ENDCLASS.

 

Fazit

Mit fast keinem Aufwand haben wir das bestehende Coding umgebaut. Du siehst also, wie gut dich Eclipse dabei unterstützen kann, schnell und effizient dein bestehendes Coding anzupassen und zu verändern. Stell dir mal vor, du hättest all die Änderungen in SE24 machen sollen, wie viel mehr Zeit hättest du benötigt?


Enthaltene Themen:
ToolsADTEclipseRefactoring
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP Tools - Arbeiten mit Eclipse (Ablage)

Kategorie - ABAP

Wie kommst du an gelöschten Quellcode in den ABAP Development Tools, obwohl du diesen niemals transportiert hast? Mehr zur Ablage und Arbeitsweise von ADT.

29.10.2024

ABAP Tools - Arbeiten mit Eclipse (Mehrere Debugging-Sessions)

Kategorie - ABAP

Wie werden eigentlich mehrere Debugging-Sessions in den ABAP Development Tools in Eclipse verwaltet? Mehr Informationen hier.

08.10.2024

ABAP Tools - Arbeiten mit Eclipse (SAP GUI Sprache)

Kategorie - ABAP

Du hast die falsche SAP GUI Sprache, wenn du in den ABAP Development Tools die GUI startest? Hier findest du die Lösung.

10.09.2024

ABAP Tools - Arbeiten mit Eclipse (CDS Templates)

Kategorie - ABAP

Wieder das falsche CDS Template bei der Erstellung ausgewählt? Hier ein kleiner Tipp um nachträglich noch den View in ABAP zu korrigieren.

02.07.2024

ABAP Tools - Quick Actions und Highlighting (ABAP Unit)

Kategorie - ABAP

Mit dem letzten Release der ABAP Development Tools kamen für die ABAP Entwicklung die Quick Actions im Bereich ABAP Unit dazu, hier schauen wir sie uns etwas näher an.

18.06.2024