Opened 3 years ago

Last modified 3 years ago

#374 closed задача

Институт Агат. Часть 4. неиспользуемые аргументы и пустые операторы — at Version 12

Reported by: san Owned by: alx
Priority: высокий Milestone: 1 очередь
Component: VE-02 Keywords:
Cc:

Description (last modified by san)

Для ветки ПО VE-noPoe, по требованию института, нужно внести изменения в ПО
~

  1. В функциях:
  • argument_iterator(...) (server.cpp (173))
  • post_iterator(...) (server.cpp (183))
  • request_completed(...) (server.cpp (221))
  • cookieCallback(...) (server.cpp (230))

есть не используемые аргументы, нужно их убрать
~

  1. В функциях

ComcertoChannel::playFile() (comcerto.cpp (3986))
SIPchannel::hold() (comcerto.cpp (6117))
Присутствуют пустые блоки операторов if, нужно их убрать

3.Пустой блок оператора case eDVOEvent (fxs.cpp (566)), нужно его убрать

Change History (12)

in reply to:  description comment:1 by alx, 3 years ago

Replying to san:

  1. В функциях:
  • argument_iterator(...) (server.cpp (173))
  • post_iterator(...) (server.cpp (183))
  • request_completed(...) (server.cpp (221))
  • cookieCallback(...) (server.cpp (230))

есть не используемые аргументы, нужно их убрать

Если я уберу какие-либо аргументы этих функций, проект перестанет собираться. С другой стороны, у нас клиентоориентированная компания, и если клиент чего-то хочет и платит за это деньги - нет причин не удовлетворить его требование. Сейчас уберу.

comment:2 by alx, 3 years ago

Я вдруг засомневался, правильно ли я понял требование института. Вот, например, в server.cpp:173 есть такая функция:

static int argument_iterator(void *cls, enum MHD_ValueKind kind, const char *key, const char *value)

В ней не используется аргумент kind. Верно ли я понял, что необходимо модифицировать эту строку следующим образом:

static int argument_iterator(void *cls, const char *key, const char *value)

то есть у функции должно стать не 4, а 3 аргумента??? Или может быть имелось в виду сделать так:

static int argument_iterator(void *cls, enum MHD_ValueKind, const char *key, const char *value)

???

comment:3 by alx, 3 years ago

In 1950/sip_ua:

По требованию заказчика в функциях argument_iterator(), post_iterator(), request_completed() и cookieCallback()
убраны неиспользуемые аргументы. See #374.

comment:4 by alx, 3 years ago

Resolution: fixed
Status: newclosed

In 1951/sip_ua:

Из кода убраны пыстые блоки кода.
В канальнок окончании FXS убран пустой вариант оператора case. Closes #374.

comment:5 by san, 3 years ago

Если я уберу какие-либо аргументы этих функций, проект перестанет собираться. С другой стороны, у нас клиентоориентированная компания, и если клиент чего-то хочет и платит за это деньги - нет причин не удовлетворить его требование. Сейчас уберу.

Я считал, что само собой разумеется, что проект должен собираться... зачем заказчику продукт который не работает.

В ней не используется аргумент kind. Верно ли я понял, что необходимо модифицировать эту строку следующим образом:
static int argument_iterator(void *cls, const char *key, const char *value)

Верно, но если модифицировать объявление функции, то и в вызовах функции нужно исключить убранные аргументы.

in reply to:  5 comment:6 by alx, 3 years ago

Replying to san:

Я считал, что само собой разумеется, что проект должен собираться...

Я вижу здесь противоречие между разумением и требованием заказчика...

зачем заказчику продукт который не работает.

У меня тоже возник такой вопрос. :)

Верно, но если модифицировать объявление функции, то и в вызовах функции нужно исключить убранные аргументы.

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

А, скорее всего, ухудшит, так как при модификации чужого кода я по незнанию и/или неправильному пониманию могу случайно что-то сломать...

Last edited 3 years ago by alx (previous) (diff)

comment:7 by san, 3 years ago

