Conversation
There was a problem hiding this comment.
Зачем эти файлы? Для демонстрации результата?
ObjectPrinting/PrintingConfig.cs
Outdated
| public class PrintingConfig<TOwner> | ||
| { | ||
| public class PrintingConfig<TOwner> | ||
| private readonly HashSet<Type> typesToExclude = new(ReferenceEqualityComparer.Instance); |
There was a problem hiding this comment.
Внутри эта коллеция не должна изменяться, лучше заменить на IReadOnlySet. Аналогично и для коллекций ниже. Каждый вызов метода конфига должен возвращать новый экземпляр, который не влияет на прошлые.
|
|
||
| namespace ObjectPrinting; | ||
|
|
||
| public static class ObjectPrinterExtensions |
There was a problem hiding this comment.
Эти два расширения можно объединить в одно
ObjectPrinting/PrintingConfig.cs
Outdated
| public class PrintingConfig<TOwner> | ||
| { | ||
| public class PrintingConfig<TOwner> | ||
| private readonly HashSet<Type> typesToExclude = new(ReferenceEqualityComparer.Instance); |
There was a problem hiding this comment.
А для этого сета зачем Comparer передаём?
ObjectPrinting/PrintingConfig.cs
Outdated
| public class PrintingConfig<TOwner> | ||
| private readonly HashSet<Type> typesToExclude = new(ReferenceEqualityComparer.Instance); | ||
| private readonly HashSet<string> propertiesToExclude = []; | ||
| private readonly HashSet<object> processedObjects = new(ReferenceEqualityComparer.Instance); |
There was a problem hiding this comment.
Это же и так сет object, эта настройка в таком случае ничего нового не сделает
ObjectPrinting/PrintingConfig.cs
Outdated
| return $"{indentation}{propertyName} = {PrintToString(propertyValue, nestingLevel + 1)}"; | ||
| } | ||
|
|
||
| private string SerializeEnumerable(IEnumerable enumerable, int nestingLevel) |
There was a problem hiding this comment.
А если это какой-то вычисляемый ленивый IEnumerable? Что тут произойдёт тогда?
ObjectPrinting/PrintingConfig.cs
Outdated
| nestingLevel + 1)); | ||
| var obj = objects[i]; | ||
| serializeResult.Append($"{indentation}{PrintToString(obj, nestingLevel + 1)}"); | ||
| if (i < objects.Count - 1) |
There was a problem hiding this comment.
Почему не использовать Join вместо этого?
| [TestCase(-3)] | ||
| [TestCase(-4)] | ||
| [TestCase(-5)] | ||
| public void SetMaxNestingLevel_WithNegativeNestingLevel(int levelNesting) |
| [TestCase(0)] | ||
| [TestCase(1)] | ||
| [TestCase(2)] | ||
| public void SetMaxNestingLevel_WithDifferentNestingLevels(int levelNesting) |
There was a problem hiding this comment.
Не проверяется фактически что прекращается сериализация
There was a problem hiding this comment.
Названия тестов в файле не соответствует тому, чему вас учили на Testing. Лучше использовать <Название метода>_Should<Что должно выполняться>_When<При каких условиях>
@tripples25