Standard

Автоматический рефакторинг Java-кода с использованием Stream API. / Иванов, Роман Андреевич; Валеев, Тагир Фаридович.

In: Вестник Новосибирского государственного университета. Серия: Информационные технологии, Vol. 17, No. 2, 2019, p. 49-60.

Research output: Contribution to journalArticlepeer-review

Harvard

Иванов, РА & Валеев, ТФ 2019, 'Автоматический рефакторинг Java-кода с использованием Stream API', Вестник Новосибирского государственного университета. Серия: Информационные технологии, vol. 17, no. 2, pp. 49-60. https://doi.org/10.25205/1818-7900-2019-17-2-49-60

APA

Иванов, Р. А., & Валеев, Т. Ф. (2019). Автоматический рефакторинг Java-кода с использованием Stream API. Вестник Новосибирского государственного университета. Серия: Информационные технологии, 17(2), 49-60. https://doi.org/10.25205/1818-7900-2019-17-2-49-60

Vancouver

Иванов РА, Валеев ТФ. Автоматический рефакторинг Java-кода с использованием Stream API. Вестник Новосибирского государственного университета. Серия: Информационные технологии. 2019;17(2):49-60. doi: 10.25205/1818-7900-2019-17-2-49-60

Author

Иванов, Роман Андреевич ; Валеев, Тагир Фаридович. / Автоматический рефакторинг Java-кода с использованием Stream API. In: Вестник Новосибирского государственного университета. Серия: Информационные технологии. 2019 ; Vol. 17, No. 2. pp. 49-60.

BibTeX

@article{6b983b52423e4442b0bf94c07383ceb4,
title = "Автоматический рефакторинг Java-кода с использованием Stream API",
abstract = "Долгое время функциональное программирование на Java было невозможно. Однако в 8 версии Java языке появились лямбда-выражения. Благодаря поддержке стандартных библиотечных классов (Stream, Optional и т.д.) на Java стало возможно описывать преобразования над данными в функциональном стиле.Java - достаточно старый язык, на нем написано большое количество императивного кода. Для того, чтобы воспользоваться преимуществами нового подхода, требуется выполнить нетривиальный рефакторинг, что в случае осуществления человеком может быть весьма утомительным, легко совершить ошибку.К счастью, для достаточно большого количества ситуаций данный рефакторинг можно безопасно осуществить автоматически.На основе IntelliJ Idea был разработан программный инструмент, который позволяет обнаружить места, где возможно автоматическое преобразование императивного кода в эквивалентный с использованием Stream API, а также автоматическое исправление, которое позволяет произвести замену. Рефакторинг пользуется средствами IntelliJ Idea для анализа Javaкода, а также интегрируется в саму IDE.Одним из основных критериев корректности работы алгоритма является безопасность данного преобразования. Пользователь не может доверять инструменту, если преобразование может изменять семантику кода.В данной статье рассматриваются различные ограничения, которые накладываются на шаблоны кода, для того, чтобы преобразование без искажения семантики было возможно. Данный рефакторинг был протестирован на различных библиотеках, для проверки сохранения семантики, путем проверки результатов тестирования до и после применения рефакторинга.В данной статье не будет обсуждаться влияние использования Stream API напроизводительность приложения",
author = "Иванов, {Роман Андреевич} and Валеев, {Тагир Фаридович}",
note = "Иванов Р.А., Валеев Т.Ф. Автоматический рефакторинг Java-кода с использованием Stream API // Вестник НГУ. Серия: Информационные технологии. - 2019. - Т. 17. - №2. - C. 49–60",
year = "2019",
doi = "10.25205/1818-7900-2019-17-2-49-60",
language = "русский",
volume = "17",
pages = "49--60",
journal = "Вестник Новосибирского государственного университета. Серия: Информационные технологии",
issn = "1818-7900",
publisher = "ИПЦ НГУ",
number = "2",

}

RIS

TY - JOUR

