Какие методы и интерфейсы вы (почти) всегда используете в классах? - PullRequest
7 голосов
/ 05 апреля 2009

Какие методы и интерфейсы вы всегда используете в своих классах?

Вы всегда переопределяете equals ()? Если вы делаете, вы также делаете хэш-код ()? нанизывать()? У вас есть привычка внедрять Comparable интерфейс?

Я только что написал некоторый код, в котором мне нужно было реализовать compareTo () и переопределить equals (), чтобы заставить мою программу работать в здравом уме; Теперь я начинаю видеть способы их использования везде ...

Что вы думаете?

Ответы [ 14 ]

0 голосов
/ 05 апреля 2009

Я обычно реализую метод compareTo, а также метод toString. Как правило, полезно знать, как один экземпляр класса сравнивается с другим для сортировки и поиска. Также переопределенный метод toString отлично подходит для отладки. Вы можете видеть содержимое класса (а не только область памяти), представленное таким образом, который имеет смысл для написанного вами класса.

0 голосов
/ 05 апреля 2009

Для бизнес-приложений CRUD я всегда перезаписываю ToString. Это помогает при привязке List (Of T) к элементу управления WinForm. Например, переопределение ToString в объекте Customer для возврата _name автоматически отобразит значение имени клиента при привязке List (Of Customer) к элементу управления ListBox. Пригодится.

0 голосов
/ 05 апреля 2009

То же самое для toString() и его вариантов на разных языках и во время выполнения, но я также хотел бы указать вам на статью Неда Батчелдера о stringification , которая хорошо читается и близка к моим рассуждениям за это.

0 голосов
/ 05 апреля 2009

toString() иногда действительно полезен для целей тестирования, когда вам лень писать модульные тесты, также пригодится для просмотра при отладке.

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

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