Как назвать операцию вставки в начало
От: b0r3d0m  
Дата: 11.08.16 09:33
Оценка:
Есть ли какое-то общеупотребимое название функции, добавляющей новый элемент в начало списка / динамического массива?

Пока в голову приходит только push_front, по аналогии с std::deque из стандартной библиотеки C++. Может, это как-то одним словом можно элегантно обозвать?
Re: Как назвать операцию вставки в начало
От: Code Digger Грузия  
Дата: 11.08.16 09:45
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

B>Есть ли какое-то общеупотребимое название функции, добавляющей новый элемент в начало списка / динамического массива?


"cons" FTW! :D
Re[2]: Как назвать операцию вставки в начало
От: b0r3d0m  
Дата: 11.08.16 09:50
Оценка:
CD>"cons" FTW! :D
Чёт не понял.
Re: Как назвать операцию вставки в начало
От: tdiff  
Дата: 11.08.16 10:04
Оценка: 4 (1) +1
Здравствуйте, b0r3d0m, Вы писали:

B>Есть ли какое-то общеупотребимое название функции, добавляющей новый элемент в начало списка / динамического массива?


B>Пока в голову приходит только push_front, по аналогии с std::deque из стандартной библиотеки C++. Может, это как-то одним словом можно элегантно обозвать?


prepend
Re: Как назвать операцию вставки в начало
От: koenjihyakkei Россия  
Дата: 11.08.16 10:05
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

B>Есть ли какое-то общеупотребимое название функции, добавляющей новый элемент в начало списка / динамического массива?


B>Пока в голову приходит только push_front, по аналогии с std::deque из стандартной библиотеки C++. Может, это как-то одним словом можно элегантно обозвать?


prepend
Re[3]: Как назвать операцию вставки в начало
От: Lexey Россия  
Дата: 11.08.16 10:23
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

CD>>"cons" FTW! :D

B>Чёт не понял.

Видимо, он это имел в виду.
Любитель функциональщины detected, в общем. Остальные вряд ли поймут.

P.S. push_front вполне нормален, если речь про плюсы. Другие возможные варианты: add_front, insert_front.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[4]: Как назвать операцию вставки в начало
От: b0r3d0m  
Дата: 11.08.16 10:28
Оценка:
L>P.S. push_front вполне нормален, если речь про плюсы. Другие возможные варианты: add_front, insert_front.
Конкретно сейчас речь про Lua, но я спрашиваю про общий случай.
Re[2]: Как назвать операцию вставки в начало
От: b0r3d0m  
Дата: 11.08.16 10:28
Оценка:
T>prepend
Да, тоже вариант, лаконичнее push_front. Спасибо!
Re: Как назвать операцию вставки в начало
От: fin_81  
Дата: 11.08.16 10:33
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

B>Есть ли какое-то общеупотребимое название функции, добавляющей новый элемент в начало списка / динамического массива?


B>Пока в голову приходит только push_front, по аналогии с std::deque из стандартной библиотеки C++. Может, это как-то одним словом можно элегантно обозвать?


Сперва нужно определение "списка" и "динамического массива". Потом посмотрев на определения, придумать "адаптер" (паттерн проектирования). Посмотреть на методы "адаптера" и дать им удобные названия.

А "список" должен быть списком, "динамический массив" — динамическим массивом. И не надо думать при их проектировании о существовании других контейнеров и какие у них есть методы.
Re[2]: Как назвать операцию вставки в начало
От: b0r3d0m  
Дата: 11.08.16 10:36
Оценка:
_>И не надо думать при их проектировании о существовании других контейнеров и какие у них есть методы.
С чего бы?
Re[3]: Как назвать операцию вставки в начало
От: fin_81  
Дата: 11.08.16 10:52
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

_>>И не надо думать при их проектировании о существовании других контейнеров и какие у них есть методы.


B>С чего бы?


Если по определению список никак не зависит от динамического массива, зачем при проектировании списка знать о существовании динамического массива?

А вот когда пишешь "типа обобщенный" код, которому можно подсунуть и список и динамический массив, то пишешь нужные адаптеры под эти контейнеры. И вот для этого адаптера и придумывай красивые названия для метода "вставки в начало".
Re[2]: Как назвать операцию вставки в начало
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 11.08.16 13:21
Оценка:
Здравствуйте, fin_81, Вы писали:

_>Сперва нужно определение "списка" и "динамического массива". Потом посмотрев на определения, придумать "адаптер" (паттерн проектирования). Посмотреть на методы "адаптера" и дать им удобные названия.


