2010-11-11 11 views
9

Usar online dictionary tools realmente no ayuda. Creo que la forma en que se encapsula el uso en ciencias de la computación no coincide exactamente con su significado en inglés sencillo.¿Cuál es el antónimo de encapsulación?

¿Cuál es el antónimo de la versión informática de encaspulate? Más específicamente, ¿qué es un antónimo para encapsular que funcionaría como un nombre de función?


¿Por qué debería importarme? Aquí está mi motivación:

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

Primero debe responder la pregunta: _what_ está encapsulado? Luego, si dice algo específico, puede revertir la operación, por ejemplo, haciéndola pública o accesible, que es como publicarla. –

Respuesta

19

El antónimo es "C".

Ok, es broma. (Más o menos.)

Los mejores términos que se me ocurren son "exponer" y "violar".

+0

'exponer' es genial y es corto.Me gusta mucho 'violar', ya que también transmite lo que estoy haciendo mientras advierto al usuario incauto. –

+0

Violar también puede transmitir exactamente cómo se sentirá el objeto acerca de sus acciones, pero la personificación de los bits de la memoria entra en un territorio más subjetivo ... – cdhowie

+0

Ahora, si hubiera dicho "ver" ... –

8

El propósito de la encapsulación es ocultar/cubrir/proteger. El antónimo sería revelar/exponer/hacer público.

3

"Eliminar/romper la encapsulación" es lo más parecido que he visto, sinceramente.

Si piensa en la palabra en el sentido inglés, encapsular significa encerrar dentro de algo. Pero en el sentido CS, existe este concepto de niveles de protección y parece que también implica eludir los niveles de acceso, por lo que algo como "extracción" realmente no transmite el significado que está buscando.

Pero si solo lo piensas en términos de los niveles de acceso, parece que estás haciendo algo público, entonces, ¿qué tal "publicitar"?

0

¿Qué tal "spaghetti"?

+0

Además de la broma implícita, 'spaghetti' es demasiado largo para ser útil, sin mencionar que es un insector para escribir. –

+0

Pero cubre este término bastante bien. – boatcoder

+0

Quizás "pasta" ;-) –

3

¿Qué tal Decapsulation ..

Aunque aint un término de la informática, pero en la ciencia médica, La extirpación quirúrgica de una cápsula o membrana envolvente .. Salida here ..

+3

Escena: (En un bar abarrotado después del trabajo) Dev1 le dice a Dev2, "¿Qué hiciste hoy?" Dev2 responde: "Tuve que desencapsular el código de alguien". Multitud cerca, pensando que escuchó "Tuve que decapitar a alguien", me mira con expresión divertida y retrocede. –

2

¿Qué tal " Mala idea"?

+0

¿Está diciendo que romper la encapsulación para pruebas unitarias es una mala idea? ¿O que mi enfoque es una mala idea? –

2

Esto no es una pregunta tan simple - Scott Meyers tenía un artículo interesante para demostrar algunos de los matices de la encapsulación here.

Voy a empezar con el remate: Si estás escribiendo una función que puede ser implementar como un miembro o como no amigo no miembro, que debe prefieren implementarlo como una función no miembro . Esa decisión aumenta la encapsulación de clase . Cuando piense en el encapsulamiento , debe pensar en funciones no miembro.

+0

Así que mi pregunta no debería ser sobre encapsulación. Debo pedir un verbo para describir romper el acceso-protección-niveles-de-un-objeto. –

+1

No está claro. Si declaras miembros públicos, explícalos para que estén disponibles. Un "amigo" no deseado es lo mejor que se me ocurre. ¿Qué tal 'unfriend' o' frenemy' (un sustantivo, pero entiendes la idea)? –

0

El verdadero antónimo de "Encapsulación" es "Estado global".

+0

Un estado global bien puede estar encapsulado: si utiliza immutable.js con una sola fuente de verdad (estado central), tiene un estado global que está encapsulado (se accede a través de un evaluador de interfaz que directamente). – Izhaki