Доброго дня, шановні читачі Codeguida! В цій невеликій статті, я хотів би дати декілька порад, що, на мою думку, можуть бути корисними для тих, хто відносно недавно розпочав вивчення Java.
- Уникайте створення зайвих об'єктів і завжди віддавайте перевагу «лінивій» ініціалізації.
Як відомо, сворення об'єктів в Java – дорога, в плані продуктивності та використання пам'яті, операція. Таким чином, бажано, створювати або ініціалізувати об'єкти лише тоді, коли це необхідно.
public class Human {
private List friends;
public List getFriends () {
//ініціалізація лише тоді, коли це необхідно
if(null == friends) {
friends = new ArrayList();
}
return friends;
}
}
-
Щоб перевірити порожній рядок завжди використовуйте
isEmpty()
замістьequals()
.
Є декілька різних шляхів, щоб перевірити порожній рядок чи ні, і один з них це abc.equals("")
. Ніколи не робіть так.
Найкращий спосіб перевірити порожній рядок рядок чи ні – використання методу isEmpty()
.Цей метод просто порівнює довжину рядку з 0, використовуючи метод length()
. Тому ця операція є менш витратною.
Щоб впевнитись, просто порівняте вихідний код equals()
та isEmpty()
:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
public boolean isEmpty() {
return value.length == 0;
}
- Повертайте порожні колекції замість null.
Якщо функція повертаю колекцію, що немає значень, переконайтеся, що повертається саме пуста колекція, а не null. Це позбавить вас додаткових перевірок на null.
public List<user> getUsers() {
return ( null == users ? new ArrayList<user>(0) : users);
}
- Використовуйте рядки обережно.
Якщо два рядки об'єднані за допомогою "+" в "for" циклі, то кожного разу створюється новий об'єкт String. Це викликає втрати пам'яті і збільшує час виконання. Крім того, уникайте використання конструктору при створення рядка. Наприклад
//Повільніша ініціалізація
String str1 = new String("Повільніша ініціалізація");
//Швидша ініціалізація
String str2 = "Швидша ініціалізація";
- Намагайтесь використовувати примітиви замість класів-обгорток.
Класи-обгорки працюють повільніше за примітиви, оскільки вони зберігають додаткову інформацію, а примітиви – це лише значення. Іноді програміст може зробити помилку в коді, використовуючи клас-обгортку. Розглянемо наведений нижче приклад:
int x = 10;
int y = 10;
Integer x1 = new Integer(10);
Integer y1 = new Integer(10);
System.out.println(x == y);
System.out.println(x1 == y1);
Перший sysout, друкуватиме true, в той час як другий буде друкувати false. Проблема в тому, що для порівняння двох об'єктів класу-обгортки ми не можемо використовувати оператор ==, оскільки він порівнює посилання, а не фактичне значення.
- Ніколи не кидайте "java.lang.Exception".
Ніколи не кидайте відразу java.lang.Exception. Це суперечить меті використання зазначених винятків. Кидайте більш конкретні виключення, або створюйте власні, якщо не знайшли необхідного, для конкретної ситуації.
- Обробка NullPointerException.
NullPointerException, є досить поширеним винятком в Java. Цей виняток виникає, коли ми намагаємось звернутись до метода чи поля об'єкта, що є посиланням на null.
Ніколи не обробляйте NullPointerException за допомогою try-catch-finally
. Більше доцільним буде перевірка поля на null.
int noOfStudents = 0;
if(school.listStudents() != null) {
noOfStudents = school.listStudents().count;
}
Шановні читачі, якщо стаття вам здалася цікавою й ви хотіли б побачити на Codeguida щось інше стосовно Java, будь ласка, пишіть теми для статей в коментарях.
Дякую за увагу!
Іллєнко Костянтин, Java Software Engineer.
Використані матеріали:
Ще немає коментарів