Вернуться к содержанию курса
Вернуться к описанию правил выполнения практических заданий
Типичные ошибки при выполнении практических работ
Общие рекомендации
Важно понять - вашей задачей не является демонстрация того, насколько сложные и большие алгоритмы вы можете придумывать.
Измерять продуктивность программирования подсчетом строк кода — это так же, как оценивать постройку самолета по его весу.
— Bill Gates
Если вы решили задачу с использованием собственноручно придуманного сложного алгоритма, это хуже, чем если бы вы использовали общепринятый для решения подобных задач стандартный подход или алгоритм.
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
— Martin Golding
Ваш код должен быть понятен проверяющему с первого взгляда. Должна быть сразу понятна его логика, его структура, предназначение переменных, классов и методов.
Попробуйте написать код и отложить его на 5 дней, если после этого вы сможете при открытии любой строчки кода сразу сказать, что именно в ней происходит - значит код хорошо организован с точки зрения архитектуры.
Лучшие программисты не чуть-чуть лучше хороших. Они на порядок лучше по любым меркам: концептуальное мышление, скорость, изобретательность и способность находить решения.
— Randall E. Stross
Список частых ошибок по оформлению и структуре кода
- Форматируйте весь свой код! В IntelliJ IDEA (Комбинация Ctrl+Alt+L).
- Давайте осмысленные имена классам, переменным и методам:
- Из названия класса или метода должно быть понятно, за что он отвечает.
- Из названия переменной должно быть понятно, что она в себе хранит.
- Не используйте в названиях методов, классов и обычных переменных
_
или -
, просто пишем в camelCase.
- Название констант пишется в uppercase формате через нижнее подчеркивание
_
.
- Старайтесь не ставить лишние скобки в выражениях.
- Используйте сокращенную запись операций, где это возможно.
- Используйте
&&
и ||
вместо &
и |
.
- В операторе if…else ставьте else в той же строке, что и закрывающаяся скобка.
if (...) {
//...
} else {
//...
}
- При использовании проверки условия, возвращающего boolean не нужно проверять его на true/false. Он и так возвращает
true/false.
// Вместо
boolean isActive = ...;
return isActive == true;
// Используйте
boolean isActive = ...;
return isActive;
- Используйте статический импорт утилитарных методов.
- Не используем конкатенацию строк в цикле.
- Сравнение объектов производим только через equals.
- Код пишем в {…} даже если он состоит из одной строки.
// Вместо
if (...) doSomething();
// Используйте
if (...) {
doSomething();
}
- Не используем множественное присваивание.
- Убираем закомментированный код перед коммитом.
- Не используем большие пропуски в коде.
- Где это возможно, сразу возвращаем результат, без дополнительных присваиваний.
// Вместо
int result = weight + height;
return result;
// Используйте
return weight + height;
- Делаем отступы между методами.
- Имя классов пишем с заглавной буквы, имя методов – с прописной.
- Выдаем код в окончательном виде (рабочий код, красиво оформленный, без лишних классов), а не в виде полуфабриката.
- Знак обозначения массива пишем в типе, а не в имени переменной.
- Как можно сильнее разбивайте вашу программу на классы и методы. Класс, который инкапсулирует слишком много логики или
метод, который занимает весь экран - первые кандидаты на рефакторинг.
- Используйте fast return, где это возможно.
// Вместо
if (result != null) {
if (result == 5) {
return true;
} else {
return false;
}
} else {
return false;
}
// Используйте
if (result == null) {
return false;
}
if (result == 5) {
return true;
}
return false;
// Идеально
return result == 5;
- Избегайте возвращения null из методов.
// Вместо
public List<User> getUserByName(String name) {
// не нашли пользователей с данным именем
return null;
}
// Используйте
public List<User> getUserByName(String name) {
// не нашли пользователей с данным именем
return Collections.emptyList()
// Либо return new ArrayList<User>();
}
- Где это возможно, используйте foreach вместо for. В идеале, использовать Stream API, но только если вы понимаете, что
вы делаете.
// Вместо
List<Users> users = getUserByName("Petr");
for (int i = 0; i < users.size(); i++) {
System.out.println(users.get(i));
}
// Используйте
for (User user : users)
System.out.println(user);
}
// Идеально
users.foreach(System.out::println);
Я сделал всё задание в одной ветке, как мне теперь кинуть pull request?
Для работы с git тут используется GitKraken
Для начала запуште всё что вы сделали в вашей ветке.
Затем сделайте checkout на самый первый комит который вы сделали в вашей ветке

Далее создайте ветку от этого комита и запуште её

Ну и в конце создайте pull request из основной ветки в ветку которую вы только что создали.
