parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

andylars 01.06.2016 09:45 / 01.06.2016 09:47

Мудрёно
Add и куча опций к нему по-моему не сильно «в духе Парсера».
Я, кстати, принудительно старался именно в "духе Парсера" :), заметив, что он скуп на методы, но щедр на опции. Сначала я хотел все привести к методам. Казалось бы, что при одинаковом внутреннем исполнении, сухие методы намного читабельнее по коду.

Предварительно посмотрел на класс List в Golang, и увидел что тот минимум к которому они пришли, это нормальная себе такая пачка методов.

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

В любом случае, это предложение - "болванка" для дальнейшей дискуссии по оптимизации и утряске. Зато я убежден, что эта болванка вроде как очерчивает ~100% области решений и всего зоопарка логической модели, что крутится вокруг всех этих rename, upsert, и прочего зоопарка, который не без оснований нужен и полезен.

Утрясать и отсекать от этой болванки - только "за"!

По крайней мере, этот набор не просто из головы, а из практики.

------------------------------------------
^hash.move[key|index)[options] # переместить ключ
Move — это же delete + insert.
Да, возможно, но для перемещения тогда между delete и insert - в цикле на кажду итерацию, будут нырки из под капота парсера - наверх: присваивание, резолвинг имени хеша (особенно если он длинный), ну или что-то в таком духе...

Я не знаю подкапотного устройства Парсера, поэтому, по-наитию, решил, что выныривание при такой операции поделит производительность ровно на 2. Это как в аналогии с БД: можно вытянуть данные, произвести арифм.операции, а потом вставить их. Но лучше (если есть возможность) отдать арифметику сразу в запросе, не выниривая из БД.

------------------------------
^hash.delete [key|index) # удалить по индексу или названию ключа
Удаление по index — хорошо.
Я предлагал ещё удаление списком.
Мысль о "пачках" была, но не стал ее развивать, а так - да.

-----------------------
^hash.order[order] - изменить порядок следования ключей, тут не знаю, index_asc/desc, key_asc/desc
Есть sort.
Да, проглядел, это лишнее.