Простір для вивчення нової професії, зростання в кар’єрі або розвитку бізнесу👇🏻
Наша команда пише для вас найкращі та найцікавіші матеріали, які обов’язково допоможуть у вашому навчанні: https://genius.space/lab/
Last updated 1 month, 2 weeks ago
Мрієте про кар'єру в ІТ? Приєднуйтеся до Дня відкритих дверей у ІТ-школі FoxmindEd!
🗓 21 листопада о 15:00, онлайн на YouTube.
*💡 Що ви дізнаєтеся:
✅ Як ефективно вчитися програмуванню та здобути комерційний досвід.
✅* Найкращі можливості для навчання у FoxmindEd від засновників школи
🎙 Сергій Немчинський – CEO FoxmindEd, з багаторічним досвідом у програмуванні;
🎙Тетяна Мойсеєнко – COO FoxmindEd.
*🎁 Для учасників події:* подарунок після реєстрації та розіграш курсу серед учасників.
*🚀*** Реєструйтеся та запрошуйте друзів — вчитися з однодумцями ще цікавіше!
Останній день знижки 15% на пакет Platinum! Встигніть зареєструватися на новий потік курсу Enterprise Patterns за найвигіднішою ціною🔥****
📚 Курс створений на основі книги "Patterns of Enterprise Applications" Мартіна Фаулера, але адаптований до сучасних потреб розробників. Автор курсу, Сергій Немчинський, перетворив складні й застарілі приклади на зрозумілі та актуальні рішення для сучасного світу програмування.
Що на вас чекає на курсі:
🔸 Глибоке розуміння архітектури — від постановки завдання до повного створення програми.
🔸 Розбір різних варіантів побудови додатків, щоб ви могли впевнено обирати оптимальні рішення для кожної задачі.
🎯 Цей курс – ваша можливість вирости з розробника до архітектора, здатного вирішувати складні бізнес-задачі та створювати додатки з нуля.
🚀 Старт нового потоку – 2 грудня!
🔥 Лише до 15 листопада діє знижка 15% на пакет Platinum. Не втрачайте можливість отримати нові кар’єрні можливості 👉https://go.foxminded.ua/4fsExd1
Розгляньмо два патерни з курсу Enterprise Patterns.
*🔸Value Object*
Більшість програмістів хоча б раз чули про патерн Value Object. Це об’єкт, що містить лише примітивні поля і має сенс у контексті бізнес-логіки. Один з найпопулярніших прикладів — money, тобто сума та валюта. Уявіть собі фінансову систему: якщо вона оперує різними валютами, без Value Object легко припуститися помилки, наприклад, додавши японські єни до євро. Інший популярний об’єкт цього типу — DateRange, що містить початкову і кінцеву дати. Майже всі бізнес-додатки мають справу з датами: звіти, періоди виплат, фінансові показники. DateRange допомагає зменшити кількість параметрів у методах та спрощує код, що значно полегшує його читання та підтримку.
Практика показує, що додавання DateRange в проєкт зменшує обсяг коду і робить його зрозумілішим. Наприклад, метод із шістьма параметрами можна перетворити на метод із трьома параметрами, що приймає три DateRange. Таке впровадження зменшує ймовірність помилок та робить бізнес-логіку зрозумілішою. Роберт Мартін у своїй книзі «Чистий код» рекомендує об’єднувати параметри у структури, якщо їх занадто багато, і DateRange є ідеальним прикладом такого об’єднання.
Окрім цього, DateRange може містити методи для перевірки, наприклад, чи входить певна дата в діапазон, чи перетинаються два діапазони, кількість робочих днів тощо. Використання DateRange дозволяє згрупувати ці функції в одному місці, замість того, щоб розпорошувати їх по системі.
Спосіб зберігання Value Object в базі даних.
При роботі з ORM-платформами, такими як Hibernate або Doctrine, варто використовувати Value Object як Embedded Value. Це означає, що замість створення окремої таблиці для DateRange, варто зберігати поля дати початку і дати кінця безпосередньо в основній таблиці. Таке рішення спрощує роботу з даними і дозволяє уникнути складних запитів з об’єднанням таблиць.
*🔸Special Case*
Патерн Special Case також стосується нестандартних ситуацій, коли система стикається з особливими умовами. Уявіть користувача, який зайшов на сайт інтернет-магазину без реєстрації. Або пацієнта, який ще не пройшов реєстрацію, але хоче записатися на прийом. У таких випадках часто повертають NULL, що вимагає постійних перевірок і ускладнює код.
Замість цього Special Case пропонує повертати об’єкт з дефолтними значеннями. Наприклад, для незареєстрованого користувача можна створити об’єкт, який позначає такого користувача і не надає йому прав на редагування. Це рішення дозволяє централізувати обробку нестандартних випадків і робить код більш передбачуваним.
Value Object і Special Case — це корисні інструменти для організації коду, які допоможуть уникнути помилок і спростити роботу з бізнес-логікою.
Усі ці патерни детально розібрані на курсі Enterprise Patterns, тож реєструйтесь👉 https://go.foxminded.ua/4fsExd1
Набір на новий потік курсу Enterprise Patterns триває 👉****
📚 Курс створений на основі книги "Patterns of Enterprise Applications" Мартіна Фаулера, але адаптований до сучасних потреб розробників. Автор курсу, Сергій Немчинський, перетворив складні й застарілі приклади на зрозумілі та актуальні рішення для сучасного світу програмування.
Що на вас чекає на курсі:
🔸 Глибоке розуміння архітектури — від постановки завдання до повного створення програми.
🔸 Розбір різних варіантів побудови додатків, щоб ви могли впевнено обирати оптимальні рішення для кожної задачі.
🎯 Цей курс – ваша можливість вирости з розробника до архітектора, здатного вирішувати складні бізнес-задачі та створювати додатки з нуля.
🚀 Старт нового потоку – 2 грудня!
🔥 Лише до 15 листопада діє знижка 15%. Не проґавте можливість отримати нові кар’єрні можливості 👉https://go.foxminded.ua/4fsExd1
Найпопулярніші ліцензії та їхні особливості
🔸 MIT (Massachusetts Institute of Technology). Належить до дозвільного типу ліцензій, дає високий ступінь свободи та змогу користувачам робити з програмою все, що завгодно, за умови, що користувачі додадуть позначку про авторські права і ліцензії.
🔸Apache License 2.0. Це теж дозвільна ліцензія, як і MIT, але включає явне надання патентних прав від авторів до користувачів. Вона також вимагає повідомлення про зміни, що вносяться в код. Часто використовується у великих проєктах і організаціях, завдяки своєму юридичному захисту і сумісності з іншими ліцензіями.
*🔸GNU GPL (GNU General Public License).* Цю ліцензію ви, як комерційні розробники, не використовуєте ніколи. Ця ліцензія з авторським левом (від left). Вони ніби відмовляються від прав, але відмовляються досить дивно - вони відмовляються від прав за вас, тобто від ваших прав. Ця ліцензія вимагає, щоб будь-які змінені версії програмного забезпечення поширювалися за тією ж ліцензією, гарантуючи, що всі похідні роботи залишаються з відкритим вихідним кодом. Тобто, якщо ви використовували хоч щось, що поширюється під GPL, ви зобов'язані зробити весь свій додаток таким, що поширюється під тим же самим GPL. Ця ліцензія популярна, вона використовується в проєктах, пріоритетом яких є збереження принципів вільного забезпечення. Наприклад, ядро Linux.
*🔸Berkeley Software Distribution (BSD).* Ліцензії BSD виникли на базі операційної системи типу Unix. Вони належать до категорії дозвільних ліцензій, їхнє використання та поширення має мінімальні обмеження. Цей тип ліцензії дає змогу вам брати оригінальний продукт із відкритим вихідним кодом BSD, потім копіювати його, змінювати і поширювати відповідно до ваших власних потреб, під вашою власною ліцензією. Ліцензія поширена в мережевому і телекомунікаційному програмному забезпеченні. Наприклад, в операційній системі FreeBSD і в інших операційних системах гілки BSD, за винятком MacOS.
*🔸Громадська ліцензія Mozilla (MPL).* Це гібридна ліцензія, що дає змогу створювати похідні роботи, але вимагає, щоб модифікації коду, на який поширюється MPL ліцензія, були загальнодоступними. Тобто, не вийде зробити щось на основі MPL коду, а потім його продавати із закритим вихідним кодом - це все має бути загальнодоступним. MPL ліцензія в цьому сенсі схожа на GPL. Не використовуємо цю ліцензію, якщо ви комерційний розробник. Ця ліцензія використовується у веб-браузері Firefox. Ліцензія балансує між колаборацією з відкритим вихідним кодом і комерційним використанням.
Якщо ви тімлід або техлід команди, то це саме ваша відповідальність перевірити, що з ліцензіями все нормально. Саме ви ухвалюєте рішення про використання якої б то не було бібліотеки, фреймворку та інших інструментів у вас на проєкті.
Завжди ваш Сергій Немчинський!
Хороший розробник завжди тестує основні позитивні й негативні сценарії. Якщо ви бекенд-розробник, то результат роботи вашого коду часто видно лише в логах. Саме тут потрібні юніт-тести, щоб зрозуміти, чи все працює так, як задумано, і «падає» у разі помилки так, як треба.
*🔶Що таке юніт-тестування?*
Юніт-тестування перевіряє окремі «блоки» коду, зазвичай окремий клас або метод. Ідея в тому, щоб тестувати кожен блок ізольовано, не розгортаючи повний додаток. Юніт-тести — це автоматизовані тести, які можуть виконуватись у будь-який момент одним натисканням кнопки. Це дозволяє швидко побачити, чи є помилки: червона смужка означає, що тест «упав», зелена — пройшов успішно.
*🔶Чому важливі юніт-тести?*
Вони перевіряють зміни у коді. Без тестів кожне нове впровадження ризикує порушити роботу іншої частини системи. Натомість покриття юніт-тестами дозволяє бути впевненим у стабільності коду після змін і полегшує рефакторинг.
*🔶Як писати юніт-тести?*
Зазвичай, спершу код пишуть і перевіряють вручну. Після того як усе працює, варто перейти до рефакторингу й написання юніт-тестів. Юніт-тести фіксують поточний стан коду, і це забезпечує стабільність під час рефакторингу.
*🔶Test-Driven Development (TDD)*
TDD — це підхід, коли спершу пишуть тест, який навіть не компілюється, а потім створюють код, щоб тест пройшов. Такий метод може бути рятівним у складних завданнях і підвищує якість коду. Його популяризував Кент Бек, автор книги «Розробка через тестування».
*🔶Інструменти для юніт-тестування*
Кент Бек і Еріх Гамма створили бібліотеку XUnit, на основі якої з’явились JUnit для Java, NUnit для .NET, PyUnit для Python тощо. Сьогодні існує безліч інших інструментів, наприклад, mock-фреймворки для імітації зовнішніх систем. Це дозволяє тестувати тільки необхідний код, не зачіпаючи, скажімо, базу даних.
Якщо ця інформація допомогла зрозуміти важливість юніт-тестування та мотивувала вас до його вивчення, реєструйтесь на наш курс Unit тестування в Java
Завжди ваш Сергій Немчинський!
Простір для вивчення нової професії, зростання в кар’єрі або розвитку бізнесу👇🏻
Наша команда пише для вас найкращі та найцікавіші матеріали, які обов’язково допоможуть у вашому навчанні: https://genius.space/lab/
Last updated 1 month, 2 weeks ago