Conversation
| { | ||
| if (obj == null) return "null" + Environment.NewLine; | ||
|
|
||
| if (visitedObjects.Contains(obj)) |
There was a problem hiding this comment.
Точно ли нужно отдельно проверять наличие элемента в коллекции?
There was a problem hiding this comment.
Не очень поняла, что ты имеешь в виду
В этой строке
if (obj == null) return "null" + Environment.NewLine;
я предубеждаю NullReferenceException так как ниже беру его тип obj.GetType(). А у нас поле в классе вполне может где-то содержать null
А благодаря этой
if (visitedObjects.Contains(obj))
я ловлю циклические ссылки, чтобы не словить переполнение стека
Поправь меня пожалуйста, если я неправа
There was a problem hiding this comment.
Тут больше вопрос в стилистике кода. Посмотри на сигнатуру метода Add у хешсета
| private Person? testPerson; | ||
|
|
||
| [SetUp] | ||
| public void Setup() |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| namespace ObjectPrinting.Tests; | ||
|
|
||
| [TestFixture] | ||
| public class ObjectPrinterTests |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
У меня есть один тест на вложенность PrintToString_WithPersonList_ShouldPrintList (последний), но я добавила еще
There was a problem hiding this comment.
Да, увидел. Имел ввиду тесты, где есть объекты, вложенные в объекты и т.д.
|
|
||
| return PrintObject(obj, nestingLevel, type); | ||
| } | ||
| finally |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
type.GetFields и type.GetProperties в PrintObject () могут нам кинуть ошибки с рефлексией, это системные ошибки и их лучше пробросить дальше или "развалиться" :)
Также могут прилететь ошибки из сериализатора SerializeValue(), на этом уровне мне кажется лучше всего предупредить пользователя о том, что какой-то объект не сериализовался => я ловлю ошибку в методе SerializeValue()
This comment was marked as resolved.
This comment was marked as resolved.
В проектах, которые я делаю одна, я обычно делаю локальные коммиты в случае, если:
Поэтому в данном случае, так как я работаю одна, и в связи с тем, что задача не крупная + у нас были интерфейсы, задающие архитектуру, мне не понадобились коммиты |
@Luvr681