[Wine-devel] [Office] Советы по взамодействию в разработке Wine
Anatoly Lyutin
=?iso-8859-1?q?vostok_=CE=C1_etersoft=2Eru?=
Ср Апр 1 14:45:35 MSD 2009
Vitaly Lipatov пишет:
>
> Я ошибся ссылкой, последний вариант был такой:
> http://www.winehq.org/pipermail/wine-patches/2009-January/067827.html
>
>
Ага, этот вариант чуть лучше.
>
>> 1. Нет тестов, даже самых простейших.
>> 2. Отсутсвуют установки ошибок.
>>
Остаётся в силе.
>> 3. Не уверен, но disabled пункт меню делается по-другому, несовсем
>> понятно зачем автор пошёл по такому пути.
>>
> Иначе чем указанием MF_DISABLED ? :)
>
Разве нет возможности изменить флаг у элемента иначе чем удалением и
созданием меню?
>> 4. Надо доказать, что
>>
>> + /* It destroys popup menu also */
>> + if (num)
>> + DeleteMenu(hMenu, uPos, MF_BYPOSITION);
>>
>> необходимо.
>>
> Кому доказать? Функция реализована именно так, как это нужно, по спецификации,
>
Что значит так как нужно? Кому нужно? Win API, 1C, MSDN?
> и проверена в реальной работе. Я же исправление к LoadString присылаю.
>
Для меня это "тёмное" место в алгоритме. Думаю, что и для других тоже.
>
>> 6. Не установлено, что делает WinAPI если lphMenu будет равно NULL
>>
> Да, в этом старом варианте было мало проверок на невозможные ситуации.
>
Остаётся в силе то, что нет проверки на "вставку элемента" и то, что не
установлено, что функция делает при lphMenu равно NULL.
Вот только несколько вариантов:
1. Безоговорочно упасть, многие функции WInAPI так делают и Тимошков
много писал о том, что если так делает WinAPI то так должен делать и Wine.
2. Сразу завершить выполнение функции с установкой какой-либо ошибки.
3. Сделать так как сделал ты.
> А я думаю, что на новую реализованную функцию тесты вообще не нужны.
>
Только если такие функции реализуют "зубры" Wine, то их действительно
ничего не спрашивают, хотя бывают исключения.
>> P.P.S: Этот патч отходит от традиции :
>> stub->tests->partly implemented->tests->full implemented->tests.
>>
> Сначала мы строим только фундамент, потом на нём живём, потом строим стены, в
> них живём. Если год протянем, делаем крышу.
>
Сначала мы находим дом, потом пишем о том, можно ли там жить, затем
заходим на первый этаж, снова сообщаем всех можно ли там жить, а только
потом заселяемся полностью.
> Остаётся загадкой, где взять OLE-объект, с помощью которого можно тестировать
> эту функцию. Боюсь что его реализация в Wine займёт раз в 10 больше кода, чем
> эта функция :)
>
Нормальная практика по XP и Reverse-разработке, когда объём тестом в 10
раз больше самого кода.
Подробная информация о списке рассылки Wine-devel