3

English

In code development, a commonly used term when talking about the process of re-reading your code and fixing redundant lines, duplicate code snippets etc. is refactoring [your code].
Now I’m wondering: Is there a German equivalent? The only thing I found online or could think of is überarbeiten, but it just doesn’t feel quite right.
Does anybody have another suggestion how to translate refactoring?

German

In der Softwareentwicklung gibt es den Prozess des Refactorings, bei dem man bestehenden Code erneut durchgeht, um Duplikate, überflüssige Zeilen oder suboptimale Implementierungen zu finden und zu verbessern.
Was ich mich frage, ist: Welches deutsche Wort wäre das passendste Gegenstück zum englischen refactoring? Das Einzige, was mir eingefallen ist oder was ich online gefunden habe, ist überarbeiten, was sich aber irgendwie nicht ganz richtig anfühlt. Hat jemand eine Idee, was noch eine mögliche Übersetzung wäre?

  • 8
    Softwarewartung, Strukturverbesserung oder Umgestaltung. Aber warum soll ein deutscher Begriff verwendet werden? Kann "refactoring" nicht als Fachbegriff gesehen werden, dessen Bedeutung bekannt ist? – IQV Aug 28 '17 at 12:55
  • 3
    @IQV Würde ich Refactoring direkt benutzen, ja. Da ich aber sagen möchte, dass Code "refactored" werden soll, sieht das ziemlich - mit Verlaub - beschissen aus, in einem deutschen Satz ein englisches Wort zu konjugieren. (Konkreter Fall: "Zu diesem Zweck sollen Tests refactored werden") – PixelMaster Aug 28 '17 at 14:03
5

Ein einheitlicher deutschen Begriff für Refactoring ist mir nicht geläufig. Meistens wird einfach der englische Begriff verwendet. Um die Konjugationsprobleme bei »to refactor« kannst du dich im Prinzip mit einer Substantivkonstruktionen herumwinden.

Die Tests sollen refactored werden.

Für die Tests ist ein Refactoring vorgesehen.
Bei den Tests soll ein Refactoring durchgeführt werden.

Ist zwar oft auch nicht das Gelbe vom Ei, aber meistens besser als das englische Verb in die deutsche Grammatik zu quetschen.

Am besten trifft es im Deutschen meiner Meinung nach Restrukturierung. In seiner eigentlichen Bedeutung ist Refactoring ein Umbau des Quellcodes, ohne dass sich dabei das Verhalten des Programms ändert. D.h. es wird die Struktur des Codes verändert. Das gilt sowohl auf der großen Architekturebene als auch, wenn du eine einzelne Funktion »refactorst«. Dabei änderst du deren interne Struktur, aber nicht ihr von außen sichtbares Verhalten. Das passt genau in die Definition. Performance zähle ich nicht zum Verhalten, denn das ändert nur die Geschwindigkeit, in der das Programm etwas tut, nicht aber was es tut.

Warum mir einige andere Kandidaten weniger gut gefallen:

  • Refaktorierung/Refaktorisierung: Wirkt wie zwanghaft zu übersetzen versucht und mittendrin gescheitert.
  • Überarbeitung, Umbau und ähnliches: Zu breit. Die Begriffe können ohne Weiteres auch funktionale Änderungen abdecken.
  • Optimierung: Nicht passend genug, da das Wort i.d.R. als Kurzform für Performance-Optimierung gebraucht wird. Bessere Performance kann zwar das Ziel eines Refactorings sein, aber ist halt nicht darauf beschränkt.

Egal welchen deutschen Begriff zu verwendest, du solltest ihn auf jeden Fall mit dem englischen Begriff in Verbindung setzen. Z.B. am Kapitelanfang mit einem Satz wie:

Im folgenden Kapitel wird die Restrukturierung (Refactoring) der Tests besprochen.

  • 3
    "refactored" sieht nicht schön aus: Im Deutschen endet ein Partizip Perfekt nie auf "-d". Wenn man englische Verben in's Deutsche importiert, dann werden sie auch nach deutschen Regeln konjugiert. Also entweder Infinitiv "refactorn", "ich refactor(e)", "du refactorst", usw., das gäbe dann das Partizip "refactort", oder Infinitiv "refa(c|k)torieren", "ich refa(c|k)torier(e)", "du refa(c|k)torierst", usw., das gäbe dann das Partizip "refa(c|k)toriert". – Uwe Aug 28 '17 at 20:37
