FAQ Suchen Synapsis Wiki Projekte Mitgliederliste Benutzergruppen Profil Einloggen, um private Nachrichten zu lesen Registrieren Login

Allgemeine, sichere, schnelle und effiziente Programmierung

 
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Konzepte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 415
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 19.01.2007, 17:31    Titel: Allgemeine, sichere, schnelle und effiziente Programmierung Antworten mit Zitat

Hi,

dieser Thread dient einfach mal dazu Ideen zu

    Stil
    Sicherheit
    Schnelligkeit
    Einfachheit

eines Programmes zu finden.
Ich werde dann alles zusammenfassen, ordnen, betiteln, beschreiben, erklären (soweit es mir möglich ist) und dann posten.

Wie ihr eine Idee eintippt?
=> 1. Der Hauptbegriff
geht es um den Schreibstil? Lieber && als AND? Oder geht es um eine Funktion, die Sicherheitslücken aufbringen kann? Ist sie umgehbar? Oder doch weglassen? Wie ist etwas schneller zu realisieren?

Wenn ihr Dinge über JavaScript, C++ oder VB bringt, dann bitte mit Erklärung, da ich das eher schwächlich kann. JavaScript und VB ein wenig aber C++ noch schwach (ich versuch mein Bestes =) )


lg

_________________
http://www.Julian-Stier.de | T-REx 2.2

Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008

Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
synapsis
Administrator


Anmeldedatum: 15.10.2006
Beiträge: 391
Wohnort: Nahe München
Programmiersprachen: C/C++, VB, (Java), PHP, JS, AJAX, Python
Compiler: gcc, MS VS2005 SE

BeitragVerfasst am: 19.01.2007, 19:12    Titel: Antworten mit Zitat

Grundlegender Stil / Gestaltung eines Skripts

1. Header
Jede Quellcodedatei muss einen Header besitzen, in dem der Name, der Zweck, eine Copyright-Notiz und die Namen der Autoren stehen. Das ganze könnte dann folgendermaßen aussehen.
Code:
/*
 *   Name:       index.php
 *   Purpose:    Draws the main site.
 *
 *   Last Author:   $Author
 *   Revision:   $Revision
 *   ID:      $ID
 *
 *     Copyright (C) 2007  Synapsis Developing Community
 */


Die Variablen $Author, $Revision und $ID würden automatisch vom SCM-System (also Subversion) ausgefüllt werden.

2. Allgemeiner Programmierstil
Grundsätzlich stellt jeder Bereich innerhalb geschweifter Klammern eine neue Ebene dar, d.h. hier wird einen Tab weiter eingerückt. Bei Variablen-Definitionen sollten grundsätzlich alle Variablen initialisiert werden und ein kurzer Kommentar über die Nutzung/Funktion der jeweiligen Variable abgegeben werden.

Als Vergleichsoperator wäre eine Nutzung von "==" anstatt "=" sinnvoll, da dadurch Vergleiche von Zuweisungen deutlich zu unterscheiden sind. (Ist in C sowieso standard)
Mir persönlich würde eine Nutzung von AND und OR anstatt && und || besser gefallen, da das ganze dann erheblich übersichtlicher wird.

Und vorallem: Ruhig mal ein paar Zeilen frei lassen und nicht alles so auf einen Haufen batzen, so dass man danach nicht mehr erkennen kann, welche if-Abfrage wo aufhört. Auch bin ich der Meinung, dass die Verwendung der folgenden Syntax eher zur Unübersichtlichkeit führt, als zu einem günstigeren Code:

Code:

Anstatt
Bedingung ? Folge1 : Folge2

kann man ja auch

if (Bedingung)
{
    Folge1
}
else
{
    Folge2
}

schreiben, was meiner Meinung nach wesentlich übersichtlicher ist.


Beispiel:

Code:

// Variablen
$counter = 0;   // Zähler für die Anzahl der Einträge

// Überprüfen, ob Einträge vorhanden
if ($_GET['counts'] <=0)
{
   exit;
}

// Alle Einträge durchgehen
while($counter <= $_GET['counts'])
{
   $counter++;
   
   // irgendeine Abfrage
   if ($data[$counter] == "variabletest")
   {
       // Irgendwas tun....
   }
}



3. Namenskonventionen und Kommentare


