• 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

VPS Starter Arubacloud
+2 głosów
4,349 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,078 wizyt
+4 głosów
1 odpowiedź 2,513 wizyt
+1 głos
0 odpowiedzi 5,545 wizyt

93,025 zapytań

141,990 odpowiedzi

321,293 komentarzy

62,374 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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...