Helpers and Wrappers
От: XJess  
Дата: 27.09.10 07:46
Оценка:
Привет всем!
Возможно, я не в тот форум пишу, но модераторы разберутся, если что. Возникла некоторая путаница у меня в голове в этих двух понятиях. Я всегда думала, что Helpers — это классы, которых кто-то использует, а Wrappers — это класс-обертка, который внутри вызывает методы какого-то другого класса, т. е. который использует кого-то другого.

Так вот — мой один знакомый пишет классы, которые вызывают только public-методы какого-то другого класса, например (пример крайне утрирован, но идея такая), и называет эти классы Helper, а не Wrapper:

class List
{
public:
bool Add(какой-то тип элемента);
...
private:
...
};

class ListHelper
{
public:
bool AddRange(что-то там передается в виде диапазона);
};

bool ListHelper::AddRange(что-то там передается в виде диапазона)
{
// Вызывает внутри Add
}

Кстати, вот какой перевод одного из понятий дает Яндекс.Словари:

wrapper class
C++
интерфейсный класс (класс, назначение которого состоит в обеспечении альтернативного интерфейса объектов другого класса)


Вопрос — правильно ли называть такой класс Helper?
Re: Helpers and Wrappers
От: Blazkowicz Россия  
Дата: 27.09.10 07:53
Оценка:
Здравствуйте, XJess, Вы писали:

XJ>Вопрос — правильно ли называть такой класс Helper?

Helper не правильно называть никакой класс вообще. Это просто свидетельствует о недостаточном понимании назначения класса и знании стандартных терминов. Класс Helper это класс, который что-то делает. А делать он может что угодно.
Wrapper это тоже слово неоднозначно характеризующие назначение обертки. Хотя уже использование гораздо более понятно из названия, чем Helper. И особо криминального в его использовании ничего нет. Но, например Adapter это то же зачастую wrapper. И delegate тоже. Зато из их названий назначение класса гораздо более понятно.
Re: Helpers and Wrappers
От: andy1618 Россия  
Дата: 27.09.10 09:30
Оценка:
Здравствуйте, XJess, Вы писали:

XJ>Привет всем!

XJ>Возможно, я не в тот форум пишу, но модераторы разберутся, если что. Возникла некоторая путаница у меня в голове в этих двух понятиях. Я всегда думала, что Helpers — это классы, которых кто-то использует, а Wrappers — это класс-обертка, который внутри вызывает методы какого-то другого класса, т. е. который использует кого-то другого.

У нас в текущем проекте есть договорённость называть хелперами вспомогательные изолированные классы, представляющие собой набор статических методов для решения каких-то схожих сложных задач (например, TwoDimensionGeometryHelper). Цель — абстрагирование от понятийной базы проекта и удобство написания юнит-тестов.
Но в последнее время стараемся избегать использования суффикса "Helper" и вместо него придумывать более говорящие слова.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.