[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