Я вижу здесь противоречие между разумением и требованием заказчика...

зачем заказчику продукт который не работает.

У меня тоже возник такой вопрос. :)

Как, всё время говорит Андрей: "Это хорошо когда возникают вопросы". :)

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

Это существенное уточнение, надо было начинать с этого вопроса.
Загляни пожалуйста одним глазом в эту библиотеку, оцени серъёзность модификации, может это и не будет сложно, а я сейчас подумаю над ответом на твой вопрос.

in reply to:  7 comment:8 by alx, 3 years ago

Replying to san:

Как, всё время говорит Андрей: "Это хорошо когда возникают вопросы". :)

В таком случае, выскажу самый главный вопрос по данной теме: зачем убирать из функций неиспользуемые аргументы? Поведение программы от этого никак не изменится, и конечный продукт лучше работать не станет! А вот вероятность, что станет работать хуже, как я уже писал выше, есть...

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

Это существенное уточнение, надо было начинать с этого вопроса.

В поставленной задаче перечислены конкретные функции, имена файлов и номера строк, в которых требуется выполнить модификацию. Трудно было предположить, что этот список не исчерпывающий, а только вершина айсберга. :) Я изначально понял задачу так, что требуется изменить только указанные функции. Откуда мне знать, может в библиотеке libmicrohttpd институт уже сделал все необходимые модификации кода самостоятельно...

Загляни пожалуйста одним глазом в эту библиотеку, оцени серъёзность модификации, может это и не будет сложно, а я сейчас подумаю над ответом на твой вопрос.

Заглянул. Серьезность модификаций я оцениваю как среднюю. В том, чтобы убрать лишние аргументы везде, где вызывается callback-функция, вроде бы нет ничего сложного. Но кроме собственно библиотечного кода в комплекте, например, идут разные тесты и примеры. Изменения API, которые требует заказчик, приведут к необходимости либо соответствующим образом модифицировать эти тесты и примеры, либо исключить их из процесса сборки. Но с чужим кодом никогда заранее не знаешь, во что выльется модификация, пока на практике не попробуешь...

Last edited 3 years ago by alx (previous) (diff)

comment:9 by san, 3 years ago

зачем убирать из функций неиспользуемые аргументы

Честно говоря я и сам до конца не понимаю зачем. Примерно требование звучит как: в коде не должно быть ничего лишнего и неиспользуемого. Заказчику это нужно для прохождения военной приёмки и ввода изделий в эксплуатацию.

Заглянул. Серьезность модификаций я оцениваю как среднюю

В таком случае пока с библиотекой ничего делать не будем, будем обсуждать с заказчиком компромиссные решения.
Откати пожалуйста изменения r1950, чтобы проект вернулся в собираемое состояние.

in reply to:  9 comment:10 by alx, 3 years ago

Replying to san:

зачем убирать из функций неиспользуемые аргументы

Честно говоря я и сам до конца не понимаю зачем. Примерно требование звучит как: в коде не должно быть ничего лишнего и неиспользуемого.

Так это требование, мягко говоря, радикально отличается от требования, изложенного в описании тикета! Здесь ничего не говорится о том, что аргументы необходимо убрать! Элементарная логика подсказывает, что избавиться от неиспользуемого аргумента callback-функции можно двумя способами:

  • убрать аргумент;
  • использовать аргумент.

Первый вариант обсудили выше, он влечет за собой массу трудностей. Второй вариант мне представляется на пару порядков проще, так как не влечет изменения API сторонней библиотеки...

in reply to:  9 comment:11 by alx, 3 years ago

Resolution: fixed
Status: closedreopened

Replying to san:

Откати пожалуйста изменения r1950, чтобы проект вернулся в собираемое состояние.

Откатил. Так как требование заказчика перестало быть выполненным, тикет переоткрываю.

comment:12 by san, 3 years ago

Description: modified (diff)

Договорились с заказчиком, что неиспользуемые аргументы останутся в коде.
Можно закрывать)

Note: See TracTickets for help on using tickets.