1. Функции/Методы в Java
Вы уже выучили большое количество команд в Java, и это значит, что вы можете писать достаточно сложные программы. 10, 20, 30 строк кода в программе — не такая и большая программа, верно?
А вот программа в 100+ строк — уже большая, и разбираться в ее коде довольно сложно. Можно ли как-то упростить написание и чтение программ с большим количеством кода?
Да, и помогут нам в этом методы (функции).
Что же такое метод? Ну, если очень сильно упростить, то метод — это группа команд, у которой есть уникальное имя. Другими словами, мы просто компонуем несколько команд в одну группу и даем ей уникальное имя. И все — метод готов.
Пример:
Без метода | С методом |
---|---|
|
|
В программе в левой колонке у нас три раза повторяется один и тот же код — мы так специально сделали для примера. А в программе справа мы вынесли повторяющийся код в отдельный метод и дали ему уникальное имя — printWiFi
.
И вместо вынесенного кода 3 раза написали вызов метода printWiFi()
.
Когда программа в колонке справа будет исполняться, каждый раз при выполнении команды printWiFi()
она будет выполнять все команды внутри метода printWiFi()
. Мы просто создали новую команду (метод), объединив в одну группу несколько команд.
Любой код можно разбить на отдельные методы. Это делают для упрощения: считается, что лучше иметь много маленьких методов, чем один большой. Скоро вы будете удивляться тому, что раньше писали свои программы, но не писали свои методы.
2. Объявление метода в Java
Так как все-таки правильно написать свой метод?
При объявлении (создании) метода нужно учитывать много нюансов, но давайте начнем с основного. Как нам все-таки объявить самый простой метод? Объявление простого метода выглядит так:
public static void имя()
{
код метода
}
Где имя
— это уникальное имя метода, а код метода
— это команды, из которых состоит метод. Значение слов public
, static
и void
мы рассмотрим несколько позднее.
После того, как мы создали метод, мы можем вызывать его в других наших методах. Вызов выглядит так:
имя();
Где имя
— это уникальное имя метода, который мы хотим вызвать, и команды которого мы хотим выполнить в месте его вызова.
Когда программа дойдет до команды, содержащей вызов нашего метода, она просто перейдет в метод, выполнит все его команды, вернется в изначальный метод и продолжит выполнение.
Как вы уже, наверное, догадались, большая часть изученных нами ранее команд — это просто методы, написанные другими программистами, чтобы облегчить нам жизнь: System.out.println()
, Thread.sleep()
, и т.д.
Код метода может содержать вызовы других методов:
Код | Примечание |
---|---|
|
Вызываем метод printWiFi10Times() Объявляем метод printWiFi10Times Вызываем метод printWiFi() 10 раз в циклеОбъявляем метод printWiFi Выводим на экран текст:
|
3. Факты о методах
Вот еще несколько фактов о методах:
Факт 1. Метод — это всегда часть класса.
Метод можно объявить только в классе. Метод нельзя объявить внутри другого метода. Метод нельзя объявить вовне класса.
Факт 2. Имя метода не несет сакрального смысла
Неважно, как называются методы — это ни на что не влияет. Метод main — это такой же метод, как и все остальные. Просто такое имя выбрали для метода, с которого Java-машина начинает исполнение программы. Ничего волшебного в нем нет.
Факт 3. Порядок методов в классе не важен
Вы можете написать ваши методы в классе в любом порядке — это никак не повлияет на выполнение программы. Пример:
Код | |
---|---|
|
|
Факт 4. Переменные внутри одного метода никак не связаны с переменными других методов
Что происходит в Вегасе, остается в Вегасе. А переменные, объявленные внутри метода, остаются внутри этого метода.
В двух соседних методах могут быть объявлены одинаковые переменные, и эти переменные никак не связаны друг с другом.
4. Имена методов
Уже давно известно, что в программировании две самые сложные проблемы — как правильно подобрать название метода и как назвать переменную.
На самом деле, уже существует чуть ли не целая наука о том, как правильно называть методы. И у каждого языка программирования есть свои стандарты. В Java принято руководствоваться такими принципами:
Принцип 1. Имя метода должно кратко описывать то, что этот метод делает.
Тогда программист, который читает ваш код, по имени метода сможет догадаться, что этот код делает, и ему не нужно будет каждый раз смотреть код вызываемых методов. Да и назначение методов запомнить легче.
Вспомните тот же Thread.sleep()
— «усыпить программу» и Scanner.nextInt()
— «считать следующее целое число». Удобно же, правда.
Принцип 2. Имя метода может состоять из нескольких слов.
Однако для этого случая есть несколько ограничений:
- Пробелы в имени метода писать нельзя: все слова пишутся слитно.
- Каждое слово пишется с большой буквы, кроме первого.
- Имя метода всегда пишется с маленькой буквы
Вспомните тот же метод printWiFi10Times
. Что значит его имя? «написать 10 раз слово WiFi». Много слов в имени метода писать не нужно: имя должно отражать самую суть.
Такой стандарт написания имен называется CamelCase (Camel — верблюд. Большие буквы похожи на верблюжьи горбы).
Принцип 3. Имя метода начинается с глагола.
Метод всегда что-то делает, поэтому первое слово в названии метода — это всегда действие.
Плохие имена для метода: home
, cat
, car
, train
, ...;
Хорошие имена: run
, execute
, print
, read
, write
, ...
Принцип 4. Используйте только латинские буквы и цифры
Java очень хорошо поддерживает разные языки. Вы можете написать имена переменных, методов и классов хоть на русском, хоть на китайском — все будет работать!
Но! Как долго вы бы учили Java, если бы названия метода System.out.println()
было на китайском? Гораздо дольше, чем сейчас, не так ли? Это, во-первых.
Во-вторых, над многими проектами работают интернациональные команды. Очень большое количество Java-библиотек используется программистами со всего мира.
Поэтому рекомендуется в именах методов использовать только латинские буквы и цифры.