Это, лучше используют методы получателя или получить доступ к частным полям непосредственно при переопределении toString? [дубликат]

6
задан Aaron 15 January 2010 в 16:35
поделиться

7 ответов

Используйте GetTers, если у вас их!

Может быть, однажды вы меняете код, так что Getter не только вернет значение поля, но делает что-то большее или создать результат по-другому. Тогда вы будете более рады, что вы последовательно использовали Getter.

Но как обычно, от моего совета есть извлечения - что вы ожидаете от метода TOSTRING (), если вы разрешите переопределить методы Getter, вы хотите, чтобы он использовал поля классов или результат - возможно, переопределения - метод getter.

Итак, как обычно, это зависит, но я бы использовал GetTers, если у меня не будет веской причины получить доступ к полям напрямую.

9
ответ дан 8 December 2019 в 13:46
поделиться

Для многоязычия Epson TM-T88IV требуется преобразовать последовательность в CodePage 936, а затем представить ее в ISO-8859-1.

Смотрите этот другой вопрос для получения подробной информации об алгоритме:

Можем ли мы упростить этот код кодирования последовательности

сделать это перед отправкой на принтер. str = Encoding.GetEncoding («ISO-8859-1») .GetString (Encoding.GetEncoding (_ReceiptPrinter.CharacterSet).GetBytes (str));

-121--4055935-

Использование getters в toString является переполнением. Кроме того, не следует использовать toString в целях, не связанных с отладкой.

-121--4167148-

Использование методов доступа может быть предпочтительным, если они обеспечивают какую-либо дополнительную логику поверх только что возвращенного значения поля (например, увеличение последовательности или что-то подобное). Если ваш класс предназначен для расширения, я бы склонен к доступу, потому что они могут быть переопределены.

3
ответ дан 8 December 2019 в 13:46
поделиться

Если ваш класс имеет Getter и Getters для полей, Вы должны быть последовательными на протяжении всей реализации этого класса в том, используете ли вы GetTers и Getters или получить доступ к полям напрямую. Обычно не имеет смысла смешивать уровни абстракции. В противном случае, как вы можете рационализировать их в некоторых местах, но не в других? Кроме того, если когда-либо есть изменение того, как будут реализованы Getters, вы можете в конечном итоге с тонкими мешками. TOSTRING () является частью реализации, поэтому он также должен быть последовательным.

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

0
ответ дан 8 December 2019 в 13:46
поделиться

Я бы предпочел подход к непосредственному доступу на частные переменные напрямую. ИМХО методы GetTter увеличивают беспорядок.

2
ответ дан 8 December 2019 в 13:46
поделиться

Использование getters в toString является переполнением. Кроме того, не следует использовать toString в целях, не связанных с отладкой.

-121--4167148-

Я придумал быстрый пример, который работает. Вы попытались изменить z-индекс на ui-datepicker , но после просмотра визуализированного кода в Firebug он выглядит так, как будто вам нужен идентификатор ui-datepicker-div . Установите z-индекс на 9999 и он появится в верхней части модального диалогового окна.

<script type='text/javascript'> 
  $(function() {
      $("#datepicker").datepicker({ dateFormat: 'dd/mm/yy' });
  });

  function openmodal() {   
      var $dialogContent = $("#event_edit_container");       

      $dialogContent.dialog({
         modal: true,
         title: "Test",
         close: function() {},
         buttons: {
          save : function() {},
          cancel : function() {}
         }
      }).show();
      $("#ui-datepicker-div").css("z-index", "9999");   
  }
</script>

<div ><a href="javascript:openmodal();">Open modal</a></div>
<div id="event_edit_container" >
    <form>
        Date: <input type="text" id="datepicker" name="datepicker">
    </form>
</div>
-121--2669380-

Есть ли у вас причина использовать методы получения? Они делают что-нибудь интересное?

... Или вы просто используете их для разоблачения внутренних данных, фактически не предавая гласности сами поля (инкапсуляция бедняков)?

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

1
ответ дан 8 December 2019 в 13:46
поделиться

Использование получений в TOSTRING - это сверху. И вы не должны использовать ToString для не отладки.

2
ответ дан 8 December 2019 в 13:46
поделиться

используя String.format("%s %s", this.getField1(), this.getField2()); было бы лучше всего это сделать, поскольку методы .getXXX() могли бы иметь в них логику, подобную преобразованию NULL ссылок в пустые строки или какое-нибудь значение по умолчанию, которое вы не получили бы просто слепого доступа к приватным экземплярам. Это самый безопасный способ сделать это, просто на случай, если кто-то придет и добавит логику в метод .getXXX() и не подумает обновлять реализацию .toString().

0
ответ дан 8 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: