Opened 3 years ago
Closed 3 years ago
#374 closed задача (готово)
Институт Агат. Часть 4. неиспользуемые аргументы и пустые операторы
Reported by: | san | Owned by: | alx |
---|---|---|---|
Priority: | высокий | Milestone: | 1 очередь |
Component: | VE-02 | Keywords: | |
Cc: |
Description (last modified by )
Для ветки ПО VE-noPoe, по требованию института, нужно внести изменения в ПО
1. В функциях:
argument_iterator(...) (server.cpp (173))post_iterator(...) (server.cpp (183))request_completed(...) (server.cpp (221))cookieCallback(...) (server.cpp (230))
есть не используемые аргументы, нужно их убрать
2.В функциях
ComcertoChannel::playFile() (comcerto.cpp (3986))
SIPchannel::hold() (comcerto.cpp (6117))
Присутствуют пустые блоки операторов if, нужно их убрать
3.Пустой блок оператора case eDVOEvent (fxs.cpp (566)), нужно его убрать
Change History (13)
comment:1 by , 3 years ago
comment:2 by , 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)
???
follow-up: 6 comment:5 by , 3 years ago
Если я уберу какие-либо аргументы этих функций, проект перестанет собираться. С другой стороны, у нас клиентоориентированная компания, и если клиент чего-то хочет и платит за это деньги - нет причин не удовлетворить его требование. Сейчас уберу.
Я считал, что само собой разумеется, что проект должен собираться... зачем заказчику продукт который не работает.
В ней не используется аргумент kind. Верно ли я понял, что необходимо модифицировать эту строку следующим образом:
static int argument_iterator(void *cls, const char *key, const char *value)
Верно, но если модифицировать объявление функции, то и в вызовах функции нужно исключить убранные аргументы.
comment:6 by , 3 years ago
Replying to san:
Я считал, что само собой разумеется, что проект должен собираться...
Я вижу здесь противоречие между разумением и требованием заказчика...
зачем заказчику продукт который не работает.
У меня тоже возник такой вопрос. :)
Верно, но если модифицировать объявление функции, то и в вызовах функции нужно исключить убранные аргументы.
Эти функции вызываются сторонней библиотекой. Верно ли я понял, что я должен тратить свое время на модификацию чужого исходного кода по прихоти заказчика (прихоти - так как выполнение данного требования заказчика ничего не улучшит в работе устройства)?
А, скорее всего, ухудшит, так как при модификации чужого кода я по незнанию и/или неправильному пониманию могу случайно что-то сломать...
follow-up: 8 comment:7 by , 3 years ago
Я вижу здесь противоречие между разумением и требованием заказчика...
зачем заказчику продукт который не работает.
У меня тоже возник такой вопрос. :)
Как, всё время говорит Андрей: "Это хорошо когда возникают вопросы". :)
Эти функции вызываются сторонней библиотекой. Верно ли я понял, что я должен тратить свое время на модификацию чужого исходного кода по прихоти заказчика (прихоти - так как выполнение данного требования заказчика ничего не улучшит в работе устройства)?
Это существенное уточнение, надо было начинать с этого вопроса.
Загляни пожалуйста одним глазом в эту библиотеку, оцени серъёзность модификации, может это и не будет сложно, а я сейчас подумаю над ответом на твой вопрос.
comment:8 by , 3 years ago
Replying to san:
Как, всё время говорит Андрей: "Это хорошо когда возникают вопросы". :)
В таком случае, выскажу самый главный вопрос по данной теме: зачем убирать из функций неиспользуемые аргументы? Поведение программы от этого никак не изменится, и конечный продукт лучше работать не станет! А вот вероятность, что станет работать хуже, как я уже писал выше, есть...
Эти функции вызываются сторонней библиотекой. Верно ли я понял, что я должен тратить свое время на модификацию чужого исходного кода по прихоти заказчика (прихоти - так как выполнение данного требования заказчика ничего не улучшит в работе устройства)?
Это существенное уточнение, надо было начинать с этого вопроса.
В поставленной задаче перечислены конкретные функции, имена файлов и номера строк, в которых требуется выполнить модификацию. Трудно было предположить, что этот список не исчерпывающий, а только вершина айсберга. :) Я изначально понял задачу так, что требуется изменить только указанные функции. Откуда мне знать, может в библиотеке libmicrohttpd институт уже сделал все необходимые модификации кода самостоятельно...
Загляни пожалуйста одним глазом в эту библиотеку, оцени серъёзность модификации, может это и не будет сложно, а я сейчас подумаю над ответом на твой вопрос.
Заглянул. Серьезность модификаций я оцениваю как среднюю. Кроме собственно библиотечного кода в комплекте, например, идут разные тесты и примеры. Изменения API, которые требует заказчик, приведут к необходимости либо соответствующим образом модифицировать эти тесты и примеры, либо исключить их из процесса сборки. Но с чужим кодом никогда заранее не знаешь, во что выльется модификация, пока на практике не попробуешь...
follow-ups: 10 11 comment:9 by , 3 years ago
зачем убирать из функций неиспользуемые аргументы
Честно говоря я и сам до конца не понимаю зачем. Примерно требование звучит как: в коде не должно быть ничего лишнего и неиспользуемого. Заказчику это нужно для прохождения военной приёмки и ввода изделий в эксплуатацию.
Заглянул. Серьезность модификаций я оцениваю как среднюю
В таком случае пока с библиотекой ничего делать не будем, будем обсуждать с заказчиком компромиссные решения.
Откати пожалуйста изменения r1950, чтобы проект вернулся в собираемое состояние.
comment:10 by , 3 years ago
Replying to san:
зачем убирать из функций неиспользуемые аргументы
Честно говоря я и сам до конца не понимаю зачем. Примерно требование звучит как: в коде не должно быть ничего лишнего и неиспользуемого.
Так это требование, мягко говоря, радикально отличается от требования, изложенного в описании тикета! Здесь ничего не говорится о том, что аргументы необходимо убрать! Элементарная логика подсказывает, что избавиться от неиспользуемого аргумента callback-функции можно двумя способами:
- убрать аргумент;
- использовать аргумент.
Первый вариант обсудили выше, он влечет за собой массу трудностей. Второй вариант мне представляется на пару порядков проще, так как не влечет изменения API сторонней библиотеки...
comment:11 by , 3 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
follow-up: 13 comment:12 by , 3 years ago
Description: | modified (diff) |
---|
Договорились с заказчиком, что неиспользуемые аргументы останутся в коде.
Можно закрывать)
comment:13 by , 3 years ago
Description: | modified (diff) |
---|---|
Resolution: | → готово |
Status: | reopened → closed |
Replying to san:
Если я уберу какие-либо аргументы этих функций, проект перестанет собираться. С другой стороны, у нас клиентоориентированная компания, и если клиент чего-то хочет и платит за это деньги - нет причин не удовлетворить его требование. Сейчас уберу.