Empfehlung zum Coding Style und Coding Conventions

1

Mit rund 20 Teilnehmern - deutlich mehr als wir erwartet hatten - haben sich viele Mitglieder der Contao Community die Köpfe rund um das Thema Coding Style und Coding Convention eingeschlagen. Unter anderem haben aus der Arbeitsgruppe Core-Entwicklung Leo "leofeyer" Feyer, Andreas "aschempp" Schempp, Christian "xtra" Schiffler und Tristan "tril" Lins teilgenommen. Aus der CCA haben Stefan "Chibineko" Heimes und Tim "timbec" Becker teilgenommen. Aus der Community waren unter anderem bekannte Entwickler/-innen wie Glen "BugBuster" Langer und Kirsten "katgirl" Roschanski und weitere Contaoianer vertreten.

Wie bereits anzunehmen war, ist die Entscheidung ein Kompromissbeschluss.

Unsere Empfehlung

Schlussendlich konnten wir uns auf folgende Aussage einigen:

Die Contao Entwickler empfehlen bei zukünftigen Projekten auf die PSR Standards zu setzen. In Punkto Coding Style sind hier speziell PSR-1 und PSR-2 gemeint. Ältere Projekte sollten je nach Bedarf migriert werden. Ziel sollte es sein, das in einem mittelfristigen Zeitrahmen die PSR Standards vollständig eingeführt wurden.

Aufnahme zum Nachhören

Wir haben dieses Treffen das erste Mal aufgenommen. Es ist sozusagen unsere Premiere, dass wir eine derartige Diskussion für die Nachwelt festhalten. Im Laufe der Diskussion ist uns aber aufgefallen, dass die Aufnahme alleine keinen Sinn macht, da wir zusätzlich viel im Pad mitgeschrieben haben, was für die Diskussion relevant war.

Für diese Aufnahme ist es am besten, wenn man sich den Zeitstrahl für das Pad ansieht und über die Play Funktion die Änderungen abspielen lässt. Aber Achtung: Das Abspielen des Pads geschieht nicht in Echtzeit, sondern von Revision zu Revision, d.h. längere Pausen werden einfach übersprungen. Wer also das Pad neben der Audio Aufnahme abspielt muss vermutlich regelmäßig im Pad auf Pause drücken.

Sollten wir dies wiederholen und zukünftige Diskussionen aufnehmen, werden wir an einem System zusätzlich eine Video Aufnahme machen, damit es für die Nachwelt einfacher ist, die Diskussion nachzuvollziehen.

Code-Style-Definition für die IDE

Hinweis: Die meisten Entwickler sind mittlerweile bei der IDE PhpStorm gelandet. Wer eine andere IDE verwendet und für diese eine Code-Style-Definition fertiggestellt hat, sei hiermit eingeladen, uns diese zukommen zu lassen, damit wir sie hier verlinken können.

Obwohl viele IDEs eine integrierte Code-Style-Definition für PSR-1/PSR-2 anbieten, haben wir noch ein paar kleine Änderungen im Rahmen dieser Standards definiert, die die Lesbarkeit erhöhen.

Ausrichtung in aufeinander folgenden Zuweisungen

<?php

$var = 'value1';
$foobar = 'value2';
$baaz = 'value3';

class Foo
{
    const VAR = 'value1';
    const FOOBAR = 'value2';
    const BAAZ = 'value3';
}

$array = array(
    'var' => 'value1',
    'foobar' => 'value2',
    'baaz' => 'value3',
);
<?php

$var    = 'value1';
$foobar = 'value2';
$baaz   = 'value3';

class Foo
{
    const VAR    = 'value1';
    const FOOBAR = 'value2';
    const BAAZ   = 'value3';
}

$array = array(
    'var'    => 'value1',
    'foobar' => 'value2',
    'baaz'   => 'value3',
);

PHPDoc Formatierung

<?php

/**
 * This is a sample function to illustrate additional PHP formatter
 * options.
 * @param $one The first parameter
 * @param int $two The second parameter
 * @param string $three The third parameter with a longer comment to illustrate wrapping.
 * @return void
 * @throws \RuntimeException
 * @author J.S.
 * @license GPL
 */
<?php

/**
 * This is a sample function to illustrate additional PHP
 * formatter options.
 *
 * @param        $one   The first parameter
 * @param int    $two   The second parameter
 * @param string $three The third parameter with a longer
 *                      comment to illustrate wrapping.
 *
 * @return void
 * 
 * @throws \RuntimeException
 *
 * @author  J.S.
 * @license GPL
 */

Build Scripte für "continuous integration"

Wir versuchen momentan eine Kollektion an Scripten und Tasks für continuous integration zu definieren. Dazu gehören nicht nur eine Menge von Tasks, sondern auch eine Menge von Prüfungen, welche die Code Qualität weiter verbessern sollen.

Zu diesen Prüfungen gehört abgesehen von der Code Style Prüfung bspw. auch Code Integrity Prüfungen - das könnte bspw. Prüfung auf ungenutzte Methodenparameter sein. Oder Prüfung der NPath and Cyclomantic Complexity mit dem Mess Detector.

Weitere Prüfungen die sich bereits in unserem Set wieder gefunden haben sind composer.json Validierung (php composer.phar validate), Composer Branch-Alias Prüfung und PHP Syntax Prüfung (PHP lint).

Das ANT Script mit allen Tasks und weiteren Tools kann man in unserem contao-community-alliance/build-system Repository finden. Wie Ihr das ganze verwendet, ist in der README beschrieben.


Abschließend möchten wir noch Ankündigen, dass wir 2 neue Calls planen.

Ein Call wird sich mit dem Thema CSS/SCSS/LESS Code Style and Convention beschäftigen. Dieser Call richtet sich vorwiegend an Frontend'ler und Web-Worker und wird Federführend von Marc und Nicky organisiert.

Der andere Call beschäftigt sich mit dem vorher genannten Thema continuous integration. Hier sind wieder die Entwickler gefragt. Gemeinsam wollen wir die Prüfungen im Detail besprechen und auch ausarbeiten.

Termine werden wir wieder rechtzeitig über unsere Kanäle bekannt geben.

Zurück

Einen Kommentar schreiben

  1. Kommentar von Chris |

    Vielen Dank für die CodeStyle-Datei für PHPStorm, wirklich komfortabel so!