Für die Namen von Funktionen, Variablen, Klassen, etc. sollte grundsätzlich nur die englische Sprache verwendet werden. Desweiteren sollte beim Programmieren mit C/C++ die ungarische Notation verwendet werden. Ich weiß leider nicht, ob es für php etwas vergleichbares gibt. Kommentare sollten einheitlich sein. Da es unter php mehrere Möglichkeiten gibt, eine Kommentarzeile zu generieren, sollten wir uns auf eine Möglichkeit festlegen. Ich würde für mehrzeilige Kommentare "/*xxxx*/" und für einzeilige "//" vorschlagen, da dies der C/C++-Konvention entspricht und somit der Einstieg für nicht-phpler leichter ist. Man kann nun darüber streiten, ob die Kommentare selbst auch in Englisch geschrieben werden sollten (wie die Namen) oder lieber in Deutsch. Ich habe allerdings die Erfahrung gemacht, dass es wesentlich produktiver ist, die Kommentare auf Deutsch zu verfassen.

4.Sicherheit

Grundsätzlich für das sichere Programmieren gilt: Alles, was irgendwie von außen in das Programm eingeschleust wird, muss auf Gültigkeit geprüft werden. Solche Gültigkeitsüberprüfungen sind das A und O.

@Php0Kid
Schöne Webseite!

_________________
Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 415
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 20.01.2007, 00:32    Titel: Antworten mit Zitat

Ich bin bei Einrückung für:

Code:

if(xxx){
    xxx
}
else{
    xxx
}


und:

Code:

if(xxx){
    if(yyy){
        zzz
    }
    else{
        zzz
    }
}
else{
    xxx
}

_________________
http://www.Julian-Stier.de | T-REx 2.2

Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008

Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Karldin Shinowa
Erster Benutzer


Anmeldedatum: 18.12.2006
Beiträge: 21
Wohnort: Wien
Programmiersprachen: C++
Compiler: Visual C++

BeitragVerfasst am: 20.01.2007, 12:38    Titel: Antworten mit Zitat

synapsis hat Folgendes geschrieben:


3. Namenskonventionen und Kommentare
Desweiteren sollte beim Programmieren mit C/C++ die ungarische Notation verwendet werden.


Bin ich absolut nicht deiner Meinung. Die ungarische Notation ist unübersichtlich, sinnlos. Ich benutze sie extra nicht und umgehe sie soweit ich kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 415
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 20.01.2007, 13:12    Titel: Antworten mit Zitat

Wäre gut, wenn ihr als C++ler das genau erklärt bzw. wenn mehr als nur 2 darüber diskutieren, damit wir uns auf etwas festlegen können.

ANMERKUNG: WICHTIG!
Jeder von uns hat bei solchen Projekten Einbußen, dass müsst ihr einsehen! Das Problem ist, dass wir einen einheitlichen Still brauchen und viele verschiedene zusammenkommen. Ich würd auch gern nach meinen Regeln programmieren, geht aber in dem Fall einfach nicht!

_________________
http://www.Julian-Stier.de | T-REx 2.2

Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008

Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nubbel
Neuer Benutzer


Anmeldedatum: 19.07.2007
Beiträge: 7
Wohnort: Mosbach
Programmiersprachen: Deutsch, Englisch, Französisch, Spanisch

BeitragVerfasst am: 22.07.2007, 15:00    Titel: Antworten mit Zitat

habe ich bereits schon mal hier im Forum veröffentlicht: meine PHP-Coding-Standards
_________________
Mein Blog: nicky.nubbel.info
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Holzhaus
Neuer Benutzer


Anmeldedatum: 26.03.2008
Beiträge: 18
Wohnort: Gelsenkirchen
Programmiersprachen: PHP 5, Perl, JavaScript, ActionScript 2, Bash
Compiler: MTASC für AS2

BeitragVerfasst am: 21.04.2008, 22:27    Titel: Antworten mit Zitat

Karldin Shinowa hat Folgendes geschrieben:
synapsis hat Folgendes geschrieben:


3. Namenskonventionen und Kommentare
Desweiteren sollte beim Programmieren mit C/C++ die ungarische Notation verwendet werden.


Bin ich absolut nicht deiner Meinung. Die ungarische Notation ist unübersichtlich, sinnlos. Ich benutze sie extra nicht und umgehe sie soweit ich kann.


