Что такое антоним инкапсуляции? - PullRequest
10 голосов
/ 11 ноября 2010

Использование инструментов онлайн-словаря не очень помогает. Я думаю, что использование инкапсуляции в компьютерной науке не совсем соответствует ее значению на простом английском языке.

Что является антонимом инкапсуляционной версии информатики? В частности, что такое антоним для encapsulate, который будет работать как имя функции.


Почему меня это должно волновать? Вот моя мотивация:

// 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 );
}

Ответы [ 8 ]

20 голосов
/ 11 ноября 2010

Антоним "С".

Хорошо, шучу. (Вроде.)

Лучшие термины, которые я могу придумать, это «разоблачить» и «нарушить».

9 голосов
/ 11 ноября 2010

Цель инкапсуляции - спрятать / укрыть / защитить.Антоним будет раскрыт / разоблачен / обнародован.

4 голосов
/ 11 ноября 2010

Как насчет декапсуляции ..

Хотя это и не термин компьютерной науки, но в медицинской науке Хирургическое удаление капсулы или оболочки оболочки. Проверьте здесь ..

3 голосов
/ 11 ноября 2010

Это не такой простой вопрос - у Скотта Мейерса была интересная статья, демонстрирующая некоторые нюансы, связанные с инкапсуляцией здесь .

Начну с изюминки:Если вы пишете функцию, которая может быть реализована как член или не являющийся другом, не являющийся членом, вы должны предпочесть реализовать ее как функцию, не являющуюся членом.Это решение увеличивает инкапсуляцию класса.Когда вы думаете об инкапсуляции, вы должны думать о функциях, не являющихся членами.

3 голосов
/ 11 ноября 2010

«Удаление / разрушение инкапсуляции», честно говоря, о самой близкой вещи, которую я видел.

Если вы думаете о слове в английском смысле, заключить в капсулу означает заключить в чем-то. Но в смысле CS есть такая концепция уровней защиты, и похоже, что вы хотите подразумевать и обход уровней доступа, поэтому что-то вроде «извлечения» на самом деле не дает того значения, которое вы ищете.

Но если вы просто думаете об этом с точки зрения уровней доступа, похоже, что вы делаете что-то публичное, как насчет "публикации"?

2 голосов
/ 11 ноября 2010

Как насчет "Плохой Идеи"?

1 голос
/ 11 ноября 2010

Настоящим антонимом «Инкапсуляция» является «Глобальное состояние».

0 голосов
/ 11 ноября 2010

Как насчет "спагетти"?

...