• 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

+2 głosów
4,720 wizyt
pytanie zadane 8 kwietnia 2016 w Nasze poradniki przez Mirosław Zelent Nałogowiec (34,930 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,336 wizyt
+4 głosów
1 odpowiedź 2,928 wizyt
+1 głos
0 odpowiedzi 5,751 wizyt

93,607 zapytań

142,530 odpowiedzi

323,001 komentarzy

63,098 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

Kursy INF.02 i INF.03
...