hehe, ich musste da direkt an das hier denken:

Encoding the type of a function into the name (so-called Hungarian
notation) is brain damaged - the compiler knows the types anyway and can
check those, and it only confuses the programmer. No wonder MicroSoft
makes buggy programs.

http://www.linuxhq.com/kernel/v1.3/53/Documentation/CodingStyle

Naja, ansonsten würde ich auf jeden Fall synapsis zustimmen und bei den Einrückungen den Allman-Stil[1] dem K&R-Stil[2] vorziehen.

[1]
Code:

if(true)
{

}
else
{

}



[1]
Code:

if(true) {

} else {

}


Eingerückt wird mit Tabs.

Bei den Namen sollte folgendes beachtet werden (zumindest bei PHP/Perl):
- Normale Variablen immer in Kleinbuchstaben
- Klassennamen beginnen mit einem Großbuchstaben
- Methoden beginnen mit einem Kleinbuchstaben, jedes weitere Wort beginnt mit einem Großbuchstaben und dafür KEINE Unterstriche (z.B. User::getName(); )
- Attribute genau wie normale Variablen nur in Kleinbuchstaben.

_________________
Zitat:
Wir sollten die Leistungsfähigkeit der Nachrichtendienste nicht durch parlamentarische Untersuchungsausschüsse gefährden

- W. Schäuble auf einem Symposium des Bundesnachrichtendiensts am 1. November 2007
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
synapsis
Administrator


Anmeldedatum: 15.10.2006
Beiträge: 391
Wohnort: Nahe München
Programmiersprachen: C/C++, VB, (Java), PHP, JS, AJAX, Python
Compiler: gcc, MS VS2005 SE

BeitragVerfasst am: 22.04.2008, 11:05    Titel: Antworten mit Zitat

Mittlerweile hab ich mich auch der Anti-Ungarischen-Notationsseite angeschlossen. Wink Ich hatte das einfach durch Bücher so gelernt, aber durch mehr und mehr praktische C/C++ Erfahrung wende ich die Notation nicht mehr an, weils einfach auch schmarrn ist. (sehr nettes Zitat btw. Wink)

Mit dem K&R-Stil hab ich mich auch schon angefreudet, früher war ich der Meinung: "Des geht ja mal gar nicht!" - dennoch ist der Allman-Stil meiner Meinung nach ein bischen übersichtlicher, aber genau genommen ist das Gewöhnungssache.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 415
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 22.04.2008, 21:23    Titel: Antworten mit Zitat

Für mich hängen diese

Code:
if(true)
{

}


einfach leer in der Luft rum. Da kriegt ich die Krise, keinerlei Zugehörigkeit nix .. ^^

Halte mich mittlerweile bei meinen Projekten auch an Standards, obwohl ich meinen einen habe, der aus mehreren zusammengemixt ist.

- Variablen werden klein geschrieben und niemals durchgehend, sondern mit sinngemäßen "_" (z.B. $user_id)
- Konstanten werden komplett groß geschrieben
- Klassen werden mit großem Buchstaben begonnen
- Funktionen und Methoden werden klein geschrieben und wie Variablen mit sinngemäßem "_" verbunden (z.B. do_some_action() )
- kommentiert wird nur noch in folgendem Stil:
Code:
/**
 * my_function
 *
 * @param [array] data: id => info
 * @return [boolean] true / false
 */

- einfache Kommentare sind nur für die Entwicklungszeit
- eingerückt wird mit Tabs, aber Notepad++ lasse ichs mit 3 Leerzeichen anzeigen (sieht schicker aus und durch Tabs flexibler)
- Konstanten werden an einer Stelle einheitlich aufgelistet und niemals mitten im Code deklariert (zur Konfiguration eben)


lG



PS: sorry, dass ich derzeit so wenig hier reinschaue - hab ne Menge zu tun Smile

_________________
http://www.Julian-Stier.de | T-REx 2.2

Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008

Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Konzepte Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Anhänge in diesem Forum nicht anhängen.
Du kannst Dateien in diesem Forum herunterladen.



Powered by php B. B. © 2001, 2005 php B. B. Group
Template xabbBlue für php B. B. Foren - created by php b. b. styles
Modified by synapsis
Protected by CTracker