Hej, ten temat powstał z nadzieją na poprawienie jakości pytań dodawanych przez użytkowników.
Kiedy mogę zadać pytanie?
Zanim zadasz pytanie upewnij się najpierw czy nie istnieje już identyczne, albo podobne czy to na forum, czy to w sieci. Jeżeli nie znalazłeś podobnego pytania na forum lub jego odpowiedź cię nie satysfakcjonuje (wtedy to podkreśl: "znalazłem podobne pytania: <linki do pytań>, ale nie rozwiązują mojego problemu") to droga wolna i możesz zadać pytanie, ale...
Jak dobrze zadać pytanie?
Temat (nagłówek) pytania
(z definicji) MUSI być treściwy i krótki tak aby w mniej niż jednym zdaniu oddawał sens zawartości pytania.
ŹLE
Bootloader pomocy! # "pomocy" - słowo z [listy wskazówek] których nie powinno się używać
Dlaczego kod nie działa tak jak powinien? # zero jakichkolwiek informacji o problemie
Nie działa. Problem sprintf. # już lepiej, ale dalej brak konkretów
Nie działa tak jak powinno # no comment
DOBRZE (inne przykłady)
Konwersja danych string na char, char na int
Algorytm blokowy na wyświetlanie liczb
Jak usunąć bootloader chameleon
error: ‘NULL’ was not declared in this scope
WSKAZÓWKI
- tytuł pytania powinien być krótki, jeżeli składa się z więcej niż jednego zdania to jest za długi
- jeżeli błąd dotyczy konkretnego komunikatu błędu, to powinien się on znaleźć w tytule
- unikaj słów: "pomocy", "help", "coś nie działa", a także wykrzykników i emotek
Treść pytania
Treść pytania powinna zawierać konkretne informacje potencjalnie przydatne do rozwiązania problemu, najczęściej wymagane to:
- Fragment kodu, który podejrzewamy o błąd (lub cały jeżeli nie wiemy w czym może leżeć problem)
- Komunikat błędu (w wersji tekstowej, a nie screena) jeżeli występuje (oraz dane dla jakich się pojawia lub dokładne kroki do jego reprodukcji)
- Informacje dotyczące środowiska na któym uruchamiamy program (system operacyjny, kompilator, ...)
- Inne istotne informacje...
WSKAZÓWKI
- Wszystkie informacje powinny znajdować się wewnątrz treści pytania, tzn przekazanie informacji w nagłówku/tagach nie zwalnia cię z obowiązku przekazania tej samej informacji w treści pytania
- Nie dodawaj nieistotnych informacji, np "historii życia", czyli historyjki w stylu "Cześć wszystkim, nazywam się... Zacząłem programować x czasu temu, bo ....". Serio, nikogo to nie interesuje a dodatkowo utrudnia odnalezienia sedna pytania
- Jeżeli dodajesz obrazki to upewnij się że podajesz także do nich link (forum ma tendencję do zmniejszania ich bez możliwości powiększenia)
- Upewnij się że cały kod umieściłeś w przeznaczonym do tego [bloku]
- Sprawdź czy pytanie po przeczytaniu jest zrozumiałe
- Nie formatuj tekstu jeżeli nie jest to konieczne, zastosowanie różnych krojów, wielkości czcionek, wyrównywanie tekstu itd. nie robi na nas wrażenia
Kategoria i tagi
Upewnij się, że pytanie trafiło do [właściwej kategorii], nie stosuj też nadmiernie tagów.
Umieszczenie informacji w tagach (np "Qt") nie zwalnia cię z obowiązku poinformowania nas w treści pytania, że korzystasz z Qt.
Wzorce pytań
Poniżej podaję kilka wzorców pytań, wraz z pseudo-przykładami do konkretnych sytuacji (rodziny problemów).
Jeżeli ktoś zauważył jakiś inny wzorzec to gorąco zachęcam do dodania go w komentarzach wg schematu, wtedy ja dodam go do treści tego pytania:
Nazwa wzorca
Wzorzec pytania
Wzorzec treści (pola, które pytający powinien wypełnić)
Przykład:
Przykładowy nagłówek pytania
Przykładowe wypełnienie treści pytania (wymagań)
---
Pytania o komunikaty błędów
[(skrócony) komunikat błędu]
- (pełny) komunikat błędu
- Kroki do reprodukcji
- Informacje o środowisku (kompilator, jego wersja, IDE, OS, architektura)
- Kod
Przykład:
Wskaźniki, Segmentation fault
- Komunikat: "Segmentation fault"
- Kroki do reprodukcji: skompilowanie i uruchomienie programu
- Informacje o środowisku:
- OS: Windows 10
- Arch: 64bit
- Kompilator: g++ (GCC) 5.3.0
- Kod:
int main() { int *a = 0; int b = *a + 3; }
Więcej template'ów wkrótce...