Benutzer-Werkzeuge

Webseiten-Werkzeuge


developer:kodierrichtlinien

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
developer:kodierrichtlinien [2017/07/07 10:57]
oesi [Datenbankabfragen]
developer:kodierrichtlinien [2019/08/13 13:48] (aktuell)
Zeile 1: Zeile 1:
-====== Coding Guidelines ====== +Die Kodierrichtlinien finden sich ab sofort ​auf folgender Seite 
- +[[https://​github.com/​FH-Complete/​FHC-Core/​wiki/​Coding-Guidelines]]
-===== Ground Rules ===== +
- +
-   * Geschwungene Klammern gehören immer in eine eigene Zeile. +
-   * Zur Einrückung sind Tabs zu verwenden. Diese werden NICHT durch Leerzeichen ersetzt. (per Default entspricht ein Tab 4 Leerzeichen) +
-   * Zeilenlänge sollte 120 Zeichen nicht überschreiben +
-   * Jede Funktion sollte einen DocBlock Kommentar besitzen +
-   * Kontrollstrukturen besitzen ein Leerzeichen vor der öffnenden Klammer +
-   * SQL Schlüsselwörter werden in Großbuchstaben geschrieben. +
-   * Längere SQL Befehle sind entsprechend einzurücken +
-   * Code ist mit Codesniffer auf Gültigkeit zu Prüfen +
- +
-<note important>​ +
-Zum Prüfen der Codingstyles wird Codesniffer verwendet. +
-Nähere Informationen hierzu sind auf folgender Seite zu finden: +
- +
-[[https://​github.com/​FH-Complete/​FHC-Core/​wiki/​CodingStyles]] +
-</​note>​ +
- +
-===== Namensgebung ===== +
- +
-Eine einheitliche Form der Namensgebung für Variablen, Konstanten und anderer Komponenten erleichter es dem Entwickler, den Code des anderen zu verstehen. +
- +
-==== Dateinamen ==== +
-Alle Dateinamen haben die für ihren Dateityp bestimmte Endung. +
-So haben z.B. HTML Dateien die Endung .html oder PHP Dateien .php. Es gibt jedoch Datentypen +
-die eine eigene Schreibweise haben. Hier eine Aufzählung der wichtigsten:​\\ +
-  * Klassen: <​klasse>​.class.php\\ +
-  * PHP-File: <​name>​.php\\ +
-  * HTML-File: <​name>​.html\\ +
-  * RDF-File: <​name>​.rdf\\ +
-  * JavaScript: <​name>​.js\\ +
-  * CSS: <​name>​.css\\ +
-  * XUL: <​name>​.xul\\ +
-  * Config: <​name>​.config.inc.php\\ +
-Hierzu sind Endungen wie <​name>​.rdf.php oder <​name>​.js.php erlaubt.\\ +
-Es sind nur alphanumerische Zeichen, Underscores und Trennstriche erlaubt.\\ +
-Dateinamen dürfen keine Umlaute oder Sonderzeichen enthalten.\\ +
-\\ +
-Beispiele für gültige Namen sind:\\ +
-  * studiengang.class.php +
-  * bestellung.rdf.php +
-  * tablesort.css +
-  * kontakt.js.php +
-  * ToDo_CIS.html +
-==== Variablen ==== +
-Alle Variablen müssen mit Kleinbuchstaben beginnen und der "​camelCaps"​ Namenskonventation folgen. Das bedeutet, wenn ein Variablenname aus mehereren Namen besteht muss der Anfangsbuchstabe von jedem neuen Wort großgeschrieben werden. Repräsentiert die Variable eine ID so wird die Endung ID mit _ angefügt. +
-Variablennamen sind so kurz und so verständlich wie möglich zu halten. Variablen wie $i und $j dürfen nur bei Loops verwendet werden.\\ +
-\\ +
-Variablen in Klassen müssen immer so heissen wie sie in der Datenbank angelegt wurden.\\ +
-<​code>​ +
-$anzahlVariablen +
-$datum +
-$person_id +
-</​code>​ +
- +
-<note important>​CamelCaps is recommended for Codeigniter Scripts. Underlines are only allowed in legacy scripts</​note>​ +
- +
-==== Konstanten ==== +
- +
-Pfade werden in Konstanten immer mit / beendet +
-<​code>​ +
-define('​SERVER_ROOT','​http://​www.technikum-wien.at/'​);​ +
-</​code>​ +
- +
-==== Session Variablen ==== +
- +
-Session Variablen die nur ein bestimmtes Modul betreffen, werden folgendermaßen benannt:​\\ +
-[Modulname/ [Name der Variable +
-\\ +
-Andere Session Variablen, die das ganze System betreffen werden ohne Modulnamen geschrieben.\\ +
- +
-<​code>​ +
-$_SESSION['​cms/​menu'​] +
-$_SESSION['​wawi/​user'​] +
-$_SESSION['​user'​] +
-</​code>​ +
- +
-Eine Session Variable wird immer klein geschrieben. +
- +
-====  Funktionen und Methoden ==== +
- +
-Funktionsnamen müssen immer mit einem Kleinbuchstaben beginnen. Wenn eine +
-Funktion aus mehreren Namen besteht, muss der Anfangsbuchstabe von jedem neuen +
-Wort grossgeschrieben werden. Funktionen und Methoden müssen so klar wie +
-möglich bezeichnet werden, damit anhand des Funktionsnamen jeder versteht, wofür +
-diese bestimmt sind. Optionale Übergabeparameter müssen immer mit null initialisiert werden. +
-Hier ein paar Beispiele für gültige Funktionsnamen:​ +
-<​code>​ +
-getAllDetailsFromBestellung() +
-load() +
-saveTags($tag,​ $visible = null) +
-</​code>​ +
-===== Kommentare ===== +
-Kommentare die nur eine Zeile lang sind sollen mit / / beginnen. Für Kommentare,​ +
-die länger als eine Zeile sind gilt als Start die /* Zeichenfolge und als Beendigung */. +
- +
-Kommentare mit # sollen nicht verwendet werden. +
-==== Klassen ==== +
-Jede Klasse muss im Minimum einen Docblock mit einer Beschreibung enthalten. +
-Mit einem Docblock Kommentar bezeichnet man spezielle Kommentare, die sich automatisch generieren um PHP Abschnitte genauer zu kommentieren. Diese beginnen +
-mit / * * und es können spezielle tags wie @param oder @return benutzt werden. +
- +
-<​code>​ +
-/** +
-* Short description for class +
-+
-* Long description for class (if any)... +
-*/ +
-</​code>​ +
-==== Funktionen und Methoden ==== +
-Jede Funktion oder Klassenmethode muss im Minimum einen +
-Docblock mit folgenden Tags enthalten: Beschreibung,​ Parameter und Rückgabewerte. +
-<​code>​ +
-/** +
-* Short description for the function +
-+
-* Long description for the function (if any)... +
-+
-* @param array $array Description of array. +
-* @param string $string Description of string. +
-* @return boolean +
-*/ +
-</​code>​ +
- +
- +
-==== Programmkopf ==== +
-<​code>​ +
-/* +
- * Copyright (C) 2015 fhcomplete.org +
- * This program is free software; you can redistribute it and/or modify +
- * it under the terms of the GNU General Public License as +
- * published by the Free Software Foundation; either version 2 of the +
- * License, or (at your option) any later version. +
- * +
- * This program is distributed in the hope that it will be useful, +
- * but WITHOUT ANY WARRANTY; without even the implied warranty of +
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +
- * GNU General Public License for more details. +
- * +
- * You should have received a copy of the GNU General Public License +
- * along with this program; if not, write to the Free Software +
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,​USA. +
- * +
- * Authors: Vorname Nachname <​email@technikum-wien.at>​ +
- */ +
-</​code>​ +
-Zu beginn jedes Skriptes soll ganz oben der GNU Header eingefügt werden. +
-Im Authors Block werden nur Programmierer erwähnt die das aktuelle File auch +
-wirklich bearbeitet haben. +
- +
-===== Programmierstil ===== +
-==== Strings ==== +
-Ein String wird mit echo ausgegeben und sollte grundsätzlich mit +
-einfachen Apostrophen (single quotes) abgegrenzt werden. Dies hat den Vorteil, dass PHP Code +
-im String nicht ausgeführt wird und so z.B. HTML Ausgaben einfacher und +
-schneller sind.  +
-<​code>​ +
-$message = 'Hello World';​ +
-echo '<​div style="​float:​ right;">'​.$message.'</​div>';​ +
-</​code>​ +
-==== IF - ELSE ==== +
- +
-Um Blöcke zu gruppieren, können zusätzliche Klammern eingesetzt werden. Bei +
-längeren Bedingungen werden alle Bedingungen +
-untereinander dargestellt , um die +
-Lesbarkeit zu erhöhen. Die öffnende geschweifte Klammer wird immer in die nächste +
-separate Zeile geschrieben . Die abschließende geschweifte Klammer erhält eben- +
-falls immer eine separate Zeile. Jeder Code innerhalb der geschweiften Klammern muss +
-einen Tabulator (standardmäßig vier Leerzeichen) eingerückt werden. +
- +
-<​code>​ +
-if ($user == '​Herbert'​) +
-+
-    echo 'Hallo Herbert';​ +
-+
-else +
-+
-    echo '​Falscher User';​ +
-+
-</​code>​ +
-Bei sehr kurzen if-else Konstrukten kann auch der +
-dreifach konditionale Operator verwendet werden: +
-<​code>​ +
-$sampleVar = isset($_GET['​sampleVar'​]) ? $_GET['​sampleVar'​] : '';​ +
-</​code>​ +
-Gibt es nur eine ausführende Zeile, so können die geschweiften Klammern auch +
-weggelassen werden. +
- +
-<​code>​ +
-if ($user == '​Herbert'​) +
-    echo 'Hallo Herbert';​ +
-else +
-    echo '​Falscher User';​ +
-</​code>​ +
- +
-==== Datenbankabfragen ==== +
-  * Datenbankabfragen sind grundsätzlich über die Datenbankklasse abzusetzen. +
-  * Vor jedem Tabellennamen ist das entsprechende Schema anzugeben +
-  * Schlüsselwörter (zB SELECT, WHERE, FROM, GROUP BY) sind groß zu schreiben +
-  * Um SQL-Injections zu verhindern, sind die Paramter mittels der Funktion db_add_param zu escapen. (Mögliche Übergabeparameter sind FHC_INTEGER,​ FHC_STRING und FHC_BOOLEAN) (gilt nur für nicht-CI-Code) +
-<​code>​ +
-$qry = "​SELECT  +
-            *  +
-        FROM  +
-            public.tbl_person  +
-            JOIN public.tbl_benutzer USING(person_id) +
-        WHERE +
-            person_id="​.$db->​db_add_param($person_id,​ FHC_INTEGER,​ false); +
-</​code>​ +
-Boolean Attribute sind über die Datenbankklasse zu parsen um Inkompatibilitäten mit +
-verschiedenen DB-Systemen zu verhindern. +
-<​code>​ +
-$aktiv = $db->​db_parse_bool($row->​aktiv);​ +
-</​code>​ +
- +
-==== HTML-Ausgaben ==== +
-HTML Attribute sollen generell mit doppelten Hochkomma umschlossen werden. Variablen die innerhalb des HTML-Codes ausgegeben werden sind mit der Funktion convert_html_chars zu escapen. Dies ist vorallem wichtig bei Strings die den Typ Text oder varchar in der Datenbank haben. +
-<​code>​ +
-echo '<​div style="​float:​ right;">'​.$basis->​convert_html_chars($message).'</​div>';​ +
-</​code>​ +
- +
-Nach Doppelpunkt bei Style Anweisungen sollte ein Leerzeichen stehen. +
- +
-==== Sonstiges ==== +
-  * Geschwungene Klammern - Um einen Block zu definieren werden die geschwungenen Klammern immer in der neuen Zeile gesetzt. +
-  * Tabulator - Es wird immer wenn möglich mit Tabulatoren eingerückt. Tabulatorbreite = 4 Leerzeichen wobei der Tabulator als solches gespeichert wird und nicht durch Leerzeichen ersetzt wird. +
- +
-===== Musterklasse ===== +
-<code php zweck.class.php>​ +
-<?php +
-/* Copyright (C) 2015 fhcomplete.org +
-+
-* This program is free software; you can redistribute it and/or modify +
-* it under the terms of the GNU General Public License as +
-* published by the Free Software Foundation; either version 2 of the +
-* License, or (at your option) any later version. +
-+
-* This program is distributed in the hope that it will be useful, +
-* but WITHOUT ANY WARRANTY; without even the implied warranty of +
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +
-* GNU General Public License for more details. +
-+
-* You should have received a copy of the GNU General Public License +
-* along with this program; if not, write to the Free Software +
-* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,​USA. +
-+
-* Authors: Christian Paminger <​christian.paminger@technikum-wien.at>,​ +
-+
-*/ +
-require_once(dirname(__FILE__).'/​basis_db.class.php'​);​ +
- +
-/** +
-* Klasse Zweck liest und manipuliert Daten aus bis.tbl_zweck +
-*/ +
-class zweck extends basis_db +
-+
-    /** +
-     * True wenn neues Objekt, False wenn Objekt schon vorhanden +
-     * @var boolean +
-     */ +
-    public $new = true; +
-     +
-    /** +
-     * Zweck-Objekt Array +
-     * @var array +
-     */ +
-    public $result = array(); +
- +
-    /** +
-     * Gibt alle Zweckbeschreibungen zurueck, bei Erfolg True +
-     * +
-     * @param integer $id Id die geladen warden soll, wenn keine id uebergeben wurde +
-     * @return boolean +
-     */ +
-    public function getAll($id = null) +
-    { +
-        return true; +
-    } +
-+
-?> +
-</​code>​+
/var/www/wiki/data/attic/developer/kodierrichtlinien.1499417845.txt.gz · Zuletzt geändert: 2019/08/13 13:49 (Externe Bearbeitung)