Code formatieren mit clang-format

Wir bei Ubique verwenden zur Formatierung von C/C++/Objective-C Code *clang-format*.

Marco Zimmermann Marco Zimmermann    Datum 17.11.2014
Code formatieren mit clang-format

Wir bei Ubique verwenden zur Formatierung von C/C++/Objective-C Code clang-format. clang-format ist ein Tool der clang-Entwickler von Google, welches Code automatisch formattiert. Es lässt sich mit einer style-Datei relativ gut einstellen, so dass der Code nach unseren Vorstellungen und Richtlinien automatisch formatiert wird. Codeformatierung ist unter Informatikern ein heikles Thema, bei dem es innerhalb von Firmen auch gerne mal zu «Religionskriegen» kommt. So geht es in Code Reviews um Fragen wie «Kommt jetzt die Klammer nach der for-Schleife auf die nächste Zeile oder nicht» oder wie wird Code korrekt eingerückt. Als Folge werden Regeln aufgestellt, an die man sich strikt zu halten hat.

Dank clang-format ist es bei Ubique gar nicht mehr möglich Code zu schreiben, der nicht nach unseren Richtlinien formatiert ist. Klar gab es auch bei uns einige Diskussionen bei der Erstellung der style-Datei, aber wir haben uns dafür entschieden clang-format so einzustellen, dass der Code möglichst leserlich formatiert wird. Eine leserliche Formatierung ist wichtig, weil eine Zeile Code nur einmal geschrieben, aber einige Male gelesen wird.

Hier ein einfaches Code-Beispiel, das mit clang-format formatiert wird:



// Code vor der Formatierung mit clang-format
for(TileView *view in [self userTileViews]) {
    if(CGRectContainsPoint(view.frame, point)) { return view;
}}

// Code nach der Formatierung mit clang-format
for(TileView *view in [self userTileViews])
{
    if(CGRectContainsPoint(view.frame, point))
    {
        return view;
    }
}

Mit clang-format sparen wir ausserdem sehr viel Zeit, weil wir Code nicht von Hand formatieren müssen. Und auch wenn clang-format nicht jede Zeile Code perfekt formatiert und sich noch nicht bis ins letzte Detail auf unsere Bedürfnisse einstellen lässt, so ist es ein Tool, das wir jedem iOS-Entwickler empfehlen können. Und hat man einmal damit gearbeitet, will man nie mehr zurück.

Mehr Informationen über clang-format sowie das von Travis Jeffery erstellte Xcode-Plugin gibt es hier:

clang-format

clang-format Xcode Plugin