2010-11-11 2 views
9

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

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


Почему меня это беспокоит? Вот моя мотивация:

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

Сначала вам нужно ответить на вопрос: _what_ инкапсулирован? Затем, если вы говорите что-то конкретное, вы можете отменить операцию, скажем, сделать ее общедоступной или доступной, что-то вроде публикации. –

ответ

19

Антоним - это "С".

Хорошо, просто шучу. (Сорт.)

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

+0

«Выставить» отлично, и он короткий.Мне очень нравится «нарушать», поскольку он также передает то, что я делаю, предоставляя предупреждение неосторожному пользователю. –

+0

Нарушение может также точно передать, как объект будет относиться к вашим действиям, но олицетворение бит памяти переходит в более субъективную территорию ... – cdhowie

+0

Теперь, если бы вы сказали «см.» ... –

8

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

3

«Удаление/разрыв инкапсуляции» - это самое близкое, что я видел, честно говоря.

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

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

0

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

+0

Помимо подразумеваемой шутки, «спагетти» слишком длинны, чтобы быть полезными, не говоря уже о том, как набирать пугало. –

+0

Но он действительно закрывает этот термин довольно хорошо. – boatcoder

+0

Возможно, «pasta» then ;-) –

3

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

Хотя AINT термин компьютерной науки, но и в медицинской науке, хирургическое удаление капсулы или обволакивающей мембраны .. Заканчивать here ..

+3

Сцена: (В переполненном баре после работы) Dev1 говорит Dev2: «Что вы делали сегодня?» Ответ Dev2: «Мне пришлось декапсулировать код someones». Толпа рядом, думая, что она слышала: «Мне пришлось обезглавить кого-то», придает смешные взгляды и отступает. –

2

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

+0

Вы говорите, что нарушение инкапсуляции для модульных тестов - плохая идея? Или что мой подход - плохая идея? –

2

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

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

+0

Итак, мой вопрос не должен касаться инкапсуляции. Я должен попросить глагол описать нарушение доступа-защиты-уровней-объекта. –

+1

Непонятно. Если вы объявляете участников публичными, вы явно делаете их доступными. Нежелательный «друг» - лучшее, что я могу придумать. Как насчет 'unfriend' или' frenemy' (существительное, но вы получаете идею)? –

0

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

+0

Глобальное состояние вполне может быть инкапсулировано - если вы используете immutable.js с единственным источником правды (центральное состояние), у вас есть глобальное состояние, которое инкапсулируется (доступ через интерфейс rater, чем напрямую). – Izhaki

Смежные вопросы