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