Существует мнение, что начинать надо с абстрактной фабрики.
Ce n'est que pour vous dire ce que je vous dis.
Re[3]: Как назвать операцию вставки в начало
От: b0r3d0m  
Дата: 11.08.16 13:28
Оценка:
DR>Существует мнение, что начинать надо с абстрактной фабрики.

Такой?

Re[3]: Как назвать операцию вставки в начало
От: fin_81  
Дата: 11.08.16 13:33
Оценка: +1
Здравствуйте, Don Reba, Вы писали:

DR>Здравствуйте, fin_81, Вы писали:


_>>Сперва нужно определение "списка" и "динамического массива". Потом посмотрев на определения, придумать "адаптер" (паттерн проектирования). Посмотреть на методы "адаптера" и дать им удобные названия.


DR>Существует мнение, что начинать надо с абстрактной фабрики.


Ну дык, я и намекаю, что сперва надо реализовать список и массив, как написано в их определениях. А потом, если уже кривость архитектуры не позволяет обойтись без адаптеров с "вставкой в начало", писать эти адаптеры. Но не надо функциональность этого адаптера запихивать в "список" и "массив". Это прямой путь к https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82
Re[4]: Как назвать операцию вставки в начало
От: Lexey Россия  
Дата: 12.08.16 09:48
Оценка:
Здравствуйте, fin_81, Вы писали:

DR>>Существует мнение, что начинать надо с абстрактной фабрики.


_>Ну дык, я и намекаю, что сперва надо реализовать список и массив, как написано в их определениях. А потом, если уже кривость архитектуры не позволяет обойтись без адаптеров с "вставкой в начало", писать эти адаптеры. Но не надо функциональность этого адаптера запихивать в "список" и "массив". Это прямой путь к https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82


Пора Sinix'а в тред звать. Он вам быстро объяснит, что начинать нужно со сценариев использования. И под них придумывать интерфейсы и реализацию, а не лепить сначала нечто абстрактное, а потом делать из него что-то реально полезное всякими фасадами.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[5]: Как назвать операцию вставки в начало
От: fin_81  
Дата: 12.08.16 13:25
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Пора Sinix'а в тред звать. Он вам быстро объяснит, что начинать нужно со сценариев использования. И под них придумывать интерфейсы и реализацию, а не лепить сначала нечто абстрактное, а потом делать из него что-то реально полезное всякими фасадами.


Сценарии использования чего? Списка и массива в одном коде? Мне каждется здесь сам сценарий кривоват, так как для меня это слабопересекающиеся термины.
Сам по себе паттерн фассад — это попытка из бесполезного/плохого/божественного объекта сделать что-то полезное. То есть присутствие фасада — это признак плохого кода. Для данного конкретного случая, скорее всего, адаптер превратится в фасад.
Re[6]: Как назвать операцию вставки в начало
От: Lexey Россия  
Дата: 12.08.16 17:27
Оценка:
Здравствуйте, fin_81, Вы писали:

_>Сценарии использования чего? Списка и массива в одном коде?


Списка и динамического массива.

_>Мне каждется здесь сам сценарий кривоват, так как для меня это слабопересекающиеся термины.


ТС свои сценарии не приводил, а что ты там себя нафантазировал, никто не знает.
ArrayList (динамический массив) и LinkedList (список) в жабе, например, реализуют один и тот же интерфейс List. И никого это сильно не смущает.

_>Сам по себе паттерн фассад — это попытка из бесполезного/плохого/божественного объекта сделать что-то полезное.


Ну да, конечно:

* make a software library easier to use, understand and test, since the facade has convenient methods for common tasks;
* make the library more readable, for the same reason;
* reduce dependencies of outside code on the inner workings of a library, since most code uses the facade, thus allowing more flexibility in developing the system


Где тут про бесполезное/плохое/божественное?

_>То есть присутствие фасада — это признак плохого кода. Для данного конкретного случая, скорее всего, адаптер превратится в фасад.


Признак плохого кода — это впихивание паттернов везде, где только можно.
А создание простого API (фасада) поверх сложного — это стандартный прием для серьезных библиотек, позволяющий без дублирования кода предоставлять как простой API для базовых задач, так и расширенный для продвинутых.
Вообще, я не вижу никакого смысла разделять термины "фасад" и "адаптер". Это лишь частные случаи врапера.
"Будь достоин победы" (c) 8th Wizard's rule.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.