1 - есть ли смысл создавать
метод, если он будет вызван только один раз?
Да, для этого есть много причин. Читаемость, пожалуй, самая важная. Если вы можете сделать метод более читабельным и обслуживаемым, разбив его на части, то непременно сделайте это.
По моему опыту рефакторинга унаследованного кода, когда метод слишком длинный, есть маленькие кусочки кода, которые появляются снова и снова. Обычно это лучшие места для поиска возможностей рефакторинга. Создание отдельных методов для этих частей может значительно уменьшить длину метода, и, таким образом, greating увеличивает его читабельность.
2 - если я вызываю приватный метод
из моего класса я стараюсь не использовать
переменные экземпляра. Это хорошо или
плохая практика?
Обычно, чем меньше вы можете сделать область видимости переменной, тем лучше. Как и вы, я склонен использовать параметры, когда это возможно. Если у метода есть ссылки только на его собственные параметры, тогда становится намного проще рассуждать о методе, проверять его правильность и правильно его использовать. (И если метод может сделать это и не изменять какое-либо состояние, то это дает вам лот преимуществ обслуживания.)
Если цель метода лучше всего достигается путем манипулирования полями объекта, то это вполне приемлемо, а во многих случаях и недопустимо. Но, как вы указываете, это особенно верно с публичными методами. При рефакторинге большого метода на более мелкие, я редко, если вообще когда-либо, получаю доступ к полям членов непосредственно в новых методах. Это в основном просто для того, чтобы было легче рассуждать о поведении программы.
При рефакторинге таким образом убедитесь, что вы пометили новые методы как static
, если они не имеют доступа к каким-либо полям. Это сделает намерение явным.