Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как мне назвать этот класс коллекции?

Автор вопроса: Leandro CanigliaОтветов: 2

Представьте себе подкласс Collection, который знает блок select и блок collect. Экземпляр этого класса оборачивает другой collection и динамически применяет к нему эти блоки. Так, например, #do: реализован как

do: aBlock
    collection
        select: [:element | select value: element]
        thenDo: [:element | | v |
            v := collect value: element.
            aBlock value: v]]

Итак, вопрос в том, как мне назвать этот класс? Я назвал его WrappedCollection, но это имя двусмысленно, и, кроме того, эта штука уже должна существовать и иметь имя.

Кстати, это очень похоже на Subclassing Stream, за исключением того, что у меня не Stream.

  • Как насчет TransformedSelection Lyn Headley 10.04.2015
  • @LynHeadley, спасибо за подсказку, это хорошо. Я внес его в свой список. Leandro Caniglia 11.04.2015
  • @LynHeadley, почему бы тебе не сделать это ответом вместо комментария? Sean DeNigris 12.04.2015

naming-conventionssmalltalk

Ответы

Ответ 1 · рейтинг 1 · Max Leske

Блоки select и collect звучат для меня как критерии состояния. Так что, возможно, вы могли бы назвать класс ConditionalCollection, подразумевая, что коллекция изменяется в ответ на применяемые условия.

И еще одна идея, которая у меня только что возникла: FilteredCollection.

Ответ 2 · рейтинг 1 · Leandro Caniglia

Наконец-то мы решили использовать DerivedCollection. Учитывая, что эти объекты представляют наборы, полученные из других источников, подобно тому как математические наборы могут быть определены намерением, а не расширением, мы выбрали имя, которое не раскрывает их внутреннее представление. .

Кстати, DerivedCollection особенно полезны для фильтрации (#select:) и преобразования (#collect:) больших объемов данных, которые мы представляем с помощью экземпляров StoredArray, разновидности Array, которая хранит свои элементы на диске.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы