JavaRush /Java блог /Random UA /Кава-брейк #70. Як прискорити написання коду Java за допо...

Кава-брейк #70. Як прискорити написання коду Java за допомогою Lombok Список навчання для програмістів-початківців

Стаття з групи Random UA

Як прискорити написання коду Java за допомогою Lombok

Джерело: Dev.to У кожному додатку ми пишемо той самий шаблонний код. Наприклад:
  • Геттери;
  • Сетери;
  • Конструктори;
  • Патер проектування Builder;
  • і багато іншого…
Чи було б непогано, якби цю рутинну роботу можна було б комусь доручити? І тут нам може допомогти Lombok.Кава-брейк #70.  Як прискорити написання коду Java за допомогою Lombok  Мій список навчання для програмістів-початківців - 1

Що він робить?

Він генерує байтовий код для цих загальних завдань (гетери, сеттери тощо) і поміщає його в .class, що робить їх придатними для використання в коді, який ми пишемо.

Як це відбувається?

Необхідно додати залежність Lombok до складання Maven. Потім потрібно анотувати потрібні класи, поля з деякими інструкціями Lombok. Давайте подивимося на код! Без Lombok:
public class Human {
    private int id;
    private String name;
    private int ageInYears;

    public Human() { }

    public Human(int id, String name, int ageInYears) {
        this.id = id;
        this.name = name;
        this.ageInYears = ageInYears;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAgeInYears() {
        return ageInYears;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAgeInYears(int ageInYears) {
        this.ageInYears = ageInYears;
    }

    // Builder pattern
  public Human id(int id){
        this.id = id;
        return this;
    }
    public Human name(String name){
        this.name = name;
        return this;
    }
    public Human ageInYears(int ageInYears){
        this.ageInYears = ageInYears;
        return this;
    }

    @Override
  public String toString(){
        return String.format("Human(id=%s, name=%s, ageInYears=%s)",
                this.id, this.name, this.ageInYears);
    }
}
А тепер застосуємо Lombok:
import lombok.*;
@Getter @Setter
@AllArgsConstructor @NoArgsConstructor
@Builder @ToString
public class Human {
    @Setter(AccessLevel.NONE)
    private int id;
    private String name;
    private int ageInYears;
}
Залежність Maven виглядає так:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.16</version>
    <scope>provided</scope>
</dependency>
Примітка: частина з версією змінюватиметься в залежності від останнього релізу Lombok.

Що ми зробабо?

Ми використовували інструкції для створення геттерів, сетерів, конструкторів, патерна проектування Builder, реалізації toString. Також ми можемо внести зміни до деяких анотацій, таких як сеттер для поля id. Ми встановлюємо для нього рівень доступу None: це означає, що ми не створюємо йому сетер.

Чи варто це робити?

Ми написали 52 рядки , коли не використовували Lombok. Ми написали 8 рядків , використовуючи Lombok. Lombok допоміг нам зменшити розмір коду майже в 4 рази . Цей показник можна покращити, якщо в наших класах буде більше змінних. Lombok має набагато більше анотацій, в яких вказана маса корисної інформації. Щоб переглянути їх, відвідайте веб-сайт .

Висновок

Lombok допомагає зосередитися на бізнес-коді і не турбуватися про дрібні деталі (гетерів/сетерів/конструкторів/загальні шаблони проектування та інші конструкції Java).

Список навчання для програмістів-початківців

Джерело: DZone У мого друга є син, який незабаром закінчить середню школу. Він трохи знає програмування та замислюється, чи не стати йому програмістом. Нещодавно він спитав мене: “Що мені вчити далі?”. Кава-брейк #70.  Як прискорити написання коду Java за допомогою Lombok  Мій список навчання для програмістів-початківців - 2Коли я тільки почав вивчати програмування, я припускав, що відповіддю на питання «Що мені слід вивчати далі» буде нова технологія програмування, нова мова, нова бібліотека або щось таке. У міру того, як я просувався кар'єрними сходами, я змінив свою думку. Крім відточування навичок програмування та вивчення нових мов, програмістам-початківцям слід навчатися в суміжних областях (це я поясню нижче). У цьому тексті я хочу зібрати список навичок, які я порекомендував би освоїти програмістам. Моя мета не в тому, щоб перерахувати всі актуальні знання або вказати посилання на навчальні посібники. Натомість я хочу допомогти новачкам ознайомитися з набором інструментів, методів та навичок, які можуть їм допомогти в написанні програм.

Командна строка

Я вважаю, що мене вже вважають «старим» за деякими стандартами. У мій час використовувати комп'ютер – це означало сидіти в DOS та вводити команди. З того часу багато що змінилося. Дуже важливо навчитися користуватися командним рядком. Багато інструментів надають лише інтерфейс командного рядка. У деяких випадках у командному рядку можна працювати швидше. Ви повинні вміти робити такі базові речі, як:
  • Обхід каталогу.
  • Керування файлуми (копіювання/переміщення/видалення).
  • Компіляція та/або запуск вихідного коду.
Якщо ви працюєте в Windows, я рекомендував би ознайомитися з Linux, можливо, використовуючи WSL2 замість повноцінної віртуальної машини. Якщо ви працюєте на Mac, можна використовувати оболонку, вбудовану в ОС. Також ви можете отримати добрий досвід, встановивши віртуальну машину Linux.

Контроль версій

Вам потрібно навчитися відстежувати вихідний код за допомогою версій. Програмне забезпечення для керування версіями дозволяє відстежувати історію змін вашого проекту, це може бути життєво важливим для налагодження. Це також полегшує колективну роботу над кодовою базою. GitHub і GitLab - два популярні сайти для розміщення проектів з відкритим вихідним кодом. Обидва вони використовують Git (як я вважаю, це зрозуміло за назвами). Git - найпопулярніший інструмент у наші дні, тому я б рекомендував розібратися з використанням Git у командному рядку з GitHub або GitLab як репозиторій.

Мережі

Сьогодні більшість програм потребує хоча б деякий рівень мережевої взаємодії. Розуміння того, як працюють мережі, важливе. Принаймні, ви повинні розуміти основи, такі як IP-адресаи, порти та протоколи. Вивчення брандмауерів, балансування навантаження, проксі-серверів надалі окупиться. І не лише у вашій кар'єрі програміста. Погодьтеся, адже чудово розумітися на питанні «чому не працює Wi-Fi?». Також я б порекомендував вивчити основи роботи хмарних сервісів, таких як AWS та Azure. Спроба налаштувати віртуальну приватну хмару AWS із підмережами, правилами входу, шлюзами дасть досвід роботи з мережами.

Тестування

Невід'ємна частина написання хорошого програмного забезпечення — це навчитися тестувати програмне забезпечення. Багато хто з нас навчається програмувати, а потім «тестує» свій код. Модульне та інтеграційне тестування – це необхідні навички, які можна використовувати практично для будь-якого програмного забезпечення, над яким ви працюєте. Хоча спочатку тестування здається стомлюючим, це вміння окупиться і дозволить вам працювати швидше та з більшою впевненістю.

Безперервна інтеграція

Безперервна інтеграція, або CI, поєднує тестування і контроль версій. Щоразу, коли ви створюєте нову ітерацію коду, у вас є набір тестів, які запускаються автоматично. За останні 10 років інструменти CI значно покращали. GitHub і GitLab мають вбудовані рішення CI (GitHub Actions і GitLab CI відповідно), з ними легко почати роботу. Як і з тестуванням, початок роботи з CI буде "тугим". Але як тільки ви вивчите основи, вам стане набагато легше та швидше виявляти проблеми. Я б рекомендував пошукати докладний посібник із прикладами для використовуваної вами мови програмування.

Навички листа

Напевно, це та область, яку я найбільше недооцінював, коли починав працювати програмістом. Я не перебільшую: зараз я вважаю, що найважливіша навичка, яку програміст може додати до свого арсеналу, — це вміння писати. Добре письмові навички означають, що ви можете чітко пояснити ідею, використовуючи мінімальну кількість слів. Коли ви вчитеся програмувати, зазвичай працюєте самостійно, тому писати не обов'язково. Але коли ви почнете працювати в командах, вам потрібно буде написати:
  • документацію;
  • Звіти про помилки;
  • Запити функцій;
  • Пропозиції клієнтів;
  • Документи із вимогами;
  • Електронні листи (дуже багато листів!);
  • Текстові повідомлення;
  • Повідомлення у блогах (можливо);
Навчіться писати. Вправляйтеся. Пройдіть літературні курси. Це буде приносити дивіденди все життя. Крім того: навчитеся добре читати. Коли я тільки-но починав професійний розвиток, мене лякали документи з вимогами. Зараз я розумію, що, приділивши кілька годин на уважне вивчення цієї інформації, ви заощадите місяці, витрачені марно, на створення неправильної речі.

Інші мови програмування

У наші дні недостатньо знати лише одну мову програмування. Майже кожен програміст повинен знати хоча б кілька. Важливо вивчити інші мови, щоб дізнатися про нові техніки. Я рекомендую вивчити декілька різних категорій мов. У порядку зменшення за пріоритетом: Функціональне програмування. Більшість шкіл досі не викладають функціональне програмування (FP). FP - це сильний підхід, який спрощує написання багатьох видів коду. Я упереджений, але я б рекомендував Haskell як найкраща мова для вивчення, оскільки він допоможе зрозуміти FP краще, ніж багато інших мов. Також корисно вивчити мову сімейства LISP. Вивчення функціонального програмування допоможе вам писати найкращий код практично будь-якою мовою. Системне програмування. Системні мови відносяться до нижчого рівня та дозволяють краще контролювати роботу програми. Завдяки їх вивченню ви дізнаєтеся, як програма працює в системі, що може виявитися дуже корисним для розуміння та налагодження проблем іншими мовами. Я рекомендую вивчити Rust, а потім C і C++. Об'єктно-орієнтовані мови. Java і C# - дві найпопулярніші об'єктно-орієнтовані мови в цьому сімействі. (Так, Python і C++ теж популярні, але я виокремлю їх окремо). ООП представило багато нових парадигм і, ймовірно, досі залишається найпопулярнішим підходом до програмування, хоча я особисто віддаю перевагу підходам функціонального програмування. Тим не менш, у об'єктно-орієнтованого програмування є чому повчитися, і є ймовірність, що вам доведеться писати об'єктно-орієнтований код у своїй кар'єрі. Написання сценаріїв. Python і Ruby – дві популярні мови сценаріїв у сімействі об'єктно-орієнтованих додатків. Зокрема, Python широко використовується в суміжних областях, таких як DevOps та data science. Крім того, це проста мова, з якою досить легко розпочати роботу.

Методи програмування

Незалежно від того, яку мову програмування ви використовуєте, варто ознайомитися з деякими додатковими прийомами, що виходять за межі конкретної мови, зокрема:
  • Програмування бази даних. Я рекомендую вивчити SQL. SQLite та PostgreSQL — дві СУБД із відкритим вихідним кодом для вивчення.
  • Паралелізм та асинхронне програмування. Сьогодні це стає дедалі важливішим.
  • Мережеве програмування , особливо створення HTTP-серверів та клієнтів.
  • Створення веб-інтерфейсу за допомогою HTML/CSS/JavaScript.
  • Серіалізація даних у таких форматах, як JSON, YAML та двійкові файли.

Висновок

Наведена вище інформація може бути складною. Не потрібно думати, що вам потрібно все це вивчити, щоб стати програмістом. Це не так. Щоб стати чудовим програмістом, потрібен час та професійна практика. Якщо ви ще не почали програмувати, я б порадив почати з деяких pet-проектів. Подумайте про участь у проектах з відкритим вихідним кодом. Це допоможе вам краще освоїтися та отримати знання у досвідчених кодерів. Багато програмістів люблять ділитися знаннями з новачками.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