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

[CR] C++ (#9): Własne funkcje. Podejście proceduralne

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+2 głosów
4,388 wizyt
pytanie zadane 8 kwietnia 2016 w Nasze poradniki przez Mirosław Zelent Nałogowiec (34,780 p.)

CR = Code Review. O co chodzi? Zajrzyj tutaj
Pełna lista wszystkich Code Review? Zajrzyj tutaj

https://www.youtube.com/watch?v=HHplT1A4_A4

Kod z odcinka:

#include <iostream>

using namespace std;

float metry;

float ile_cali(float m)
{
   return m*39.37;
}

float ile_jardow(float x);

void ile_mil(float m)
{
   cout<<"na mile: "<<m*0.0006213;
}

int main()
{
    cout << "Podaj ile metrow: ";
    cin>>metry;

    cout<<"na cale: "<<ile_cali(metry)<<endl;
    cout<<"na jardy: "<<ile_jardow(metry)<<endl;
    ile_mil(metry);

    return 0;
}

float ile_jardow(float x)
{
   return x*1.0936;
}

Paczka z odcinka: POBIERZ​

1 odpowiedź

–1 głos
odpowiedź 20 kwietnia 2019 przez mikolaj.k Obywatel (1,430 p.)

Musiałem obejrzeć 2 razy, żeby zrozumieć. Wydaje mi się, że przykład jest zbyt zawiły i gdyby wyglądał tak:

#include <iostream>

using namespace std;

float metry;

//FUNKCJE
float ile_cali(float x)
{
    return x*39.37;
}

float ile_jardow(float x)
{
    return x*1.0936;
}

float ile_mil(float x)
{
    return x*0.0006213;
}

//PROCEDURY
void ile_cali_proc(float x)
{
    cout<<"na cale: "<<x*39.37<<endl;
}

void ile_jardow_proc(float x)
{
    cout<<"na jardy: "<<x*1.0936<<endl;
}

void ile_mil_proc(float x)
{
    cout<<"na mile: "<<x*0.0006213<<endl;
}


int main()
{
    cout<<"KONWERSJA PRZY UZYCIU FUNKCJI"<<endl;
    cout << "Ile metrow: ";
    cin>>metry;
    cout<<"na cale: "<<ile_cali(metry)<<endl;
    cout<<"na jardy: "<<ile_jardow(metry)<<endl;
    cout<<"na mile: "<<ile_mil(metry)<<endl;
    cout<<endl;

    cout<<"KONWERSJA PRZY UZYCIU PROCEDUR"<<endl;
    ile_cali_proc(metry);
    ile_jardow_proc(metry);
    ile_mil_proc(metry);
    return 0;
}

to przerobienie tego odcinka zajęłoby mi połowę mniej czasu.

Po pierwsze proponowałbym zrobić cały konwerter w dwóch wersjach: na funkcjach i na procedurach. Po drugie wszystkie zmienne lokalne oznaczyłbym jako literę "x". Ma to sens?

1
komentarz 20 kwietnia 2019 przez Hiskiel Pasjonat (22,830 p.)
edycja 21 kwietnia 2019 przez Hiskiel
Nie. Dlaczego?
1. Zmienna globalna "metry". Po pierwsze, globalna, po drugie po polsku.
2. Wszystko powinno być nazwane po angielsku.
3. Zmienne lokalne jako 'x'? Nie. Dlaczego? Bo zmienne muszą coś reprezentować.
4. Te procedury są bezsensu. Z tego co wiem nazywa się to "głośną funkcją". Funkcje raczej nie powinny robić nic więcej, niż to co mają robić. Czyli, jeśli masz funkcję, która konwertuje jednostkę na jednostkę, to powinna ona tylko to zrobić i zwrócić wynik (ew. przyjąć przez referencję/wskaźnik i zmodyfikować, ale to podejście jest rzadko używane).
komentarz 21 kwietnia 2019 przez mikolaj.k Obywatel (1,430 p.)
OK, dzięki za komentarz.

Podobne pytania

+1 głos
0 odpowiedzi 3,113 wizyt
+4 głosów
1 odpowiedź 2,540 wizyt
+1 głos
0 odpowiedzi 5,563 wizyt

93,104 zapytań

142,079 odpowiedzi

321,591 komentarzy

62,446 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...