Каково соглашение для документирования переменных с помощью сеттеров и геттеров в Dart?

Рассмотрим следующий пример (распространенный, если вы используете пакет поставщика Flutter): у вас есть класс с частной переменной, доступ к которой можно получить через сеттер и геттер. Каково соглашение/рекомендуемый способ документирования этого?

class Foo extends ChangeNotifier {

  int _bar = 0;

  int get bar => bar;

  set bar(int bar){
    _bar = bar;
    notifyListeners();
  }
}

Должны ли вы добавлять комментарии как к сеттеру, так и к геттеру и объяснять назначение переменной в обоих комментариях, или вы должны просто добавить комментарий к приватной переменной?

Например:

class Foo extends ChangeNotifier {

  /// The number of bars in the foo.
  int _bar = 0;

  /// Get the number of bars in the foo.
  int get bar => bar;

  /// Set the number of bars in the foo.
  set bar(int bar){
    _bar = bar;
    notifyListeners();
  }
}

vs.

class Foo extends ChangeNotifier {

  /// The number of bars in the foo.
  int _bar = 0;

  int get bar => _bar;

  set bar(int bar){
    _bar = bar;
    notifyListeners();
  }
}

Первый пример наиболее нагляден, но он может означать много повторяющихся комментариев. Второй пример уменьшает количество комментариев, но не так легко увидеть, что делает геттер/сеттер (например, наведя на него курсор в коде vs). Есть ли рекомендации команды Dart или соглашение о том, как должна быть написана документация в подобных случаях?


person Hannes Hultergård    schedule 15.05.2021    source источник
comment
Я бы сделал первый пример, основываясь на том факте, что DartDoc, по-видимому, объединяет документацию как для set, так и для get для данного свойства. Примером может служить length на List: api.dart. dev/stable/2.13.0/dart-core/List/length.html   -  person julemand101    schedule 15.05.2021
comment
Итак, кажется, что dartdoc не генерирует документацию для закрытых переменных (разумно, если подумать). Итак, как вы сказали, лучший способ сделать это, вероятно, состоит в том, чтобы задокументировать геттер и сеттер, но не частную переменную. Может быть, просто прокомментировать это обычным комментарием //?   -  person Hannes Hultergård    schedule 15.05.2021
comment
Если не очевидно, что делают частные переменные, да, вы должны это задокументировать. Но в остальном я бы сказал, что достаточно задокументировать общедоступную часть вашего интерфейса.   -  person julemand101    schedule 15.05.2021


Ответы (1)


Документ либо, традиционно добытчик. Задокументируйте его, как поле, используя именное словосочетание. Затем инструмент DartDoc покажет его как поле. https://dart.dev/guides/language/efficient-dart/documentation#prefer-starting-variable-getter-or-setter-comments-with-noun-phrases

person lrn    schedule 15.05.2021