4

Wikipedia nennt Refaktorisierung, Refaktorierung und Restrukturierung (meiner Einschätzung nach mit ansteigender Qualität).

Überarbeitung ist zu vieldeutig, da jede Modifikation, also auch eine funktionale Erweiterung, darunter fällt. Trotz etwas höherer Präzision gilt das auch für Code-Optimierung, die auch Änderungen zum Zweck höherer Effizienz oder geringeren Speicherverbrauchs umfasst.

Und da hast schon wegen Flexion und Genus recht, nach einem deutschen Gegenstück zu suchen. Die einzige Frage, die man sich bei hoher Dichte von englischen Fachtermini stellen kann, ist, ob man mit einem komplett englischen Text nicht besser fährt. Das hängt aber im Wesentlichen von Zielpublikum ab.

  • Wie würdest du die ersten beiden Begriffe konjugieren? Restrukturierung trifft es meiner Meinung nach nur teilweise, da ja nicht nur die Struktur geändert wird, sondern potentiell auch schlecht geschriebene (z.B. mit Blick auf Performance) Methoden umgeschrieben werden. Im konkreten Fall möchte ich sagen, dass "Tests refactored werden" sollen. An dieser Stelle dann "refaktorieren" zu sagen hört sich aber wirklich nicht gut an :D Ein englischer Text wäre an sich zwar auch möglich, ich würde meine Projektarbeit aber soweit möglich gerne auf Deutsch schreiben. – PixelMaster Aug 28 '17 at 14:09
  • 1
    @PixelMaster "Tests werden umstrukturiert." – user unknown Aug 28 '17 at 19:40
  • klar, das geht. Ich will ja aber nicht umstrukturieren oder restrukturieren benutzen, weil das meiner Meinung nicht ganz passt. – PixelMaster Aug 29 '17 at 8:59
  • Refactoring ist bisweilen das genaue Gegenteil von "Codeoptimierung", wenn es z.B. darum geht, Funktionen zu einer Library zu generalisieren oder Code wartbarer zu machen. – tofro Aug 29 '17 at 20:45
3

Refaktorieren als eingedeutschtes "to refactor" scheint durchaus ein sich einbürgerndes Verb zu sein. Eine Google-Suche mit

refaktorieren -refactoring

kommt auf eine erkleckliche Anzahl von Ergebnissen, die meisten aus der anerkannten Fachliteratur. Die eingedeutschten Versionen vieler IDEs verwenden das Verb ebenfalls.

Duden und andere Wörterbücher scheinen das Verb (noch?) nicht zu kennen, ich finde das Wort aber sinnvoll. überarbeiten ist nicht unbedingt deckungsgleich, bzw. mir zu allgemein.

Eine ausgesprochen nette Definition dafür, die zu einem gewissen Mass auch erklärt, warum überarbeiten und umstrukturieren nicht so richtig passen wollen, habe ich auch gefunden:

Refaktorieren ist die Kunst, mit viel Aufwand im Nachhinein das Gleiche zu haben wie vorher.

  • Und inwiefern passt "Umstrukturieren" nicht in den letzten Satz? – user unknown Aug 28 '17 at 19:43
  • @userunknown Weil "umstrukturieren" Code nicht besser macht, sondern nur anders. Refactoring ist schon ein bißchen mehr. – tofro Aug 28 '17 at 21:10
  • 2
    Wieso sollte man Code umstrukturieren? Doch nicht ohne Absicht. Wieso sollte das mit Refactoring besser funktionieren? Oder inwiefern ist der Erfolg des Refactorings in den Begriff eingeschrieben? Wenn sich rausstellt, dass die erwünschten Ziele nicht erreicht wurden, würdest Du dann retrospektiv die Tätigkeit umbenennen? – user unknown Aug 29 '17 at 0:09
  • 1
    Ich habe stark den Eindruck, dass die Diskussionsteilnehmer unterschiedliche Vorstellungen davon haben, was refactoring bedeutet. (Einen Algorithmus zu ersetzen, fällt m. E. nicht darunter). Die englische Hülse verschleiert das, aber beim Versuch, eine Übersetzung zu finden, fällt es auf. Ich sehe dann keine andere Chance, als eine eigene Begriffsdefinition vorzunehmen, sei es im Glossar oder einem einleitenden Abschnitt. Die konsensfähige Übersetzung in einem einzigen Wort ist bei den hier geäußerten Präzisionsansprüchen illusorisch - ganz unabhängig von der Zielsprache. – guidot Aug 29 '17 at 10:01
  • 2
    Es wäre schön, wenn auch die nicht so sehr mit IT vertrauten Diskussionsteilnehmer zur Kenntnis nähmen, dass refactoring und to refactor stehende Begriffe in der Softwareentwicklung sind und eine Diskussion, was man sonst so noch zu der Tätigkeit sagen könnte, an sich müßig ist. Auf English heißt das Vorgehen nunmal refactoring und nicht restructuring oder reworking. Von daher ist es sinnvoll, sich auch im Deutschen von diesen Begriffen abzugrenzen. – tofro Aug 29 '17 at 18:46
