Refactoring der Sourcecodes von Jamus Bearbeiter: Mathias Brodala, Matthias Polz Motivation Der augenscheinlich über jahrelange Beiträge verschiedenster Autoren stetig zunehmend unlesbare Quellcode erschwerte die Wartung, Korrektur und Erweiterung des selbigen. Um diese Faktoren auch in Zukunft gewährleisten zu können, war ein Refactoring unausweichlich. Dadurch sollte vor allem die Codelesbarkeit und -verständlichkeit stark aufgewertet werden. Ein intuitives Arbeiten im Umgang mit dem Code des Projekts Jamus sollte hierdurch gesichert werden. Durchführung Zu Beginn wurde eine Analyse der bestehenden Werkzeuge zur beschleunigten Bereinigung von JavaQuellcode durchgeführt. Hierdurch fiel die Wahl auf das Werkzeug uncrustify sowie die dafür geeignete Benutzeroberfläche universalindentgui. Die durch das Werkzeug uncrustify sehr umfangreich zur Verfügung gestellten Optionen wurden passend festgelegt, um die Codekonventionen für die JavaProgrammiersprache1 so gut wie möglich zu erreichen. Nach dieser ersten Stufe der Codebereinigung folgte nun die zweite Stufe, in welcher verschiedenste Bezeichner von Variablen, Methoden und Klassen ihrem Kontext und Verwendungszweck gemäß benannt werden sollten. Nach anfänglichen Versuchen, dies auf manuelle Art und Weise durchzuführen, erwies es sich als wesentlich effektiver, zeitsparender und weniger fehlerträchtig, auch diesen Vorgang so weit wie möglich zu automatisieren. Unter anderem unter Nutzung des Kommandozeilenwerkzeuges sed wurde dies schließlich zufrieden stellend verwirklicht. Der Quellcode des genutzten Scriptes lautet wie folgt: #!/bin/bash directory="." filename="*.java" while true; do read -p "From To: " -a R if [ -n "$1" ]; then if [ -f "$1" ]; then directory="$(dirname $1)" filename="$(basename $1)" elif [ -d "$1" ]; then directory="$1" fi fi find ${directory} -name "${filename}" -exec \ sed -i "s/\([^0-9A-Za-z]\)${R[0]}\([ .,;()[\r\n+-]\)/\1${R[1]}\2/g" {} + echo "${R[0]} ${R[1]}" >> "${0}.log" echo "-----Replaced----" done Mit dieser Logik war sicher gestellt, dass wirklich nur alleinstehende Bezeichner korrigiert wurden. In Folge dieses Automatismus’ mussten jedoch wiederum vielerorts manuelle Korrekturen vorgenommen werden. Aussicht Zukünftige Codebeiträge zum Projekt Jamus sollten sich an die bereits erwähnten Codekonventionen halten, so dass auch in Zukunft eine hohe Codequalität gewährleistet ist. Vor Beginn von Arbeiten sollten den potentiellen Autoren diese nahegelegt und erklärt werden. 1 http://java.sun.com/docs/codeconv/