Автоматическое изменение общего на частное (Java) - PullRequest
5 голосов
/ 17 февраля 2012

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

Знаете ли вы, могу ли я искать эти методы, чтобы сделать их приватнымиFastly?Я использую Eclipse.

Ответы [ 3 ]

9 голосов
/ 17 февраля 2012

Заменить все это один вариант.

Но Я предлагаю вам не делать этого.private и public для программиста.Если вы вызываете метод только из самого класса, это автоматически не означает, что имеет , чтобы быть private.Лучшее, что вы можете сделать, это просмотреть их по одному и спросить себя: « должен ли этот метод быть частью открытого интерфейса или нет ?».

Лично, когда я сталкиваюсь сprivate метод в классе, который мне нужно использовать, 99% времени я оставляю его private и ищу обходной путь.Это потому, что я предполагаю, что первоначальный автор кода знал, что он делает.Конечно, это не всегда применимо.

private является заявлением о намерениях.Это все равно что сказать - если вам нужно использовать это вне класса, вы делаете что-то не так.Вам не нужно это.

2 голосов
/ 17 февраля 2012

Следует помнить одну вещь: поскольку предполагается, что она является публичной областью, у вас могут быть классы вне вашего класса, вызывающие метод.Если вы в состоянии гарантировать себе, что у вас есть все возможные коды, вызывающие это.Вы также можете проверить, используется ли метод в Eclipse, щелкнув правой кнопкой мыши по методу и использовать ссылку или (ctrl + shift + G), чтобы убедиться, что этот метод не вызывается никуда.при переходе с публичного на приватный поиск и замена, вероятно, будут лучшим выбором.

1 голос
/ 17 февраля 2012

Возможно, одним из способов было бы заменить «публичные» слова на «приватные» слова в выбранных документах и ​​функцию «Заменить все». Но это имеет побочные эффекты, если у вас есть "public" в содержимом некоторого кода, отличного от сигнатуры метода, например возможно внутри String.

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

...