2010-11-11 10 views
9

Die Verwendung von online dictionary tools hilft nicht wirklich. Ich denke, die Art und Weise, wie der Begriff Encapsulate in der Informatik verwendet wird, entspricht nicht genau seiner Bedeutung im einfachen Englisch.Was ist das Antonym der Verkapselung?

Was ist das Antonym der Computer Science-Version von Encaspulate? Genauer gesagt, was ist ein Antonym zum Einkapseln, das als Funktionsname funktionieren würde.


Warum sollte mich das interessieren? Hier ist meine Motivation:

// A class with a private member variable; 
class Private 
{ 
public: 
    // Test will be able to access Private's private members; 
    class Test; 
private: 
    int i; 
} 

// Make Test exactly like Private 
class Private::Test : public Private 
{ 
public: 
    // Make Private's copy of i available publicly in Test 
    using Private::i; 
}; 

// A convenience function to quickly break encapsulation on a class to be tested. 
// I don't have good name for what it does 
Private::Test& foo(Private& p) 
{ return *reinterpret_cast<Private::Test*>(&p); } // power cast 

void unit_test() 
{ 
    Private p; 
    // using the function quickly grab access to p's internals. 
    // obviously it would be evil to use this anywhere except in unit tests. 
    assert(foo(p).i == 42); 
} 
+0

Zuerst müssen Sie die Frage beantworten: _what_ ist gekapselt? Wenn Sie dann etwas Bestimmtes sagen, dann können Sie die Operation umkehren, indem Sie sie zum Beispiel öffentlich machen oder zugänglich machen. –

Antwort

19

Das Antonym ist "C".

Ok, nur Spaß. (Sortierung.)

Die besten Begriffe, die ich mir vorstellen kann, sind "expose" und "violate".

+0

'expose' ist großartig und es ist kurz.Ich mag wirklich "verletzen", da es auch vermittelt, was ich mache, während ich den unachtsamen Benutzer warne. –

+0

Verletzung kann auch genau vermitteln, wie das Objekt über Ihre Handlungen fühlen wird, aber Personifizierung von Bits der Erinnerung gelangt in mehr subjektives Territorium ... – cdhowie

+0

Nun, wenn Sie gesagt hatten "sehen" ... –

8

Der Zweck hinter der Kapselung ist das Verbergen/Abdecken/Schützen. Das Antonym würde enthüllen/ausstellen/öffentlich machen.

3

"Entfernen/Brechen Verkapselung" ist über die nächste Sache, die ich gesehen habe, ehrlich gesagt.

Wenn Sie an das Wort im englischen Sinne denken, bedeutet Verkapseln bedeutet, in etwas zu umschließen. Aber im CS-Sinne gibt es dieses Konzept von Schutzleveln und es sieht so aus, als wollten Sie auch die Zugriffsebenen umschreiben, also liefert etwas wie "Extraktion" nicht wirklich die gesuchte Bedeutung.

Aber wenn Sie nur daran denken, was die Zugriffsebenen sind, sieht es so aus, als würden Sie etwas öffentlich machen, wie wäre es mit "Bekanntmachen"?

0

Wie wäre es mit "Spaghetti"?

+0

Neben dem implizierten Witz ist "Spaghetti" zu lang, um nützlich zu sein, ganz zu schweigen von einem Typfehler. –

+0

Aber es deckt diesen Begriff ziemlich gut ab. – boatcoder

+0

Vielleicht "Pasta" dann ;-) –

3

Wie wäre es Decapsulation ..

Obwohl es ein Informatik Begriff, aber in der medizinischen Wissenschaft aint, Chirurgische Entfernung einer Kapsel oder Hüllenmembran .. Check out here ..

+3

Szene: (In einer überfüllten Bar nach Feierabend) sagt Dev1 zu Dev2: "Was hast du heute gemacht?" Dev2 antwortet: "Ich musste Code entschlüsseln." Menschenmenge in der Nähe, in der Meinung, es sei "Ich musste jemanden enthaupten", sieht komisch aus und weicht zurück. –

2

Wie wäre es " Schlechte Idee"?

+0

Sie sagen, dass eine Kapselung für Komponententests eine schlechte Idee ist? Oder dass mein Ansatz eine schlechte Idee ist? –

2

Dies ist nicht so eine einfache Frage - Scott Meyers hatte einen interessanten Artikel, um einige der Nuancen rund um die Kapselung zu demonstrieren here.

ich mit der Pointe beginnen werde: Wenn Sie eine Funktion schreiben, welcher sich als Mitglied oder als Nicht-Freund Dritt umgesetzt werden können, sollten Sie bevorzugen es zu implementieren, wie eine Nicht-Mitglied Funktion. Diese Entscheidung erhöht Klasse Kapselung. Wenn Sie denken, Verkapselung, sollten Sie denken, Nicht-Mitglieder-Funktionen.

+0

Also sollte meine Frage nicht über Kapselung sein. Ich sollte nach einem Verb fragen, um Zugriffsschutz-Objektniveaus zu beschreiben. –

+1

Nicht klar. Wenn Sie Mitglieder öffentlich machen, machen Sie sie explizit verfügbar. Ein unerwünschter Freund ist das Beste, was ich mir vorstellen kann. Wie wäre es mit 'unfriend' oder' frenemy' (ein Substantiv, aber Sie bekommen die Idee)? –

0

Das wahre Gegenteil von "Encapsulation" ist "Global State".

+0

Ein globaler Zustand kann gut gekapselt sein - wenn Sie immutable.js mit einer einzigen Wahrheitsquelle (zentraler Zustand) verwenden, haben Sie einen globalen Zustand, der gekapselt ist (Zugriff über einen Schnittstellen-Rater als direkt). – Izhaki