Показать сообщение отдельно
Старый 11.01.2013, 20:45
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код по ссылке - ну не совсем бесполезный, конечно, но оставляет желать много лучшего по следующим причинам:
1. писатели пытались скопировать устройство из Явы, и поэтому написали много дурацкого и / или бесполезного кода.
2. писатели не знали, как на самом деле должны работать те или иные вещи (например, списки у них добавляют в конец, а не в начало).
3. в библиотеке нет даже необходимого минимума для работы с коллекциями, типа сортировки, поиска, удаления, конкатенации и т.п. Поскольку п. 1. то людям не пришло в голову использовать функции высшего порядка для реализации таких идей. В общем случае код плохо расширяемый / бессистемный.

Но так чтобы сказать "не используйте это, потому, что есть лучше" - увы, я не в курсе про "лучше", мне не попадалось. Из практических соображений (т.е. скорость работы / тривиальность подавляющего большинства задач, которые приходится решать), отсутствие менее тривиальных коллекций очень редко когда сильно мешало.

Кроме всего прочего, стоит заметить очень наивные реализации всего, что там заявлено и плохое понимание основ AS3. Например:

Код AS3:
public function nextKey(key : *) : * {
    var node : SortedMapNode = getNode(key);
    if (node) {
       node = nextNode_internal(node) as SortedMapNode;
       if (node) return node.key;
    }
    // a function returns undefined, unless otherwise specified.
    return undefined;
}
комментарии мои.

Код AS3:
public function add(key : *, item : *) : Boolean {
    if (key is String) {
    // should be `key in _stringMap' instead.
    // keys are allowed to be undefined, but this doesn't
    // mean they aren't in the hash-table.
    if (_stringMap[key] !== undefined) return false;
    } else {
        if (_keys[key] !== undefined) return false;
    }
    addNode(new SortedMapNode(key, item));
    return true;
}
Опять же, комментарий мой. Наивность реализации заключается в том, что для сортированной хеш-таблицы было бы куда выгоднее использовать массив, или два массива, вместо использования двух (а в реальности трех) хеш таблиц.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 11.01.2013 в 21:00.