Dokumentation

Werbung
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/
Herunterladen