2010-11-11 11 views
9

L'utilizzo di online dictionary tools non è di grande aiuto. Penso che il modo in cui l'incapsulamento è usato nell'informatica non corrisponda esattamente al suo significato in inglese.Qual è il contrario di incapsulamento?

Qual è il contrario della versione di enciclopedia informatica? Più specificamente, cos'è un antonimo per incapsulare che funzionerebbe come un nome di funzione.


Perché dovrei preoccuparmi? Ecco le mie motivazioni:

// 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

Per prima cosa è necessario rispondere alla domanda: _che cos'è incapsulato? Quindi se dici qualcosa di specifico, puoi invertire l'operazione, diciamo, rendendola pubblica o accessibile, che è qualcosa come pubblicarla. –

risposta

19

L'antonimo è "C".

Ok, sto scherzando. (Sort of.)

I termini migliori che riesco a trovare sono "esporre" e "violare".

+0

"expose" è eccezionale ed è breve.Mi piace molto 'violare' in quanto trasmette anche ciò che sto facendo dando un avvertimento all'utente incauto. –

+0

La Violetta può anche comunicare esattamente come si sentirà l'oggetto riguardo alle tue azioni, ma la personificazione dei frammenti di memoria entra in un territorio più soggettivo ... – cdhowie

+0

Ora, se tu avessi detto "vedi" ... –

8

Lo scopo dietro l'incapsulamento è quello di nascondere/coprire/proteggere. L'antonimo sarebbe rivelato/esposto/reso pubblico.

3

"Rimuovere/interrompere l'incapsulamento" è la cosa più vicina che ho visto, onestamente.

Se si pensa alla parola in senso inglese, incapsulare significa racchiudere in qualcosa. Ma nel senso CS, c'è questo concetto di livelli di protezione e sembra che tu voglia implicare l'elusione dei livelli di accesso, quindi qualcosa come "estrazione" non trasmette realmente il significato che stai cercando.

Ma se ci pensi solo in termini di quali sono i livelli di accesso, sembra che tu stia facendo qualcosa di pubblico quindi, che ne dici di "pubblicizzare"?

0

Che ne dici di "spaghetti"?

+0

Oltre allo scherzo implicito, "spaghetti" è troppo lungo per essere utile, per non parlare di un bugger da digitare. –

+0

Ma copre abbastanza bene questo termine. – boatcoder

+0

Forse "pasta" quindi ;-) –

3

Come su Decapsulation ..

Anche se aint un termine di informatica, ma nella scienza medica, rimozione chirurgica di una capsula o membrana avvolgente .. Partenza here ..

+3

Scena: (In un bar affollato dopo il lavoro) Dev1 dice a Dev2, "Che cosa hai fatto oggi?" Dev2 risponde, "Ho dovuto decapsulare il codice di qualcuno." Folla vicina, pensando di aver sentito "Ho dovuto decapitare qualcuno", dà sguardi e spalle buffe. –

2

Come su " Cattiva idea"?

+0

Stai dicendo che rompere l'incapsulamento per i test unitari è una cattiva idea? O che il mio approccio è una cattiva idea? –

2

Questa non è una domanda così semplice - Scott Meyers ha avuto un interessante articolo per dimostrare alcune delle sfumature intorno all'incapsulamento here.

Comincerò con la battuta finale: Se si sta scrivendo una funzione che può essere implementato sia come membro o come non-amico non membro, si dovrebbe preferire per la sua attuazione come una funzione non membro . Questa decisione aumenta l'incapsulamento di classe . Quando pensi all'incapsulamento , dovresti pensare alle funzioni non membro .

+0

Quindi la mia domanda non dovrebbe riguardare l'incapsulamento. Dovrei chiedere un verbo per descrivere la rottura dei livelli di protezione degli accessi di un oggetto. –

+1

Non chiaro. Se dichiari i membri pubblici, li rendi esplicitamente disponibili. Un 'amico' indesiderato è il meglio che riesco a pensare. Che ne dite di 'unfriend' o' frenemy' (un nome, ma avete un'idea)? –

0

Il vero controsenso di "incapsulamento" è "stato globale".

+0

Uno stato globale potrebbe essere incapsulato: se si utilizza immutable.js con un'unica fonte di verità (stato centrale), si dispone di uno stato globale incapsulato (a cui si accede tramite un'interfaccia più che direttamente). – Izhaki