Namenskonvention



  • Abend,
    gegeben sind zum Beispiel zwei Klassen, eine fuer Bild-Codecs und eine fuer Sound-Codecs. Beide sind in unterschiedlichen Namespaces, sagen wir img und snd.
    Wuerdet ihr den Namespace quasi als Namensgebern mit nutzen und die Klasse jeweils nur Codec nennen (snd::Codec und img::Codec) oder den Typ mit in den Namen packen: img::ImageCodec und snd::SoundCodec?

    Danke fuer eure Antworten.



  • Ich würde die Codec Klasse danach benennen was sie implementiert, also JpegCodec oder PngCodec oder sowas.
    Bzw. wahrscheinlich wären es 2 Klassen pro Codec, JpegEncoder und JpegDecoder.



  • Wenn du die Klassen in unterschiedlichen Namensräumen gleich nennst, musst du einfach aufpassen, dass du nie using namespace oder using snd::Codec verwendest... Von daher würde ich auch zu spezifischen Namen (so wie hustbaer gesagt hat) raten - oder wenn du nur ein Codec pro Namespace hast, eben einfach ImageCodec und SoundCodec. Aber schlussendlich spielt das auch nicht eine so grosse Rolle 😉



  • Ja, prinzipiell habe ich diese Unterteilung bei den einzelnen Codecs noch einmal (JpegCodec, PngCodec). Das sollen ja nur die Basisklassen sein, die ich in meinem ersten Posting erwaehnt habe.
    Ich mache mir deswegen darueber Gedanken (ja, ich halte mich "gerne" an Kleinigkeiten auf...), weil es auch noch andere Klassen gibt, die so ein Praefix erhalten: ImageError, ImageFormat, ...
    Zusaetzlich habe ich dann noch Klassen wie Pixel (ImagePixel klingt irgendwie komisch...), die nicht so ein Praefix haben (inkonsistent), aber ich kann mir nicht so richtig helfen, ich schwanke immer zwischen beiden erstgenannten Moeglichkeiten.



  • ich würde eher die version nehmen wo du einfach nur den namen benutzt ohne präfix, allerdings finde ich das andere auch nicht falsch

    es kommt immer darauf an was deine sprache gerade bietet, meine überlegung wäre einfach dass code der images und sound bearbeitet eher unterteilt und getrennt ist

    selbst wenn ich ka.. ne collage lade wo ich bilder reinlade und sound dazu abspiele in einer methode wie LoadComposition werde ich wohl nicht alles da drin laden direkt sonder 2 untermethoden machen wie LoadImages und LoadSounds wo ich jeweils den img::Codec und snd::Codec benutze

    und in einer methode "loadsounds" ist es klar wenn ich "Codec" stehen habe dass es sich wohl um nen sound codec handelt und nicht imagecodec

    bei enums in c++ aber haue ich beispielsweise den "namespacenamen" zu den enum namen dazu also sowas wie

    enum Colors { COLOR_BLUE, .. }

    weil man zwar in vc++ die enums über Colors::COLOR_BLUE ansprechen kann (und auch ein einfaches COLORS::BLUE reichen würde wenn man es so genannt hätte) aber der c++ standard eigentlich die enums in den jeweiligen drüber geordneten namespace haut und man auch einfach über COLOR_BLUE ohne das Colors:: davor zugreifen kann

    in java hau ich den enum namen nicht mehr zu den enum elementen dazu

    usw., halt immer so wie es gerade sinn macht, aber für was du dich auch entscheidest, dass wichtigste ist es dir im vorhinein zu überlegen und dann überall einheitlich durch zu ziehen



  • Basisklassen nennt man eher AbstractCodec , CodecBase , GenericCodec , ICodec oder einfach nur Codec . ImageCodec würde ich persönlich nicht machen, is ja schliesslich egal ob man jetzt Image::Codec oder ImageCodec schreibt - die 2 Zeichen machen dann auch schon nixmehr aus.

    Wenn du z.B. einen Library Mississippi schreibst, und die eine eigene Exception Klasse definiert, würdest du die dann Mississippi::MississippiException nennen, oder doch lieber nur Mississippi::Exception ? 😉

    Was ich allerdings vermeide sind Klassen die gleich heissen wie der Namespace in dem sie definiert werden. Wenn man da using macht muss man nämlich u.u. den vollen Namen angeben, also z.B. ::Mississippi::Media::Graphics::Graphics , und das nervt dann schon öfters.



  • Danke fuer eure Antworten, die haben mir sehr geholfen.


Anmelden zum Antworten