Как Вы продолжаете к develope большим (долгосрочным) программным системам с и новым кодом прежней версии? [закрытый]

Вы не поделились реализацией MovePiece и основным игровым циклом, но я обнаружил две возможные проблемы внутри метода MiniMax.execute:

currentValue = tempBoard.getTurnIsWhite() ? min(tempBoard, depth -1) : max(tempBoard, depth -1)

Согласно приведенному выше коду, вы предполагаете, что игрок MinMax всегда будет черным, поскольку он оценивает min для белых и max для черных. Для общего алгоритма это неверное предположение, хотя не знаю, работает ли он для вас.

Во-вторых, после вызова mp.execute() и присвоения bestMove = mp, который вы называете mp.unexecute(), так эффективно вызывайте bestMove.unexecute(), поскольку переменные указывают на один и тот же объект.

Пожалуйста, рассмотрите предложения выше, и если это не решит проблему, поделитесь вышеупомянутыми частями реализации.

5
задан Alan Jackson 25 March 2009 в 01:55
поделиться

6 ответов

Трудно дать синглу весь ответ затрагивания, но подход высокого уровня является четким. По крайней мере, это - подход, который я использовал. Расположите по приоритетам свои цели и затем попытайтесь определить затраты на достижение тех целей. Ваши затраты по существу сведутся к 'времени разработчика'.

Во-первых, Вы хотите то, что работает, чтобы продолжать работать. Если у Вас есть что-то, что работает, и нет никакого серьезного основания переписать его, сохранить его.

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

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

При выполнении новой разработки в C# затем, необходимо быть прекрасной работой с COM-компонентами, пока у Вас нет достаточного выравнивания для замены их.

5
ответ дан 13 December 2019 в 05:43
поделиться

Я думаю, что у Вас есть хороший план. Это в конечном счете переместит большую часть кода в C#, используя в своих интересах лучший набор инструментов.

Код VB6 включает COM-объекты?

Вы упомянули, что код "не может быть остановлен для полного, переписывают". Но Вы не должны останавливаться. Один за другим можно заменить каждую часть функциональности VB6 с эквивалентным кодом C#. Это позволило бы Вам вносить одно изменение за один раз (предпочтительно с автоматизированными тестами, чтобы доказать, что Вы ничего не повредили).

3
ответ дан 13 December 2019 в 05:43
поделиться

Перепишите на основе потребностей, когда будет мотивирующий фактор.

Одному старому проекту Windows я продолжил работать, записали механизм правил в C, который работал так, мы просто оставили его как черный квадрат DLL.

Мы создали новый фронтенд, и база пользователей была, были впечатлены простым в использовании новым современным видом приложения. Ничто во внутренностях действительно не изменилось.

Слой доступа к базе данных использовал SQL Server DBLIB и не был re-wrtten, пока мы не обновили SQL Server.

3
ответ дан 13 December 2019 в 05:43
поделиться

Я думаю, что необходимо посмотреть процедуры обновления для клиентов. Факт - то, что в какой-то момент, когда у них есть 16 базовых центральных процессоров, Вы собираетесь хотеть, чтобы параллелизм ускорил вещи. Таким образом, у Вас есть экономическая модель для отодвигания формы VB6 и к WCF. WCF создал в поддержке синхронизации и параллелизме. Это может использоваться для локального в - proc коммуникация, а также межпроцессное и коммуникация перекрестной машины. Это также обладает преимуществом разрешения Вам сделать больше программирования стиля AOP.

0
ответ дан 13 December 2019 в 05:43
поделиться

У нас есть несколько систем этого вида. Тревожащая часть всего этого является состоянием поддержки жизненного цикла VB6. Существует риск (однако маленький), что Вы не сможете получить справку от Microsoft с проблемой showstopper с, например, будущим обновлением сервера, и не будете иметь способности зафиксировать его сами (скажите, из-за несовместимостей между DLL VB6 и исправленный сервер O/S). Это - риск, Ваше управление могло бы интересоваться - но затем, если у Вас нет соглашений о поддержке теперь, возможно, они довольны этим?

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

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

1
ответ дан 13 December 2019 в 05:43
поделиться

Я в настоящее время - один из нескольких разработчиков, работающих над большой унаследованной системой, которая началась как комбинация C и C++ с Win32 и, позже, MFC с поверхностным знанием блока среди бэкэнда C код. Мы недавно спрыгнули с VC ++ 6 к Visual Studio 2005 (и с тех пор обновили до 2008) для последней версии проекта, что мы продолжаем работать. Начиная с обновления IDE/компилятора мы очищали часть стиля и добавляли управляемый С++ с WinForms и теперь C# с WCF.

В то время как основы нашей системы, включая бэкэнд, почти определенно останутся в C (по крайней мере, для обозримого будущего), что-либо новое во фронтэнде будет, скорее всего, сделано в C#/WCF. Когда у нас есть время и/или потребность, мы намереваемся начать заменять более старые части фронтэнда с эквивалентным кодом C#/WCF.

0
ответ дан 13 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: