TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
Про єнотів та IT

3 Dec 2020, 22:52

Open in Telegram Share Report

SOLID

Single responsibility
— клас відповідає за одну функцію
— код позбавляється копіпасти (дублікатів)
— при дебагу простіше виправляти помилки, бо немає шматків коду, що повторюються

Нехай у вас є якийсь клас Date, який віддає інформацію про температуру та час. Якщо якийсь Вася хоче отримати інформацію про час, йому доведеться продублювати обидва методи цього класу. Те саме стосується й якогось Андрія, який захоче отримати інформацію про температуру.
————— ————— —————
|DateTemp| копія |Date | копія |DateTime |
—————— ——————
|- temp() | |- time() | |- time() |
—————— |- temp() | ——————
—————
Правильніше буде створити 2 окремі класи, які повертатимуть температуру та час відповідно.

Opened-closed
— клас має бути відкритий для розширення, і закритий для змін
— чому добре дотримуватися цього принципу? якщо у вас був уже протестований шматок коду і ви додаєте новий, не змінюючи поточний, вам не потрібно тестувати старий. швидше за все, у ньому не буде багів

Liskov Substitution
— поведінка спадкових класів не повинна суперечити роботі базових
— підклас не повинен вимагати від коду, що викликає, більше, ніж базовий клас, і не повинен надавати коду, що викликає, менше, ніж базовий клас.
— Там де використовується Child клас, повинен підходити і його Parent

Наприклад, у вас є класи Child та Parent. Неправильною буде наступна реалізація:
— використовуючи Parent, можна викликати будь-який метод, а використовуючи Child потрібні додаткові дії для виклику того ж методу. Наприклад, виклик якогось init()
— якщо метод getMessages() класу Parent повертає колекцію з бази даних, Child не повинен повертати порожній масив або null

Допустимо, у вас є класи Rectangle та Square, який успадковується від першого. Якщо написати тест на Rectangle, який вважатиме площу функцією a*b, виникне помилка, так як у дочірньому класі Square не реалізована сторона b.
——— ————
|Rect | extends | Square |
———

170 0 2
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot