называть метод - используя set (), когда * not * установить свойство? - PullRequest
0 голосов
/ 27 апреля 2010

Подходит ли имя метода setX () только для установки свойства класса X?

Например, у меня есть класс, где выводом является строка HTML-таблицы. Прежде чем вы сможете вызвать getTable, вы должны вызвать setTable (), которая просто смотрит на другие свойства и решает, как построить таблицу. На самом деле напрямую не устанавливает какое-либо свойство класса - оно только устанавливает свойство. Когда он вызывается, класс создаст strHtmlTable, но вы не можете его указать.

Таким образом, вызов его setTable нарушает соглашение о том, что get и set являются интерфейсами для свойств класса.

Есть ли другое соглашение об именах для этого типа метода?

Редактировать: в этом конкретном классе есть как минимум два (и всего 8 необязательных) других методов, которые должны быть вызваны до того, как класс узнает все, что ему нужно для построения таблицы. Я решил использовать набор данных как отдельные методы, а не загромождать __construct () с 8 необязательными параметрами, порядок которых я никогда не запомню.

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

Я бы порекомендовал что-то вроде generateTable() вместо setTable(). Это создает ситуацию, когда название метода четко обозначает, что он делает.

Я, вероятно, все еще использовал бы метод setTable() для фактической установки свойства. В идеале вы могли бы открыть возможность установки ранее определенной таблицы для дополнительной гибкости.

0 голосов
/ 27 апреля 2010

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

Я бы определенно рекомендовал не иметь публичную setTable () и сказал бы, что setTable () может быть опущен или просто неиспользуемый приватный метод в зависимости от ваших требований.

Похоже, что действие по генерации таблицы - это скорее представление о других свойствах объекта, поэтому вы можете рассмотреть возможность его перемещения в закрытый метод объекта, например generateHtmlTable (). Это можно сделать во время конструирования (и после обновления объекта), чтобы любые последующие вызовы getTable () возвращали соответствующий HTML.

...