C#: Написание сводки для свойств с разными методами доступа для геттера и сеттера

Я очень дисциплинирован в написании подробных описаний интерфейсов, классов, свойств и методов. Пока я сосредоточен на том, чтобы поделиться своим кодом со всеми, кто может читать без каких-либо затрат на ненужные объяснения. Я следую личному руководству по коду, чтобы обеспечить согласованность.

Предположим, следующий интерфейс...

namespace CarFacility
{
  /// <summary>Represents the interface of all cars.</summary>
  public interface CarInterface
  {
    /// <summary>Gets the car serial number.</summary>
    string CarSerialNumber
    {
      get;
    }
  }
}

Предположим, следующий класс...

namespace CarFacility
{
  /// <summary>Represents the base class of all cars.</summary>
  public abstract class CarAbstract:
    CarInterface
  {
    /// <summary>Stores the car serial number.</summary>
    private string _carSerialNumber = string.Empty;

    /// <summary>Gets / sets the car serial number.</summary>
    public virtual string CarSerialNumber
    {
      get
      {
        string carSerialNumber = this._carSerialNumber;
        return carSerialNumber;
      }
      private set
      {
        this._carSerialNumber = value;
      }
    }

    /// <summary>Creates a new car with a unique serial number.</summary>
    /// <param name="carSerialNumber">The unique car serial number of the car.</param>
    public CarAbstract( string carSerialNumber )
    {
      this.CarSerialNumber = carSerialNumber;
    }
  }
}
  1. Хотя серийный номер автомобиля обычно не должен меняться, его установщик является частным.
  2. Хотя к установщику можно получить доступ в аннотации, он задокументирован как устанавливаемый.
  3. Реализация интерфейса показывает только документацию геттера.
  4. Реализация против абстрактного также показывает сеттер, но он недоступен.

Итак, мой вопрос заключается в том, как написать правильное резюме, чтобы не сбить с толку разработчиков, использующих мои библиотеки. Я заинтересован в ваших лучших практиках, чтобы иметь правильное решение.

ИЗМЕНИТЬ

Серийный номер автомобиля — это перевод с немецкого на английский уникальный номер шасси. Это может не соответствовать лучшему переводу.

Это просто близкий пример. Представьте себе, что на заводе производится новый BMW, которому присваивается уникальный серийный номер. Вы получаете класс BMW от CarAbstract, создаете его с помощью перезаписанного конструктора, но также с передачей уникального серийного номера автомобиля. Вызывая базовый конструктор и передавая это число, вы используете реализацию реферата.

Представьте себе случай использования, когда вам нужно получить доступ к серийному номеру автомобиля в производном классе BMW. Таким образом, помощник по коду показывает комментарий к свойству класса CarAbstract. Кто-то может быть сбит с толку, увидев, что должен быть сеттер, но его нет, пока он частный.

ИЗМЕНИТЬ

Имея IList<CarInterface>, вы могли просмотреть несколько автомобилей и прочитать серийный номер автомобиля. Во время приведения типов к CarInterface помощник по коду показывает вам комментарий интерфейса только с кратким описанием геттера.


person codekandis    schedule 16.11.2015    source источник
comment
Какой смысл в локальной переменной carSerialNumber?   -  person juharr    schedule 16.11.2015
comment
Я отредактировал вопрос. Надеюсь, теперь это достаточно ясно.   -  person codekandis    schedule 16.11.2015


Ответы (1)


Я предлагаю использовать термин «неизменный».

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

person swcraft    schedule 16.11.2015