Поскольку вы сейчас изучаете C # и спрашиваете о стиле, я собираюсь показать вам несколько вещей, которые не соответствуют коду, который вы опубликовали, а также причины.
Редактировать: Я только ответил на это, потому что похоже, что вы действительно работаете, чтобы выяснить это. Поскольку я предпочитаю работать именно с такими людьми, я более критичен просто потому, что надеюсь, что в результате это поможет вам добиться большего. :)
Название структуры
ComplexNumber
неоправданно долго. Обратите внимание, что ни один из Single
, Double
, Int32
, Int64
и т. Д. Не имеет Number
в имени. Это предлагает Complex
как более подходящее имя.
Complex
соответствует имени, уже установленному в .NET Framework.
Реальные и мнимые компоненты
GetRealPart()
и GetComplexPart()
должны быть свойствами только для получения, а не методами.
GetComplexPart()
назван неправильно, потому что он на самом деле возвращает воображаемую часть.
- Поскольку платформа .NET уже имеет структуру
Complex
, вам не следует заново изобретать наименование. Поэтому, если вы не можете переопределить рамочные соглашения, свойства должны иметь имена Real
и Imaginary
.
Операция
Если вы посмотрите на существующие примеры, такие как System.Windows.Vector
, вы увидите, что математические операции реализуются с помощью статического метода и оператора:
public static Point Add(Vector vector, Point point);
public static Point operator+(Vector vector, Point point);
Не удивительно, что это соглашение перешло к структуре System.Numerics.Complex
:
public static Complex Add(Complex left, Complex right);
public static Complex operator +(Complex left, Complex right);
Резюме
Результат чистый, его легко проверить, и он ведет себя так, как все ожидают. Ключевое слово this
не может / не может появиться, потому что методы являются статическими.
public static Complex Add(Complex left, Complex right)
{
return new Complex(left.Real + right.Real, left.Imaginary + right.Imaginary);
}
public static Complex operator +(Complex left, Complex right)
{
return new Complex(left.Real + right.Real, left.Imaginary + right.Imaginary);
}