CSHARPPROGLIB Telegram 6555
⭐️ Золотой стандарт для рефакторинга

Golden Master — это простой приём для безопасного рефакторинга, когда страшно ломать легаси и непонятно, как правильно должно «по идее» работать.

Идея такая: берём старую реализацию, гоняем через неё достаточно входных данных и сериализуем результат — это и есть золотой стандарт.

Потом пишем тест, который запускает старую и новую версию и сравнивает их вывод. Если совпадает — поведение не изменилось, можно смело продолжать рефакторить; если нет — либо нашли баг, либо сознательно меняем старый код.

В C# это можно сделать вообще минималистично:
// serialize output before change, compare after change
var before = JsonSerializer.Serialize(await RunOld());
var after = JsonSerializer.Serialize(await RunNew());
Assert.Equal(before, after);


Главное — позаботиться о детерминизме: вычистить случайные поля: время или GUID’ы, иначе стандарт будет шуметь и тест станет бесполезным.

🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸Библиотека шарписта

#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🥰1



tgoop.com/csharpproglib/6555
Create:
Last Update:

⭐️ Золотой стандарт для рефакторинга

Golden Master — это простой приём для безопасного рефакторинга, когда страшно ломать легаси и непонятно, как правильно должно «по идее» работать.

Идея такая: берём старую реализацию, гоняем через неё достаточно входных данных и сериализуем результат — это и есть золотой стандарт.

Потом пишем тест, который запускает старую и новую версию и сравнивает их вывод. Если совпадает — поведение не изменилось, можно смело продолжать рефакторить; если нет — либо нашли баг, либо сознательно меняем старый код.

В C# это можно сделать вообще минималистично:

// serialize output before change, compare after change
var before = JsonSerializer.Serialize(await RunOld());
var after = JsonSerializer.Serialize(await RunNew());
Assert.Equal(before, after);


Главное — позаботиться о детерминизме: вычистить случайные поля: время или GUID’ы, иначе стандарт будет шуметь и тест станет бесполезным.

🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸Библиотека шарписта

#il_люминатор

BY Библиотека шарписта | C#, F#, .NET, ASP.NET


Share with your friend now:
tgoop.com/csharpproglib/6555

View MORE
Open in Telegram


Telegram News

Date: |

End-to-end encryption is an important feature in messaging, as it's the first step in protecting users from surveillance. Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation. Channel login must contain 5-32 characters How to create a business channel on Telegram? (Tutorial) How to Create a Private or Public Channel on Telegram?
from us


Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET
FROM American