Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Конина Анастасия #197

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

anastasiakimura
Copy link

No description provided.

@@ -1,27 +1,166 @@
using NUnit.Framework;
using System;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тесты хорошо бы выделять в отдельную сборку, на то есть несколько причин

  • обычно у тебя есть несколько площадок на которые выкатывается боевой код, в этом случае его копирует на них какая то система CI/CD, чем меньше в сервисе будет лишнего тем меньше будут весить артефакты, и быстрее пройдет процесс, в больших проектах это обычно сервисы с огромным количеством ссылок и захломлять их еще тестовыми сборками не надо
  • intellisense в либе/сервисе будет чище
  • даже внутри одной простой библиотеки при сохранении лишних ссылок, другой сервис/библиотека, которые заимпортируют твою либу транзитивно получат лишние ссылки и у них так же будет засоряться intellisense и артефакты

}

[Test]
public void SetCulture_ForProperty()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это 2 разных теста, можно оформить через testCase

{
var serialized = person.PrintToString(config => config.Printing(x => x.FamilyName).SetMaxLength(1));
serialized.Should().Contain($"{nameof(person.FamilyName)} = {person.FamilyName[0]}")
.And.NotContain($"{nameof(person.FamilyName)} = {person.FamilyName}")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вообще весьма странная проверка

                .Contain($"{nameof(person.FamilyName)} = {person.FamilyName[0]}")
                .And
                .NotContain($"{nameof(person.FamilyName)} = {person.FamilyName}")

первое же исключает второе


namespace ObjectPrinting
{
public class PrintingConfig<TOwner>
{
private readonly Type[] finalTypes =

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не используется

public PropertyPrintingConfig<TOwner, TPropType> Printing<TPropType>(
Expression<Func<TOwner, TPropType>> memberSelector)
{
currentMember = ((MemberExpression) memberSelector.Body).Member;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а что если пользователь сделает так?

            person.PrintToString(config => config.Printing(x => x.Name + 1).SetMaxLength(1));

            person.PrintToString(
                config => config
                    .Printing(x => x.Name[2])
                    .Using(x => ""));

итд


private string SerializeIEnumerable(IEnumerable obj, int nestingLevel)
{
var identation = new string('\t', nestingLevel + 1);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

очепятка


private string PrintToString(object obj, int nestingLevel)
{
if (nestingLevel > 100)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вот тут не оч хорошо
если вложенность превысить захардкоженно езначение то пользователь никак не поймет что случилось, лучше кинуть понятную ошибку
ну и совсем беспомощным пользователя оставлять на такие случаи тоже не оч, лучше дать ему возможность конфигурировать это значение, можно сделать дефолтный параметр равный 100



if (serializationConfig.TypePrintingRules.TryGetValue(obj.GetType(), out var typePrintingRule))
return typePrintingRule(obj).ToString();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tostring лишнее

sb.AppendLine("{");
foreach (var key in dictionary.Keys)
{
sb.Append(identation + "{" + PrintToString(key, nestingLevel + 1) + Environment.NewLine

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

зачем тебе тогда StringBuilder раз ты используешь конкатенирование строк

private string SerializeDictionary(IDictionary dictionary, int nestingLevel)
{
var sb = new StringBuilder();
var identation = new string('\t', nestingLevel + 1);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

давай это уже куда нибудь в константу уберем

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants