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-IdiomMfG 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.