T1 - Автоматический рефакторинг Java-кода с использованием Stream API

AU - Иванов, Роман Андреевич

AU - Валеев, Тагир Фаридович

N1 - Иванов Р.А., Валеев Т.Ф. Автоматический рефакторинг Java-кода с использованием Stream API // Вестник НГУ. Серия: Информационные технологии. - 2019. - Т. 17. - №2. - C. 49–60

PY - 2019

Y1 - 2019

N2 - Долгое время функциональное программирование на Java было невозможно. Однако в 8 версии Java языке появились лямбда-выражения. Благодаря поддержке стандартных библиотечных классов (Stream, Optional и т.д.) на Java стало возможно описывать преобразования над данными в функциональном стиле.Java - достаточно старый язык, на нем написано большое количество императивного кода. Для того, чтобы воспользоваться преимуществами нового подхода, требуется выполнить нетривиальный рефакторинг, что в случае осуществления человеком может быть весьма утомительным, легко совершить ошибку.К счастью, для достаточно большого количества ситуаций данный рефакторинг можно безопасно осуществить автоматически.На основе IntelliJ Idea был разработан программный инструмент, который позволяет обнаружить места, где возможно автоматическое преобразование императивного кода в эквивалентный с использованием Stream API, а также автоматическое исправление, которое позволяет произвести замену. Рефакторинг пользуется средствами IntelliJ Idea для анализа Javaкода, а также интегрируется в саму IDE.Одним из основных критериев корректности работы алгоритма является безопасность данного преобразования. Пользователь не может доверять инструменту, если преобразование может изменять семантику кода.В данной статье рассматриваются различные ограничения, которые накладываются на шаблоны кода, для того, чтобы преобразование без искажения семантики было возможно. Данный рефакторинг был протестирован на различных библиотеках, для проверки сохранения семантики, путем проверки результатов тестирования до и после применения рефакторинга.В данной статье не будет обсуждаться влияние использования Stream API напроизводительность приложения

AB - Долгое время функциональное программирование на Java было невозможно. Однако в 8 версии Java языке появились лямбда-выражения. Благодаря поддержке стандартных библиотечных классов (Stream, Optional и т.д.) на Java стало возможно описывать преобразования над данными в функциональном стиле.Java - достаточно старый язык, на нем написано большое количество императивного кода. Для того, чтобы воспользоваться преимуществами нового подхода, требуется выполнить нетривиальный рефакторинг, что в случае осуществления человеком может быть весьма утомительным, легко совершить ошибку.К счастью, для достаточно большого количества ситуаций данный рефакторинг можно безопасно осуществить автоматически.На основе IntelliJ Idea был разработан программный инструмент, который позволяет обнаружить места, где возможно автоматическое преобразование императивного кода в эквивалентный с использованием Stream API, а также автоматическое исправление, которое позволяет произвести замену. Рефакторинг пользуется средствами IntelliJ Idea для анализа Javaкода, а также интегрируется в саму IDE.Одним из основных критериев корректности работы алгоритма является безопасность данного преобразования. Пользователь не может доверять инструменту, если преобразование может изменять семантику кода.В данной статье рассматриваются различные ограничения, которые накладываются на шаблоны кода, для того, чтобы преобразование без искажения семантики было возможно. Данный рефакторинг был протестирован на различных библиотеках, для проверки сохранения семантики, путем проверки результатов тестирования до и после применения рефакторинга.В данной статье не будет обсуждаться влияние использования Stream API напроизводительность приложения

UR - https://www.elibrary.ru/item.asp?id=41661980

U2 - 10.25205/1818-7900-2019-17-2-49-60

DO - 10.25205/1818-7900-2019-17-2-49-60

M3 - статья

VL - 17

SP - 49

EP - 60

JO - Вестник Новосибирского государственного университета. Серия: Информационные технологии

JF - Вестник Новосибирского государственного университета. Серия: Информационные технологии

SN - 1818-7900

IS - 2

ER -

ID: 22366963