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)

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)
Werbung

ABAP Tools - Arbeiten mit Eclipse (Transport)

Kategorie - ABAP

In diesem Artikel gehen wir auf die Arbeit mit Transporten innerhalb von Eclipse ein und zeigen dir die bisherigen Möglichkeiten des Tools, dich zu unterstützen.

12.03.2021

ABAP Tools - Arbeiten mit Eclipse (Datenanalyse)

Kategorie - ABAP

Hier geht es um die Analyse von Tabellendaten im System und die Verwendung der SQL Console in den ABAP Development Tools.

21.08.2020

ABAP Tools - Arbeiten mit Eclipse (Debugging)

Kategorie - ABAP

Debuggen in Eclipse? Wir zeigen dir was zu beachten ist und wie du am schnellsten den Umstieg schaffst, um genau so effizient wie in der GUI zu werden.

07.08.2020

ABAP Tools - Arbeiten mit Eclipse (Suche)

Kategorie - ABAP

In dieser kleinen Serie wollen wir dir das Arbeiten mit Eclipse etwas näher bringen und die Vorteile für die Schnelligkeit bei der Entwicklung zeigen.

10.07.2020

ABAP Tools - Warum zu ADT wechseln?

Kategorie - ABAP

Warum solltest du am besten schon Heute zu den ABAP Development Tools wechseln? Das wollen wir dir in diesem Artikel etwas näher bringen.

03.07.2020