1. C++ / Говнокод #25185

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    class TcpClient
    {
    public:
        //...
        enum ErrCode{
            REZ_OK = 0,
            REZ_ERR,
            REZ_NO_NEW_DATA,
            REZ_NEW_DATA
        };
        //...
    };
    ...
    class UdpPort
    {
    public:
        //...
        enum ErrCode{
            REZ_OK = 0,
            REZ_ERR,
            REZ_NO_NEW_DATA,
            REZ_NEW_DATA
        };
        //...
    };
        //...
        // Потом в коде:
        ErrCode rez = (rtcPort_.setupPort(portSettings) == WrapperSystemSockets::UdpPort::ErrCode::REZ_OK) ? ErrCode::REZ_OK : ErrCode::REZ_ERR;

    Enum головного мозга.

    Запостил: elapidae, 13 Декабря 2018

    Комментарии (8) RSS

    • Ненуачо. У каждого протокола свои енумы, и смешивать их не стоит. А вдруг в один придется что-то собственное добавить?
      Ответить
    • кончал в рот этой программе
      Ответить
    • На самом деле, там еще интереснее: методы open(), close() в случае успеха возвращают REZ_OK, а в случае провала -- REZ_ERR. А метод read() в случае успеха возвращает REZ_NEW_DATA, а в случае провала может вернуть и REZ_ERR и REZ_NO_NEW_DATA.
      А что, логично.
      Ответить
      • М-да.
        (единственно любопытно - rez это rezult или rezultat?)
        Ответить
      • > А метод read() в случае успеха возвращает REZ_NEW_DATA, а в случае провала может вернуть и REZ_ERR и REZ_NO_NEW_DATA.

        EOF vs no new data?

        без кода сложно сказать. но на первый взгляд не говно.

        даже что два энума - это тоже на первый взгляд не говно. потому что у TCP и UDP разные семантики, и как следствие разные реакции на ошибки. хотя факт что у обоих не хватает кодов ошибок, настораживает.

        в общем случае: все прокладки над BSD сокетами - они все говно. бсд сокеты они уже сами по себе прокладки, и еще больше прокладок к ним не надо (исключение: винды и WinSockets). все прокладки какие видел все говно потому что: либо фич не хватает, либо обработка ошибок кривая, либо все вместе.
        Ответить

    Добавить комментарий