Этот проект был создан, чтобы проиллюстрировать использование макросов, разработанных с использованием VBA для Excel, которые можно использовать для автоматизации сбора и визуализации данных из выбранной группы акций экологически чистых энергетических компаний. Это использовалось, чтобы показать возможность использования макросов и то, как их можно автоматизировать с помощью графических интерфейсов, таких как кнопки, чтобы обеспечить возможность повторного использования задачи. Для этого проекта были использованы данные о запасах 12 акций, собранные в 2017 и 2018 годах. Используемые данные включали тикерный код, начальную и конечную стоимость акций, а также ежедневный объем торгов за каждый день. Исходя из этого, мы могли определить первую и последнюю цену акции, а также общий объем торгов для каждой анализируемой акции.
Другой целью этого проекта было выяснить, как повысить эффективность кода с помощью рефакторинга для оптимизации вычислительной мощности, необходимой для выполнения макросов. Для этого мы использовали нашу первоначальную версию кода, которая была функциональной, но требовала от программы выполнения итерации всего набора данных для каждого биржевого тикера, который мы хотели проанализировать. Целью было разработать рефакторинговую версию исходного кода, которая требовала, чтобы программа завершала работу только при повторении набора данных и получала те же данные, что и первая версия.
Для начала мы разработали функциональный код, который позволял собирать общий годовой объем запасов и годовую динамику каждой акции, которую мы хотели проанализировать. Как видно из кода, который мы предоставили ниже, данные были собраны для каждой акции путем выполнения итерации набора данных и вставки данных в лист Excel перед переходом к следующей акции.
В код был встроен таймер, который отображал время, необходимое для запуска программы, и результаты. Используя это, мы можем сравнить время, необходимое для завершения исходного кода для сбора данных для наборов данных за каждый год. Это дало нам время выполнения кода для каждого года, как показано на изображениях ниже. Он показывает, что исходному коду потребовалось 0,6289062 секунды для завершения набора данных 2017 года и 0,6171875 для завершения набора данных 2018 года.
Путем рефакторинга исходного рабочего кода можно добиться более эффективного использования вычислений за счет сокращения общего количества итераций набора данных, что приводит к увеличению скорости выполнения задачи. Для рефакторинга этого кода в разрабатываемый макрос необходимо было добавить два компонента. Первым был индекс для каждого тикера, который повторялся для каждой строки данных в анализируемых наборах данных. При этом для каждой строки данных в наборе данных программа будет определять, какой тикер присутствует, и сохранять соответствующие данные, связанные со значением индекса. Второй представлял собой набор массивов данных для хранения нескольких точек данных для каждого биржевого тикера. Поскольку каждое значение, сохраненное в массиве, можно было извлечь в зависимости от порядка их сбора, можно было связать эти данные обратно с используемым индексом тикера. Использование этих двух инструментов позволило провести рефакторинг кода, как показано в примере ниже.
Используя тот же код, который использовался для определения времени выполнения исходного кода, можно было увидеть, наблюдалось ли какое-либо улучшение времени выполнения в рефакторинговом коде для анализа. Как видно на изображениях ниже, время, необходимое для завершения анализа данных за 2017 и 2018 годы, было рассчитано с использованием нового кода и использовано для сравнения с использованным исходным кодом. Из этого мы могли видеть, что для завершения набора данных за 2017 год потребовалось 0,5273438 секунды, а для завершения набора данных за 2018 год — 0,516825 секунды.
Судя по информации, собранной на основе времени завершения выполнения исходного и рефакторизованного кода, сокращение составило 0,1015624 секунды для набора данных 2017 года и 0,1103625 секунды для набора данных 2018 года.
Процесс рефакторинга кода имеет некоторые преимущества и недостатки при его использовании. Сначала давайте посмотрим на некоторые преимущества
Некоторые недостатки использования рефакторинга кода.
В примере, который мы здесь показали, были некоторые плюсы и минусы рефакторинга, который был выполнен для повышения эффективности кода.
Некоторые из положительных мыслей, возникших в результате изменения кода, заключаются в следующем:
Сокращено время, необходимое для завершения анализа, за счет сокращения количества итераций, выполняемых для сбора данных.
Результатом стал более надежный код, который можно легко расширить до более крупных наборов данных и большего количества критериев поиска.
Используются массивы для хранения данных, которые можно использовать для других расчетов или анализа, если необходим более глубокий анализ данных.
Некоторые из негативных факторов использования рефакторинга в этом коде включают следующее:
https://www.c-sharpcorner.com/article/pros-and-cons-of-code-refactoring/» ↩ ↩ 2