-1

Einmal ohne Rücksicht darauf, dass die Gemeinschaft der Programmierer mit dem Wort refactoring offenbar zufrieden ist (siehe die Kommentare) und gar keinen anderen Ausdruck dafür im Deutschen braucht bzw. diesen dann unzureichend findet, weil jedes andere Wort den Kern des refactoring misse:

Man sollte meinen, gute Ausdrücke dafür im Deutschen wären

den Code glätten

die Macken (aus dem Code) ausbügeln

am Code feilen

den Code zurechthobeln

den Code schleifen

All dies kommt ersichtlich aus den verschiedenen Sparten des Bauhandwerks, wo man oft auch erst mal was grob hinbaut (eine Wand) und dann verfeinert z.B. durch einen Glattstrich auf dem Unterputz. Ach:

den Code verfeinern

den Code ausputzen

geht natürlich auch.

Ich wüsste nicht, dass diese Begriffe in Programmiererkreisen real verwendet werden (in der Regel neigt man dort ja doch dazu, allerlei englische Begriffe einzusetzen oder zu adaptieren), aber sie hätten es verdient, denn sie drücken genau das aus, was refactoring offenbar meint: den Code im Detail zu verbessern, zu vereinfachen, klarer zu machen, ohne seine großen Züge zu verändern.

  • 4
    Dem widerspreche ich. Macken ausbügeln ist Bughunting. Feilen, zurechthobeln, schleifen und glätten drücken alle nicht die strukturellen Umgestaltungen aus, die für Refactoring typisch sind, auch wenn diese Tätigkeiten dabei eine Rolle spielen. – user unknown Aug 29 '17 at 16:05
  • 1
    @userunknown - Der Fragesteller das Refactoring selbst definiert als: "... den Prozess [...], bei dem man bestehenden Code erneut durchgeht, um Duplikate, überflüssige Zeilen oder suboptimale Implementierungen zu finden und zu verbessern." All diese Dinge können meines Erachtens durchaus als Schleifen, Bügeln, Feilen etc. umschrieben werden. Und selbst wenn man anderen Definitionen von Refactoring folgt wie etwa "Code refactoring is the process of restructuring existing computer code without changing its external behavior" sollten die Begriffe aus dem Bauhandwerk eigentlich noch passen. – Christian Geiselmann Aug 30 '17 at 9:28
  • 1
    Das Problem mit der Bau-Metaphorik ist, dass Schleifen/Bügeln/Feilen ein Objekt äußerlich umgestalten - Refactoring drückt jedoch das genaue Gegenteil aus, nämlich eine innerliche Veränderung. Was aus dem Baugewerbe evtl. besser passen würde, wäre die "(Kern-)Sanierung". Hab ich so allerdings auch noch nie gehört. – Annatar Aug 30 '17 at 12:29
  • "Sanierung" impliziert vermutlich zu viel, dass irgendetwas "ungesund" ist und deshalb "repariert" werden soll, was beim Refactoring nicht unbedingt der Fall sein muss. – Annatar Aug 30 '17 at 12:36
  • 1
    @Annatar. - Ich verstehe deinen Einwand, aber da ich selber grade mit einer umfangreichen Wohnungsrenovierung und Dacherneuerung befassst war, habe ich einen etwas anderen Blick darauf: Wir haben da durchaus auch an Stellen gefeilt, geschliffen und gespachtelt, die "innerlich" sind (d.h. die später nie wieder jemand sehen wird, und sei es das Auftragen von Reparaturzement auf ausgebröckelte Stellen von Stahlbetonträgern). – Christian Geiselmann Aug 30 '17 at 14:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.