1. Функції і методи в Java

Ви вже вивчили багато команд у Java, і це означає, що ви можете писати досить складні програми. 10, 20, 30 рядків коду в програмі — не така вона й велика, еге ж?

А от програма на 100+ рядків — уже велика, і розбиратися в її коді досить складно. Чи можна якось спростити написання й читання програм з великим обсягом коду?

Так, і допоможуть нам у цьому методи (функції).

Що ж таке метод? Ну, якщо дуже спростити визначення, то метод — це група команд, яка має унікальне ім'я. Інакше кажучи, ми просто компонуємо декілька команд в одну групу і даємо їй унікальне ім'я. І все — метод готовий.

Приклад:

Без методу З методом
class Solution
{
   public static void main(String[] args)
   {
     System.out.print("Wi-");
     System.out.println("Fi");
     System.out.print("Wi-");
     System.out.println("Fi");

     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void main(String[] args)
   {
     printWiFi();
     printWiFi();
     printWiFi();
   }
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}

У програмі в лівому стовпчику тричі повторюється один і той самий код — ми зробили так спеціально, для прикладу. А в програмі праворуч ми винесли повторюваний код в окремий метод і дали йому унікальне ім'я — printWiFi.

І замість винесеного коду тричі написали виклик методу printWiFi().

Під час виконання програми в лівому стовпчику щоразу під час виконання команди printWiFi() виконуватимуться всі команди всередині методу printWiFi(). Ми просто створили нову команду (метод), об'єднавши в одну групу кілька команд.

Будь-який код можна розбити на окремі методи. Це роблять з метою спрощення: вважається, що краще мати багато маленьких методів, ніж один великий.  Невдовзі ви будете дивуватися з того, що раніше писали власні програми, але не створювали власних методів.


2. Оголошення методу в Java

Як же все-таки правильно написати свій метод?

Під час оголошення (створення) методу слід враховувати багато нюансів, але почнімо з головного. Як же нам оголосити найпростіший метод? Оголошення простого методу має такий вигляд:

public static void ім'я()
{
   код методу
}

де ім'я — це унікальне ім'я методу, а код методу — це команди, з яких він складається. Значення слів public, static і void ми розглянемо дещо пізніше.

Після створення методу ми можемо викликати його в інших наших методах. Виклик має такий вигляд:

ім'я();

де ім'я — це унікальне ім'я методу, який ми хочемо викликати й команди якого хочемо виконати в місці виклику.

Дійшовши до команди, що містить виклик нашого методу, програма просто перейде в цей метод, виконає всі його команди, повернеться до початкового методу і продовжить виконання.

Як ви вже, напевно, здогадалися, більша частина вивчених нами команд — це просто методи, написані іншими програмістами, щоб полегшити нам життя: System.out.println(), Thread.sleep() тощо.

Код методу може містити виклики інших методів:

Код Примітка
class Solution
{
   public static void main(String[] args)
   {
     print10TimesWiFi();
   }

   public static void print10TimesWiFi()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}




Викликаємо метод print10TimesWiFi()


Оголошуємо метод print10TimesWiFi


Викликаємо метод printWiFi() 10 разів у циклі


Оголошуємо метод printWiFi

Виводимо на екран текст:
Wi-Fi

3. Факти про методи

А от іще кілька фактів про методи:

Факт 1. Метод — це завжди частина класу.

Метод можна оголосити тільки в класі.  Метод не можна оголосити всередині іншого методу. Метод не можна оголосити за межами класу.

Факт 2. Ім'я методу не несе сакрального змісту

Неважливо, як називати методи — це ні на що не впливає. Метод main — це такий же метод, як і всі інші. Просто таке ім'я вибрали для методу, з якого Java-машина починає виконання програми. Нічого магічного в ньому немає.

Факт 3. Порядок розташування методів у класі не має значення

Ви можете написати свої методи в класі в будь-якому порядку — це жодним чином не вплине на виконання програми. Приклад:

Код
class Solution
{
   public static void print10TimesWiFi()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }

   public static void main(String[] args)
   {
     print10TimesWiFi();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }

   public static void print10TimesWiFi()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   public static void main(String[] args)
   {
     print10TimesWiFi();
   }
}

Факт 4. Змінні всередині одного методу ніяк не пов'язані зі змінними інших методів

Що відбувається у Вегасі, залишається у Вегасі. А змінні, оголошені всередині методу, залишаються всередині цього методу.

У двох сусідніх методах можна оголосити однакові змінні, і ці змінні жодним чином не будуть пов'язані одна з одною.


4. Імена методів

Вже давно відомо, що дві найскладніші проблеми в програмуванні — це як правильно підібрати назву методу і як назвати змінну.

Насправді вже існує майже ціла наука про те, як правильно називати методи. І в кожній мові програмування є свої стандарти. У Java зазвичай керуються такими принципами:

Принцип 1. Ім'я методу має коротко описувати те, що цей метод робить.

Тоді програміст, який читає ваш код, з імені методу зможе здогадатися, що саме цей код робить, і не буде змушений щоразу дивитися на код всередині методів. Та й призначення методів запам'ятати легше.

Згадайте той-таки Thread.sleep() — «приспати програму» або Scanner.nextInt() — «зчитати наступне ціле число». Зручно ж, правда?

Принцип 2. Ім'я методу може складатися з кількох слів.

Однак на цей випадок є кілька обмежень:

  • Пробіли в імені методу використовувати не можна: усі слова пишуться разом.
  • Кожне слово пишеться з великої літери, окрім першого.
  • Ім'я методу завжди пишеться з маленької літери.

Згадайте той-таки метод print10TimesWiFi. Що означає його ім'я? «написати 10 разів слово WiFi». Багато слів в імені методу писати не треба: ім'я має відбивати саму суть.

Такий стандарт написання імен називається CamelCase (Camel — верблюд. Великі літери схожі на верблюжі горби).

Принцип 3. Ім'я методу починається з дієслова.

Метод завжди щось робить, тому перше слово в назві методу — це завжди дія.

Невдалі імена для методу: home, cat, car, train, …;

Хороші імена: run, execute, print, read, write, …

Принцип 4.  Використовуйте тільки латинські літери й цифри

Java дуже добре підтримує різні мови. Ви можете написати імена змінних, методів і класів хоч російською, хоч китайською — все працюватиме!

Але! Як довго ви вчили б Java, якби назва методу System.out.println() була китайською? Значно довше, ніж зараз, чи не так? Це по-перше.

А по-друге, над багатьма проектами працюють інтернаціональні команди. Дуже великою кількістю Java-бібліотек користуються програмісти з усього світу.

Тому рекомендовано в іменах методів використовувати тільки латинські літери й цифри.

Важливо!
Ім'я методу обов'язково має починатися з літери (з цифри — не можна).