Conversation
ParsingTree/ParsingTree/Divider.cs
Outdated
| // A class that implements division | ||
| public class Divider : Operator | ||
| { | ||
| double delta = 0.0000001; |
There was a problem hiding this comment.
| double delta = 0.0000001; | |
| private const double delta = 0.0000001; |
ParsingTree/ParsingTree/Divider.cs
Outdated
| @@ -0,0 +1,26 @@ | |||
| namespace ParsingTree; | |||
|
|
|||
| // A class that implements division | |||
There was a problem hiding this comment.
Надо использовать комментарии в формате XML Documentation
| double delta = 0.0000001; | ||
|
|
||
| // Keeps the division sign in itself | ||
| public Divider(char symbol) : base(symbol) {} |
There was a problem hiding this comment.
Зачем ему принимать извне division sign? Он и так знает, что он Divider
| public Divider(char symbol) : base(symbol) {} | ||
|
|
||
| // Counts the division of two numbers on each other | ||
| public override double Calcuate(double firstValue, double secondValue) |
There was a problem hiding this comment.
А вот свои операнды он вполне мог бы хранить. Всё наоборот, в общем :)
ParsingTree/ParsingTree/Divider.cs
Outdated
| public override void Print() | ||
| { | ||
| Console.Write(" / "); | ||
| } |
| PostOrderPrint(root.Left, ref isPreviousNumber, ref sizeBackStaples); | ||
| PostOrderPrint(root.Right, ref isPreviousNumber, ref sizeBackStaples); | ||
| } | ||
| } |
There was a problem hiding this comment.
То же самое, это работа узлов, а не дерева. Иначе это антипаттерн "God Object"
|
|
||
| private class Node | ||
| { | ||
| public Node() |
There was a problem hiding this comment.
Тут Nullability-анализ вообще недоволен, надо исправить
|
|
||
| public class Tests | ||
| { | ||
| Tree tree; |
There was a problem hiding this comment.
| Tree tree; | |
| private Tree tree; |
По традиции модификаторы доступа всегда указываются, хоть формально они и не нужны. Почему — в Java по умолчанию пакетная видимость, в C# — private, и если не указывать, будут путаться все.
| public void InTheUsualExampleTheTreeShouldCorrectlyCalculateTheValue(Tree tree) | ||
| { | ||
| tree.TreeExpression("+ 2 3"); | ||
| Assert.True(tree.Calcuate() == 5); |
There was a problem hiding this comment.
Не, сравнение — это Assert.That(tree.Calcuate(), Is.EqualTo(5));. Иначе если тест не пройдёт, Вам напишут, что что-то false, а не то, что ожидалось 5, а вернулось то-то. Разбираться в невнятных логах непрошедших тестов — очень такое себе удовольствие, если тестов много, так что все стараются обеспечить качественные сообщения о причинах провала теста.
| private static IEnumerable<TestCaseData> TreeForTest | ||
| => new TestCaseData[] | ||
| { | ||
| new TestCaseData(new Tree()), | ||
| }; |
There was a problem hiding this comment.
Если тестовый случай всего один, TestCaseData не используется. Инициализируйте Tree в SetUp.
4 дз