Decoder/Encode Bezeichnung?



  • Hallo,
    wenn ich eine Klasse habe die sowohl verschlüsseln als auch entschlüsseln kann, wie würdet ihr die am besten nennen? Weil ich stehe jetzt vor folgendem Problem:

    Encoder encoder;
    encoder.encode(myString); // Passt
    encoder.decode(myString); // Passt nicht, warum dekodiert ein "Encoder"?
    

    vs.

    Decoder decoder;
    decoder.encode(myString); // Passt nicht, warum verschluesselt ein "Decoder"?
    decoder.decode(myString); // Passt
    

    Zwei verschiedene Klassen will ich aber auch nicht machen, hätte lieber eine die sich um beides kümmert (tut es ja auch schon und läuft).

    Nur wie nennt man das teil jetzt am besten?



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hi,

    es gibt unterschiedliche Moeglichkeiten:

    1. Nimmt das Verfahren als Klassenname und die Funktionen bleiben gleich

    Base64 b;
    b.decode( b.encode("test") );
    

    2. Verwende freie Funktionen, da es eig keinen Zustand gibt:

    namespace encoding {
        struct Base64 {
            static std::string encode(...);
            static std::string decode(...);
        };
    }
    
    encoding::Base64::encode("test");
    

    Der Vorteil beim Struct mit static Member gegenueber komplett freien Funktionen (zB. base64Encode ) ist, dass du es als Templateparameter nutzen kannst.

    Bspl:

    template<typename T>
    std::string serialize(const unsigned char* buffer) {
        return T::encode(buffer);
    }
    
    serialize<encoding::Base64>("test");
    serialize<encoding::Hex>("test");
    
    Gruessle
    

    en-de-code schrieb:

    Hallo,
    wenn ich eine Klasse habe die sowohl verschlüsseln als auch entschlüsseln kann, wie würdet ihr die am besten nennen? Weil ich stehe jetzt vor folgendem Problem:

    Encoder encoder;
    encoder.encode(myString); // Passt
    encoder.decode(myString); // Passt nicht, warum dekodiert ein "Encoder"?
    

    vs.

    Decoder decoder;
    decoder.encode(myString); // Passt nicht, warum verschluesselt ein "Decoder"?
    decoder.decode(myString); // Passt
    

    Zwei verschiedene Klassen will ich aber auch nicht machen, hätte lieber eine die sich um beides kümmert (tut es ja auch schon und läuft).

    Nur wie nennt man das teil jetzt am besten?



  • Hallo,
    danke für die Antwort! Das mit dem struct und Base64 als name ist eine super idee, so werd ichs machen 👍



  • en-de-code schrieb:

    Hallo,
    wenn ich eine Klasse habe die sowohl verschlüsseln als auch entschlüsseln kann, wie würdet ihr die am besten nennen?

    Ich würde so eine Klasse vermutlich CODEC (coder-decoder) nennen.


Anmelden zum Antworten