Design - Was haltet ihr von diesem Aufbau....



  • Mal ne Design Frage was haltet ihr von dem Aufbau hier:

    //##############################################################################
    #ifndef ASL_URI_PARSER_HPP
    #define ASL_URI_PARSER_HPP
    //##############################################################################
    namespace asl
    {
      namespace URI
      {
        class Parser
        {
          public:
                        Parser();
                        Parser(const Parser& copy);
                       ~Parser();
    
          const Parser& operator=(const Parser& copy);
    
          private:
    
          struct ParserImpl;
          boost::shared_ptr<ParserImpl*> pimpl;
    
        };
      } // namespace asl::URI
    } // namespace asl  
    //##############################################################################
    #endif // ASL_URI_PARSER_HPP
    //##############################################################################
    
    //##############################################################################
    #ifndef ASL_HTTP_CLIENT_HPP
    #define ASL_HTTP_CLIENT_HPP
    //##############################################################################
    
    namespace asl
    {
      namespace HTTP
      {
        // HTTP-Client 
        class Client
        {
          public:
                        Client();
                        Client(const Client& copy);
                       ~Client();
    
          const Client& operator=(const Client& copy);
    
          private:
    
          struct ClientImpl;
          boost::shared_ptr<ClientImpl*> pimpl;
    
        };
      }// namespace asl::HTTP
    } // namespace asl
    
    //##############################################################################
    #endif // ASL_HTTP_CLIENT_HPP
    //##############################################################################
    
    //##############################################################################
    #ifndef ASL_HTTP_SERVER_HPP
    #define ASL_HTTP_SERVER_HPP
    //##############################################################################
    
        // HTTP-Server 
        class Server
        {
          public:
                        Server();
                        Server(const Server& copy);
                       ~Server();
    
          const Server& operator=(const Server& copy);
    
          private:
    
          struct ServerImpl;
          boost::shared_ptr<ServerImpl*> pimpl;
    
        };
    
      }// namespace asl::HTTP
    } // namespace asl
    
    //##############################################################################
    #endif // ASL_HTTP_SERVER_HPP
    //##############################################################################
    
    //##############################################################################
    #ifndef ASL_HTTP_STATUSCODE_STATUSCODES_HPP
    #define ASL_HTTP_STATUSCODE_STATUSCODES_HPP
    //##############################################################################
    
    namespace asl
    {
      namespace HTTP
      {
        namespace STATUSCODE
        {
          enum StatusCodes
          {
            OK                  = 200, // Ok
            MOVED_PERMANENTLY   = 301, // Moved permanently
            MOVED_TEMPORARLY    = 302, // Moved temporarly
            BAD_REQUEST         = 400, // Bad request
            UNAUTHORIZED        = 401, // Unauthorized
            FORBIDDEN           = 403, // Forbidden
            NOT_FOUND           = 404, // Not found
            SERVERERROR         = 500, // Internal server error
            SERVICE_UNAVAILABLE = 501  // Service unvailable
          };
        } // namespace asl::HTTP::STATUSCODE
      } // namespace asl::HTTP
    } // namespace asl
    
    //##############################################################################
    #endif // ASL_HTTP_STATUSCODE_STATUSCODES_HPP
    //##############################################################################
    

    Ich bin offen für Verbesserungsvorschläge.

    Falls sich jemand fragt für was das

    struct ServerImpl;
          boost::shared_ptr<ServerImpl*> pimpl;
    

    gut ist. Sollte er sich mal mit der "(More) Exceptional" - Buchreihe von Herb Sutter vertraut machen. Das ist das sogenannte Pimpl-Idiom

    MfG eViLiSSiMo



  • Meinst du nicht, du übertreibst es mit den namespaces ein wenig? Bei sovielen Namespaces gibts dann eben keine Kollisionen zwischen Klassennamen, sondern zwischen namespace-Namen *g*



  • rofl. das kann man ja wohl noch kein Design nennen. Da hättest du uns ja auch einfach schreiben können welche Klassen du hast. Ist ja jede Gleich...



  • ganz so drastisch wollte ich's nicht formulieren. Wenn ich einfach class X {}; schreibe, dann hat die ebenfalls Ctor, Copy-Ctor, Dtor und op=. Der private-Teil interessiert beim Design zunächst mal nicht, pimpl ist ja nur Implementierungsdetail... also, wo ist das Design?



  • eViLiSSiMo schrieb:

    Mal ne Design Frage was haltet ihr von dem Aufbau hier:

    Die frage galt dem Aufbau / Aufteilung der Klassen und Unterteilung in die Namespaces. nicht wirklich um Implementationsdetails.

    😞 Da ich anscheinend sowieso nur dumme Antworten bekomme, lass ich es.

    Ich erwarte keine Antwort mehr.

    MfG



  • Was hast Du denn erwartet? Wir haben die Implementierungsdetails ja auch garnicht betrachtet. Du wolltest also wissen, ob das so toll ist mit den vielen Namespaces und daß Deine Klassennamen toll sind oder was? Ich könnte gerademal anhand des Klassennamens raten, ob es sinnvoll ist sone Klasse zu machen. Da Du nichtmal ne Schnittstelle bietest kann man da auch nicht drüber reden.

    Poste einen Entwurf, dann diskutieren wir auch gerne drüber. Aber behaupte nicht Du postest nen Entwurf und in Wirklichkeit willst Du nur hören, daß Du vorbildlich namespaces benutzt. Heulsuse! 🙄



  • Boah eViLiSSiMo du bist wohl voll schlecht drauf im moment.



  • eViLiSSiMo schrieb:

    😞 Da ich anscheinend sowieso nur dumme Antworten bekomme, lass ich es.

    Anscheinend hast du nur Lob erwartet, denn mit etwas anderem scheinst du nicht umgehen zu können 🙄 .



  • eViLiSSiMo schrieb:

    Mal ne Design Frage was haltet ihr von dem Aufbau hier:

    Falls sich jemand fragt für was das
    [cpp]
    struct ServerImpl;
    boost::shared_ptr<ServerImpl*****> pimpl;
    [/cpp]
    gut ist. Sollte er sich mal mit der "(More) Exceptional" - Buchreihe von Herb Sutter vertraut machen. Das ist das sogenannte Pimpl-Idiom

    MfG eViLiSSiMo

    für pimpl braucht man so was:

    boost::shared_ptr<ServerImpl> pimpl;
    


  • Ich denke mal er wird wohl wissen wie ihr seine QUelltext Organisation findet... mit den Kommentare ( //##### ) und so...



  • Es reicht jetzt.


Anmelden zum Antworten