Nowe posty

Autor Wątek: czy w klasie czy w main?  (Przeczytany 1110 razy)

KelThuzad

  • Gość
czy w klasie czy w main?
« dnia: 2016-09-04, 20:37:49 »
mam coś takiego w main
   do
    {
        char choice = choice_of_payment.selec_cash_card_or_payment();
        if ( choice == '1' )
        {
            std::cout << "Wybrales\aa zaplate przez gotowke" << std::endl;
        }
        else if ( choice == '2' )
        {
            std::cout << "Wybrales\as zaplate przez carte bankowa" << std::endl;
        }
        else if ( choice == '3' )
        {
            std::cout << "Wybrales\as wplate gotowki na konto" << std::endl;
        }
        else
        {
            std::cerr << "Wybrales\as zla opcje" << std::endl;
           
        }
    }
    while ( !( answer == 'Y' || answer == 'y' ) );
I zastanawiam się czy nie lepiej i przejrzyściej będzie kiedy ten fragment programu wrzucie do jakieś klasy ?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: czy w klasie czy w main?
« Odpowiedź #1 dnia: 2016-09-05, 07:21:32 »
Nie ma reguły. Bardziej sprawa przyzwyczajenia i konkretnego problemu.

Jak ktoś wywodzi się z Javy albo podobnych środowisk - najszybciej jak to się da ucieka z main() w klasy. Tu należą też programy C++ w Qt, gdzie main() ma na ogół z 5 linijek albo WxWidgets, gdzie main() jest generowany makrem wxIMPLEMENT_APP(klasaApp).

Jak ktoś się wywodzi z C albo podobnych środowisk, to traktuje klasy jako "śmieszne struktury z funkcjami" i oblatuje wszystko z main()-a albo zwykłych funkcji wołąnych z main()-a.

Z własnej praktyki - ja zawsze (czy C czy C++) schodzę z main()-em do minimum. W main() mam parsowanie argumentów (jeżeli trzeba), inicjalizowanie podstawowych struktur danych i od razu uciekam do właściwej funkcjonalności realizowanej jako osobna funkcja albo metoda. Jest to przydatne w testach jednostkowych, bo main()-a w prosty sposób nie da się testować (napisałem "w prosty" a nie "w ogóle nie da"!)
« Ostatnia zmiana: 2016-09-05, 07:26:47 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy