• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Komentowanie kodu tak aby go nie zaciemniać

Object Storage Arubacloud
0 głosów
247 wizyt
pytanie zadane 4 października 2017 w PHP przez kevin Mądrala (5,010 p.)

Witam!

W jaki sposób  przejrzyście komentować kod tak aby nie zaciemniać instrukcji ? Wiadome jest że nad funkcją wypada wstawić komentarz na temat tego co robi, co zwraca i co przyjmuje np.

//
//   Funkcja łączy dwa napisy
//
//   Parametry:
//      $s1 - string
//      $s2 - string
//
//   Zwraca:
//      string
function join( $s1, $s2) {
    return $s1.$s2;
}

 

Proszę się nie śmiać to dla przykładu. Ale jak widać coś takiego też potrafi zaciemnić kod...

Pytanie głównie kieruję jak komentować reakcje np. na pobranie konkretnego wyniku z bazy np. konto jest nie aktywne, nie istnieje takie konto, nic nie stoi na przeszkodzie aby się zalogować. Przykład:

if($stmt->rowCount() > 0)
{
     $acc = $stmt->fetch(PDO::FETCH_ASSOC);

     if( $acc['activated_daytime'] == null) {
  
             //
             // Tutaj wypada postawić komentarz że konto jest nieaktywne 
             //

            // 
            // zakończenie działania skryptu z powodu nieaktywnego konta
     }
    else
    {
            // -------------------------------------------------------------
            // Można się zalogować
    }
}

// Konto nie istnieje
exit();

To trochę dziwne pytanie bo może zależy i od gustów. Ale czy jest jakaś jednolita metoda dla PHP która usala jasne reguły od komentowania tego typu sytuacji ?

komentarz 4 października 2017 przez Bany Nowicjusz (130 p.)

Wiadome jest że nad funkcją wypada wstawić komentarz na temat tego co robi, co zwraca i co przyjmuje np.

Przepraszam, ale czy jest to faktycznie tak wiadome? Spotkałem się w pewnej publikacji z twierdzeniem, że taka praktyka zaśmieca kod. Co dana funkcja wykonuje, programista wie lub powinien wiedzieć. Sugerowano by komentarzami opisywać DLACZEGO wybrało się takie rozwiązanie oraz inne informacje, jeśli przyjdzie pracować z kodem komuś innemu.

komentarz 4 października 2017 przez event15 Szeryf (93,790 p.)
Oczywiście że nad metodami nie wstawiamy komentarzy - pomijając te dokumentacyjne. Aczkolwiek takie komentarze zawsze pozostają w tyle jeśli chodzi o kod. Ktoś zmieni kod a nie zmieni komentarza i nagle nikt nic nie wie.

2 odpowiedzi

+2 głosów
odpowiedź 4 października 2017 przez Ehlert Ekspert (212,670 p.)
edycja 4 października 2017 przez Ehlert
/* 
 * Opis funkcji co robi
 *
 * @param int $param opisz parametr i wymyśl lepszą nazwę
 * @param \PDO $con to samo
 * 
 * @return int opisz może
 * 
 * @access private
 *
 * @throw RuntimeException daj info kiedy
 */
private function documentedFoo(int $param, \PDO $con)
{
//
}

Krótko mówiąc PhpDoc.

Prawdę mówiąc czysty kod będący ciałem funkcji sam się komentuje. Twój drugi przykład taki nie jest. Skąd mam wiedzieć, że chodzi Ci o Usera.

$user = $userRepository->getUserById($id);

if (null === $user || !($user instanceof User)) {
	throw...;
}

$user->createChatBan();

Nie trzeba elsów zbędnych wcięć itp. Czytasz, nie wiesz jak to działa (jest dokumentacja) i rozumiesz zamysł. 

komentarz 4 października 2017 przez maly Nałogowiec (37,190 p.)
Ten kod też nie jest zbyt dobry, wygląda jakby funkcja getUserById mogła zwrócić nie tylko null(co już jest "nieładne") i klasę User, ale także jakiś inny bliżej nie określony typ.
komentarz 4 października 2017 przez event15 Szeryf (93,790 p.)
Poza tym nie powinno się do konkretnego typu sprawdzać za pomocą instanceof, tylko do jego interfejsu. Inna sprawa, że jest już PHP7, który pozwala dbać o takie typy bez wykorzystania instanceofów.

Czasem też jest lepiej zwrócic NullObject implementujący dany interfejs i obsługujący w odpowiedni sposób ten przypadek niż zrzucienie po prostu nulla.
komentarz 4 października 2017 przez Ehlert Ekspert (212,670 p.)

No cóż. Na swoją obronę mam tylko tyle że kod cytowalem z jednego z bundli z Symfony. Zasłonię się celem dydaktycznym angel

0 głosów
odpowiedź 4 października 2017 przez event15 Szeryf (93,790 p.)
komentarz 4 października 2017 przez event15 Szeryf (93,790 p.)
Jeszcze jest tu odnośnie komentowania (w dół strony): https://php-kurs.gitbooks.io/phpkurs/content/czesc-i/podstawy-skladni.html

Podobne pytania

0 głosów
1 odpowiedź 144 wizyt
0 głosów
1 odpowiedź 230 wizyt
pytanie zadane 25 grudnia 2018 w C i C++ przez kris6700 Początkujący (260 p.)
0 głosów
0 odpowiedzi 153 wizyt

92,568 zapytań

141,424 odpowiedzi

319,632 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...