Будет, “Работая Эффективно с Унаследованным кодом”, помогают кому-то работающему с приложением, портированным от VB6 до VB.NET?

Это очень чувствительный момент, чтобы понять, как работает System.out.print. Если первый элемент - String, то оператор плюс (+) работает как оператор String concate. Если первый элемент целочисленный плюс (+), оператор работает как математический оператор.

public static void main(String args[]) {
    System.out.println("String" + 8 + 8); //String88
    System.out.println(8 + 8+ "String"); //16String
}
6
задан Peter Mortensen 20 July 2016 в 16:53
поделиться

7 ответов

Это касается не только объектно-ориентированных (OO) языков. Большие разделы посвящены тому, как работать с унаследованным кодом на C.

Так что да, покупайте!


Есть целая глава (Глава 19) под названием:

Мой проект не объектно-ориентированный. Как сделать безопасные изменения?

Также существует vbUnit , реализация xUnit , которая может помочь вам использовать TDD с Visual Basic 6.0 .

На самом деле, я неправильно понял вопрос и подумал, что вы переходите на порт, а не то, что вы уже портировали. В этом случае у вас есть тонна «устаревшего» кода VB.NET , так что эта книга полностью для вас. Вы можете воспользоваться OO-возможностями VB.NET и использовать оставшуюся часть книги.

Я действительно не могу больше рекомендовать эту книгу.

7
ответ дан 9 December 2019 в 22:38
поделиться

Да; концепция книги велика и мощна и выходит за рамки ООП. А VB6 может быть объектно-ориентированным языком, хотя это не такой полностью объектно-ориентированный язык, как некоторые

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

1
ответ дан 9 December 2019 в 22:38
поделиться

Вы можете сделать вопросы более конкретными.

Хотя VB6 не является чистым объектно-ориентированным языком как таковым, существует достаточно элементов объектно-ориентированного программирования, которые должны быть вам знакомы; кроме того, существует ряд подключаемых модулей для модульного тестирования для VB6 IDE.

Но давайте рассмотрим некоторые из высокоуровневых компонентов VB6:

  • Формы ЯВЛЯЮТСЯ объектами (вы можете создавать новые экземпляры).
  • Модули ведут себя как классы только со статическими методами.
  • Классы и UserControls очень близки к объектам, которые вы получите. Отсутствие конструктора усложняет ситуацию, но мы надеемся, что исходный разработчик остался с Initialize или написал согласованный подзапрос Init.
  • События в VB странные; это также то, что, вероятно, сбивает вас с толку больше всего. Скрытый код с отслеживанием состояния, который зависит от определенного порядка событий, несомненно, разбросан повсюду.
  • Страницы свойств. Что ж, это то, что есть.

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

1
ответ дан 9 December 2019 в 22:38
поделиться

У вас определенно есть работа, но вот стратегия, которую следует рассмотреть, прежде чем выполнять ЛЮБУЮ работу с .NET.

Уберите как можно больше базовых элементов. ФОРМИРУЙТЕ код, как вы можете, в класс: для начала по одному файлу класса на форму. По сути, обработчики событий формы не должны делать ничего, кроме прокси-вызовов методов в базовом экземпляре класса; все пользовательские методы, очевидно, могут быть перенесены в файл класса.

После прочтения руководства (и т. д.) от Microsoft и других, которое поможет вам подготовиться к миграции .NET, вы в основном настроены на небольшое адские куски, которые вам придется перекодировать / рефакторинг: раздражения, такие как обработка ошибок, порядок событий, объекты / варианты с поздним связыванием, коллекции и т. д.

Несколько слов о коде с обработкой ошибок: It ' s особенно трудно дублировать спагетти с ошибками, особенно потому, что средний кодировщик Visual Basic не умеет использовать его в качестве логики управления потоком. Практически стоит разбить каждый блок On Error на отдельные подпрограммы, если у вас их больше двух в подпрограмме.

После того, как код был очищен, вы также можете рассмотреть возможность рефакторинга кода Visual Basic в разумные абстракции (например, один класс адаптера данных и соединение и т. д.), но вы сможете лучше всего об этом судить.

Возможно, вам не понравится этот подход, поэтому определенно проверьте воду с помощью одной формы.

1
ответ дан 9 December 2019 в 22:38
поделиться

У меня есть копия, которую я купил, чтобы попытаться взять под контроль наш проект C / C ++. Поскольку мне не хватало функциональности, которую может предложить C # / .NET .

Книги очень написаны на C / C ++, но, как говорит Джон, есть глава о работе без объектов.

Но , если, как вы говорите, ваш код перенесен на .NET, это уже не код Visual Basic 6.0. В .NET есть множество способов Visual Basic / C #, которые позволяют подключиться к вашему коду и протестировать его. Но вместе с тем книга даст вам хороший обзор различных способов, которыми вы можете подключиться к приложению, и стратегий, позволяющих взять под контроль большой старый проект.

1
ответ дан 9 December 2019 в 22:38
поделиться

Я бы посоветовал взглянуть на книгу Мартина Фаулера «Рефакторинг: улучшение дизайна существующего кода» , которую нужно обязательно прочитать.

Возможно, вы ищете что-то вроде Профессионального рефакторинга в Visual Basic . Я не читал, но похоже, что это применимо.

0
ответ дан 9 December 2019 в 22:38
поделиться

Я думаю, что тесты для определения характеристик принесут вам наибольшую пользу. Их следует автоматизировать. Без характеристических тестов вам останется тестировать свое приложение / код вручную, фактически запустив его. При добавлении нового кода очень легко пропустить тестирование критически важной функциональности. Это исходит из моего собственного опыта.

Метод Sprout и класс Sprout важны при добавлении нового кода.

0
ответ дан 9 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

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