Wie man Programmierfragen richtig stellt

Grundlegende Informationen, wie man Fragen richtig stellt, findest du im gleichnamigen Artikel: Wie man Fragen richtig stellt.

Speziell wenn du Hilfe bei der Programmierung von eigenen Scripten oder bei der Anpassung von vorhandener Software/Mods benötigst, gibt es in der Regel drei wichtige Kernfragen, die immer beantwortet werden sollten:


1. Was möchtest du erreichen / welches Verhalten erwartest du?


Zuerst solltest du beschreiben, was dein Ziel ist. Beschreibe möglichst genau, wie die Anwendung/Mod/Script, die du erstellen/modifizieren willst, später aussehen soll (bzw. was genau du an einer vorhandenen Anwendung Ändern möchtest).

Schlecht: Ich möchte eine Datenbank mit PHP und MySQL programmieren.
Besser: Ich möchte eine Mitgliederverwaltung für meinen Verein programmieren. Es sollen Stammdaten (Vorname, Nachname, Mitgliedsnummer, ...) erfasst werden und ich möchte erfassen können, wer seinen jährlichen Mitgliedsbeitrag bereits bezahlt hat und wer nicht.

Schlecht: Ich habe mir eine PHP-Funktion geschrieben, diese rechnet jedoch falsch.
Besser: Ich möchte den Durchschnittswert aller Zahlen in einem Array errechnen. Ich habe mir dazu folgende PHP-Funktion geschrieben, welche das Array als Parameter annimmt und als Rückgabewert die Summe zurückgeben soll.


Auch wenn das eigentliche Problem nur einen Teilbereich einer sehr großen Anwendung betrifft, solltest du zumindest grob beschreiben, was die Anwendung macht bzw. welchen Zweck der Teilbereich erfüllt. Insbesondere wenn man schon länger an einem kniffligen Problem sitzt, sieht man nämlich manchmal den Wald vor lauter Bäumen nicht mehr. Wenn ein Außenstehender das Gesamtbild sieht, fällt ihm vielleicht eine viel einfachere Lösung für dein Problem ein, an die du noch gar nicht gedacht hast.

Schlecht: Wenn ich den folgenden Code in die common.php einfüge, bekomme ich eine Fehlermeldung "parse error in line 25"
Besser: Ich möchte erreichen, dass beim erstmaligen Aufruf des Forums ein Popup geöffnet wird, bei weiteren Klicks innerhalb der selben Browsersitzung aber nicht mehr. Ich habe dazu folgenden Code im Internet gefunden, der beim Einbau in die common.php aber die Fehlermeldung "parse error in line 25" erzeugt.


2. Was genau hast du bereits versucht ?


Beschreibe möglichst ausführlich, was du bereits getan hast, um das Problem zu lösen. Selbst wenn du "überhaupt keine Ahnung hast, was du machen sollst", ist es für einen Helfer wichtig zu wissen, was du bereits versucht hast, welche Tutorials/Dokumentationen du bereits gelesen hast, wonach du gegoogelt hast, welche Mods/Snippets du bereits versucht hast zu installieren usw. Ganz wichtig: Wenn du bereits eigenen Code hast (auch wenn dieser nicht funktioniert), solltest du diesen mit anhängen.

Je mehr Informationen über deine bisherigen Versuche du bereitstellst, um so besser kann sich ein potentieller Helfer einen Eindruck davon machen, wie dein Kenntnisstand ist und seine Antworten entsprechend ausführlicher oder weniger ausführlich gestalten. Wenn du bereits Code hast, kann der Helfer dort nach Fehlern suchen muss der Helfer nicht bei Null anfangen, sondern kann dir oft am konkreten Fall zeigen, wo genau das Problem liegt und welche Zeile du ändern musst. Gerade bei Anfängern findet man auch häufig weitere Probleme im geposteten Code (z.B. Sicherheitslücken), deren Lösung dann im gleichen Schritt mit gepostet werden kann.


3. Was genau fehlt noch / funktioniert nicht / verstehst du nicht?


Als wichtigsten Teil solltest du natürlich so ausführlich wie möglich beschreiben, warum du überhaupt den Beitrag geschrieben hast - also welcher Button noch nicht funktioniert, an welcher Stelle eine falsche Ausgabe erscheint, welche Fehlermeldung (exakter Wortlaut!) angezeigt wird, welchen Satz in der Dokumentation du nicht verstanden hast, usw. Verwende auf keinen Fall allgemeine Floskeln wie "es geht halt nicht", "ich kapiere das nicht", "es kommt nur eine Fehlermeldung". Im Extremfall wird dadurch der gesamte Beitrag nutzlos und man kann dir nur antworten "Oh, das ist natürlich doof. Na dann noch viel Glück bei der Fehlersuche".

Beispiele für gute Formulierungen:
"Im PHP-Handbuch steht, dass man der Funktion mysql_query einen Parameter $Verbindungs-Kennung übergeben soll. Ich verstehe aber nicht, woher ich diesen bekommen soll."
"Wenn ich die Funktion xyz mit den Parametern A,B und C aufrufe, dann kommt als Ergebnis E heraus, obwohl es eigentlich F sein müsste."
"Wenn ich die Datei anzeigen.php aufrufe, dann werden mir die ältesten 5 Einträge angezeigt. Es sollten aber die die neusten 5 angezeigt werden."
"Wenn ich im Formular auf absenden klicke, wird die Seite einfach ohne Fehlermeldung neu geladen. Es sollte aber der Eintrag in der Datenbank hinzugefügt werden und auf die Übersichtsseite weitergeleitet werden."


Wichtig: Poste wenn möglich immer den Originalcode


Sofern keine wichtigen Gründe dagegen sprechen, solltest du immer den Originalcode bzw. die Originaleinstellungen posten und diese nicht verfremden (z.B. URLs durch "example.org" ersetzen).

Wenn das Posten des Originalcodes nicht möglich sein sollte (z.B. wenn personenbezogene Daten von Mitgliedern darin enthalten sind oder die zu behebende Sicherheitslücke momentan auf der Website noch offen ist), solltest du zumindest speziell aufbereitete Testdaten verwenden, so dass der Code, der bei dir den Fehler verursacht und der, den du im Forum postest, identisch sind. Denn kaum etwas ist (für beide Seiten -Helfer und Hilfesuchenden) nerviger, als wenn dein Code einen Fehler enthält, du dann vor dem Posten z.B. eine URL durch "example.org" ersetzt und du dadurch ungewollt den Fehler mit aus dem Code entfernst.

Der gepostete Code sollte möglichst vollständig sein, aber keine nicht relevanten Codestellen enthalten. Siehe SSCCE / Kompilett

Auf gar keinen Fall solltest du Code aus dem Editor ins Forum abtippen oder umgekehrt - das Risiko, dass du dich vertippst, ist viel zu groß. Nutze immer Copy&Paste oder (bei größeren Dateien) nutze unseren Pastebin.

Zuletzt bearbeitet: 16.04.2014 15:59 von • Der Artikel wurde 9148 mal angeschaut.