Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: czy w klasie czy w main?  (Przeczytany 1107 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