Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Чистый Код - классический труд Роберта Мартина
Автор книги "Чистый Код" (Clean Code: A Handbook of Agile Software Craftsmanship) — это Роберт Сесил Мартин, более известный как Uncle Bob (Дядя Боб).
Об авторе
Роберт Мартин — американский инженер-программист, один из создателей Manifesto for Agile Software Development (2001).
Основные работы Robert Martin
1. Clean Code: A Handbook of Agile Software Craftsmanship (2008)
Это основной труд, ставший библией для миллионов разработчиков:
// Пример из Clean Code: правильное именование
// ПЛОХО
int d; // прошедшее время в днях
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] == 4)
list1.add(x);
return list1;
}
// ХОРОШО
int daysSinceCreation;
public List<Cell> getFlaggedCells() {
List<Cell> flaggedCells = new ArrayList<>();
for (Cell cell : gameBoard)
if (cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}
Основные темы:
- Осмысленные имена переменных, функций, классов
- Функции должны быть малыми и делать одно
- Обработка ошибок через исключения
- Комментарии: когда писать, когда нет
- Форматирование кода
- Тестирование
2. The Clean Coder: A Code of Conduct (2011)
// Профессиональный подход к разработке
public class ProfessionalDeveloper {
public void sayNo() {
// Профессионал может сказать НЕТ невозможному
}
public void takeResponsibility() {
// Нести ответственность за свой код
}
public void continuousLearning() {
// Постоянно учиться
}
}
3. Clean Architecture (2017)
// Архитектурные слои:
// Presentation -> Application -> Domain
// Зависимости только ВНУТРЬ
public interface User {
String getName();
void changeName(String newName);
}
public class ChangeUserNameUseCase {
private final UserRepository repository;
public void execute(UserId id, String newName) {
User user = repository.findById(id);
user.changeName(newName);
repository.save(user);
}
}
SOLID принципы Uncle Bob
Роберт Мартин разработал SOLID — пять принципов объектно-ориентированного проектирования:
- S — Single Responsibility: один класс имеет одну причину менять
- O — Open/Closed: открыт для расширения, закрыт для модификации
- L — Liskov Substitution: подклассы заменяют базовый класс
- I — Interface Segregation: узконаправленные интерфейсы
- D — Dependency Inversion: зависимости от абстракций
Известные цитаты Uncle Bob
-
The only way to make the deadline is to keep the code as clean as possible at all times. Единственный способ сделать deadline — держать код чистым
-
Always leave the campground cleaner than you found it. Boy Scout Rule: оставляй код чище, чем нашел
-
The ratio of time spent reading code to writing code is well over 10:1. Мы 10x больше читаем код, чем пишем, поэтому читаемость критична
Практическое применение
// БЫЛО (грязный код)
public void pm(User u, String p) {
if (p.length() < 8) {
throw new Exception("Bad");
}
u.setPassword(p);
SQL.execute("UPDATE users SET password=" + p);
Email.send(u.getEmail(), "Password changed");
}
// СТАЛО (Clean Code)
private static final int MINIMUM_PASSWORD_LENGTH = 8;
public void changePassword(UserId userId, String newPassword)
throws InvalidPasswordException, UserNotFoundException {
if (!validator.isValid(newPassword)) {
throw new InvalidPasswordException(
"Password must be at least " + MINIMUM_PASSWORD_LENGTH + " characters");
}
User user = userRepository.findById(userId)
.orElseThrow(() -> new UserNotFoundException(userId));
user.changePassword(newPassword);
userRepository.save(user);
emailService.sendPasswordChangedNotification(user.getEmail());
}
Влияние Uncle Bob
- Соавтор Agile Manifesto (2001)
- Популяризатор TDD (Test-Driven Development)
- Создатель методологии Software Craftsmanship
- Вдохновитель поколений разработчиков
Заключение
Роберт Мартин (Uncle Bob) — легенда индустрии, чьи идеи трансформировали подход к разработке программного обеспечения. Его книги остаются актуальными спустя 15+ лет и являются обязательным чтением для любого серьезного Java-разработчика. Применение его принципов делает код надежным, тестируемым и легко поддерживаемым.