Здравствуйте, rg45, Вы писали:
R>Во-вторых, а нафига было отдавать этот вектор какому-то объекту класса, если потом всё равно забирать?
Только лишь по одной причине — мы люди и нам удобнее код разбивать на функции, удобнее манипулировать объектами — так легче управлять.
Если бы не наша человечность и свойственные нашей психике паттерны восприятия — то не нужно было бы разбивать код на множество функций и создавать объекты — все бы писалось одним большим куском в машинных кодах.
R>Смотри, что получается, на входе у тебя какие-то входные данные для создания пакета, на выходе — вектор байт. То есть, это простая функция без побочных эффектов с чётким входом и выходом.
Это можно было бы оформить в виде функции — но так не удобно. Т.е. типа передаем вектор в функцию, эта функция последовательно устанавливает части вектора, основываясь на неких индексах. Но так не наглядно — все индексы перенесены в класс-обертку а функция просто получает части этого пакета у удобном виде по названию, не думая об индексах и смещениях.
R>На кой хер, спрашивается, ты превращаешь это в машину состояний? Потому что в сишарп всё на классах?
Тут нет машины состояний — по прежнему просто доступ к частям массива, просто удобным образом.
R>То же самое и про "другую обертку". Ты не замечаешь, что у тебя обёртки ради обёрток?
А как же. Это для удобства восприятия. Как и разбиение на функции — можно было бы не разбивать, все писать в одной большой функции — зачем плодить, если можно в одной?
R>У тебя же вектор — это не какая-то там деталь реализации, которую нужно инкапсулировать — вектор у тебя находится прямо в модели данных самого верхнего уровня. На кой хер ты его пхнёшь в какие-то промежуточные обёртки, то "овладевая", то "отбирая"? Что за свингер-пати ты устроил?
Чтобы было наглядно и удобно — не работать с индексами а лишь получать удобно читаемые названия.