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

code review c++

Object Storage Arubacloud
0 głosów
300 wizyt
pytanie zadane 11 czerwca 2022 w C i C++ przez tymek112 Obywatel (1,530 p.)
Witam. Napisałem aplikacje do przeliczania jednostek. Chciałbym was prosić o code review. Napiszcie co zrobiłem dobrze oraz co zrobiłem źle i co można by było robić lepiej. Z góry bardzo dziękuje. Na dole link do GitHub

https://github.com/Tymson122/matemax_repository

3 odpowiedzi

0 głosów
odpowiedź 11 czerwca 2022 przez Milesq Nałogowiec (32,020 p.)

1) nazywasz zmienne po polsku a nie po angielsku

2) generalnie jakość kodu nie jest zbyt dobra :(

pierwszy z brzegu przykład:

        switch (nr_linii)
        {
        case 1: cout << linia << endl; break;
        case 2: cout << linia << endl; break;
        case 3: cout << linia << endl; break;
        case 4: cout << linia << endl; break;
        case 5: cout << linia << endl; break;
        case 6: cout << linia << endl; break;
        case 7: cout << linia << endl; break;
        case 8: cout << linia << endl; break;
        }

po co jest tu ten switch? Każdy case robi to samo.

Kolejna rzecz to masz za dużo else-ifów

komentarz 11 czerwca 2022 przez tymek112 Obywatel (1,530 p.)
Co mogę jeszcze zmienić?
0 głosów
odpowiedź 11 czerwca 2022 przez j23 Mędrzec (194,920 p.)

Odnośnie klasy (pomijam wspomnianego w innej odpowiedzi switcha).

Skoro nazwa metody oznacza jednostkę wartości wejściowej, to po co mimo to podajesz i sprawdzasz jednostkę (parametr a) w kolejnych metodach? Przecież robisz to już w main? Dodatkowo dla każdej metody tworzysz oddzielny obiekt o nazwie podobnej do nazwy metody, którą chcesz na rzecz tego obiektu wywołać (o_centymetrycentymetry). Po co, przecież wystarczy jeden obiekt?

0 głosów
odpowiedź 11 czerwca 2022 przez Great Stary wyjadacz (12,360 p.)
  1. Sprawdzanie czy plik został otwarty:
        ifstream plik("menu.txt");
        if (not plik.is_open()) 
        {
            cerr << "Nie mozna odnalesc pliku z menu!";
            return 1;
        }
    
  2. Wczytywanie z pliku:
    string line; 
    while (getline(plik, line)) 
        cout << line << "\n";
    lub
    cout << plik.rdbuf(); 
    
  3. Używaj tylko języka angielskiego do nazewnictwa kodu.
  4. Nie używaj using namespace std
  5. Nazwa klasy powinna zgadzać się z nazwą pliku (ułatwia orientację w większym projekcie), 
  6. Don't repeat yourself. Cała klasa obliczanie to jedna wielka drabinka ifów powtarzająca te same operacje. Dodanie kolejnej jednostki wymaga sporo wysiłku. 
    Możesz zmapować przeliczniki między jednostkami:
        std::map<string, float> factors {
            {"m", 1},
            {"cm", 0.01},
            {"mi", 0.000621371192},
            {"ca", 39.37},
            {"km", 1000}
        };

    Przykładowa funkcja konwertująca jednostki (zamiana najpierw na metry, później na jednostkę docelową) bez obsługi błędów:

    float convert(float value, string const& unit1, string const& unit2) {
        return value * factors[unit1] / factors[unit2];
    }
    
komentarz 11 czerwca 2022 przez tymek112 Obywatel (1,530 p.)
Dlaczego nie używać using namespace std?
1
komentarz 11 czerwca 2022 przez Wiciorny Ekspert (270,170 p.)
komentarz 12 czerwca 2022 przez j23 Mędrzec (194,920 p.)

@tymek112, możesz używać dyrektywy using namespace std, tylko ograniczaj zasięg jej działania. Czyli nie w nagłówkach, bo otwierasz przestrzeń nazw std wszędzie tam, gdzie załączysz nagłówek z takim wywołaniem, co generalnie nie jest dobre. W plikach źródłowych może być, bo ograniczasz zasięg do danej jednostki kompilacji. Możesz użyć wewnątrz funkcji - takie lokalne otwarcie przestrzeni może poprawić czytelność kodu, a i nie narobi burdelu z nazwami w innych funkcjach czy plikach.

Podobne pytania

+3 głosów
0 odpowiedzi 224 wizyt
0 głosów
1 odpowiedź 156 wizyt
pytanie zadane 30 lipca 2018 w C i C++ przez smokolisz Mądrala (6,340 p.)
0 głosów
1 odpowiedź 64 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...