BG Development


Страници: (2) 1 [2]   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Spring Boot или обикновено ЕЕ приложение
ТК_
Публикувано на: 17-03-2020, 08:19
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 45
Регистриран на: 04.08.18



така и така си говорите за Spring boot,
да задам един ламерски въпрос -

Работя върху едно малко приложение с потребителски интерфейс ( засега конзолен )
и малко логика дето ще пише и чете в БД ( засега Оракъл ).

Понеже в периспектива има идея да се мигрира към Spring boot,
ми казват да не ползвам класове и да викам статични функции от тях,
а навсякъде из пакетите да инстанцирам и викам член функции на обекти,
иначе миграцията щяла да бъде кофти/ трудна.

Та затова питам, нямам представа от фреймуърка.
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 17-03-2020, 08:47
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3566
Регистриран на: 21.02.18



в ООП статичните методи са антипатерн и не трябва да се ползват


--------------------
https://ncase.me/trust-bg/
---
Misanthropy is the general hatred, dislike, distrust or contempt of the human species or human nature. A misanthrope or misanthropist is someone who holds such views or feelings.
---
INTJ’s are good at being very good at everything
---
I have a problem. Let's use Microservices! Now I have 13 distributed problems.
PMEmail PosterUsers Website
Top
ТК_
Публикувано на: 17-03-2020, 09:25
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 45
Регистриран на: 04.08.18



Малко странно ми звучи все пак.
Общо взето мисля за инстанциите като за "нещо" което е "нещо", но все пак има специфика,
заради която се налага да имам обекта съхраняващ тази специфика.
Когато няма специфика, а шаблонно поведение тогава не виждам причината да инстанцирам,
общо взето няма какво да съхранявам така да се каже "отделно".
В частен случай, да речем мога до сингълтън да прибегна,
ако има друго обстоятелство дето ми дава предимство, или налага наличието на обект.

Прост пример да речем някакъв клас с ацесори функции с ФП поведение,
вход/изход без странични ефекти, не виждам мотив да мисля за обект.

А за Спринга, разбирам отговора ти, че няма конкретен проблем, принцина ООП постановка казваш.
PMEmail Poster
Top
thrawn
Публикувано на: 17-03-2020, 11:19
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2796
Регистриран на: 17.01.17



Най-вероятно сте играли на развален телефон.
Да не ползваш класове е абсурдно изказване, освен ако не си го извадил от контекст. За да нямаш проблеми (то все ще излезе нещо де) трябва да се придържаш към принципите на ООП. Основното е да осигуриш слаба сврзаност между отделните класове, а това се постига като работиш с интерфейси вместо с конкретни класове (може би, горното е извадено от тоя контекст).
Другото важно нещо е да се придържаш към правилото, че конкретен клас/интерфейс трябва да изпълнява само една ясно дефинирана задача.

Тъй като имаш идея за миграция към среда в която разчита на DI е хубаво така да си пишеш кода, че зависимостите да могат да се инжектират (ако работиш с интерфейси, така или иначе ще трябва да предвидиш механизъм за подаване на конкретни имплементации)
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 17-03-2020, 12:11
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3566
Регистриран на: 21.02.18



QUOTE
Когато няма специфика, а шаблонно поведение тогава не виждам причината да инстанцирам,
общо взето няма какво да съхранявам така да се каже "отделно".


може ли да дадеш пример ? Според мен говориш за primitive obsession, което е code smell. Ако имаш статичен метод някъде, най-вероятно някъде ти липсва определен клас, който да моделира въпросната същност.

Единственото правилно и валидно използване на статични методи е за създаването на т.нар. named constructors.


--------------------
https://ncase.me/trust-bg/
---
Misanthropy is the general hatred, dislike, distrust or contempt of the human species or human nature. A misanthrope or misanthropist is someone who holds such views or feelings.
---
INTJ’s are good at being very good at everything
---
I have a problem. Let's use Microservices! Now I have 13 distributed problems.
PMEmail PosterUsers Website
Top
ТК_
Публикувано на: 17-03-2020, 12:14
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 45
Регистриран на: 04.08.18



така е - хора сме и всичко може, и тлф да е развален, и аз да се изразя накриво

съвета беше да няма статик и викане на статични методи,
а аз имах идея да има, защото конкретния клас няма полета ( има едно, константа ),
та обектите от него нищо не инициализират, просто викат член функциите си по данни извън класа, затови не видях смисъла от обектите

ще видим как ще се развие проекта, би трябвало да се навържат нещата и да видя как всъщност ще стане миграцията
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 17-03-2020, 12:15
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3566
Регистриран на: 21.02.18



QUOTE (ТК_ @ 17-03-2020, 12:14)
така е - хора сме и всичко може, и тлф да е развален, и аз да се изразя накриво

съвета беше да няма статик и викане на статични методи,
а аз имах идея да има, защото конкретния клас няма полета ( има едно, константа ),
та обектите от него нищо не инициализират, просто викат член функциите си по данни извън класа, затови не видях смисъла от обектите

ще видим как ще се развие проекта, би трябвало да се навържат нещата и да видя как всъщност ще стане миграцията

не съм запознат с кода ти (чевидно) но ми звучи, че този клас с тези методи не трябва да съществуват. Най-вероятно тези методи трябва да се преместят в класовете с които те оперират


--------------------
https://ncase.me/trust-bg/
---
Misanthropy is the general hatred, dislike, distrust or contempt of the human species or human nature. A misanthrope or misanthropist is someone who holds such views or feelings.
---
INTJ’s are good at being very good at everything
---
I have a problem. Let's use Microservices! Now I have 13 distributed problems.
PMEmail PosterUsers Website
Top
FidelDahan
Публикувано на: 30-03-2020, 08:57
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2409
Регистриран на: 12.06.08



Ако погледнеш static под ъгъла на complexity, когато нещо е static, то по-просто от non-static, защото няма възможност за достъп до non-static данните. Обратното, non-static има достъп и до static. Вярно е, че бързо можем да си навлечем проблеми, но строго погледнато static е по-прост начин да се направи нещо от non-static.

Също така, има валидни частни случаи, където кодирането в статични методи е напълно приемливо, даже и по-добре.

- екстрахираш private метод, който работи само с параметрите и не достъпва полетата - static (даже IDEA го предлага)

- Логика, която сама по себе си е статична и не е предвидена да има варианти
https://docs.oracle.com/en/java/javase/13/d.../lang/Math.html
https://docs.oracle.com/en/java/javase/13/d...file/Files.html

- Понякога конструкции от функционалната парадигма

Трябва обаче да се има предвид, че ако нещо е static, то не може лесно да се замени със mock когато пишем тестове. Тоест ако е static, така ще участва и в тестовете. Тук примерно случая със Files е на границата.

Но най-важното при static конструкциите е, да не се използват за съхраняване на state в програмата чрез static fields. По-точно да нямаме mutable state в static fields.
PMEmail Poster
Top
SuN
Публикувано на: 30-03-2020, 11:27
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 10570
Регистриран на: 27.01.05



QUOTE (Gamma Goblin @ 17-03-2020, 12:11)
QUOTE
...


може ли да дадеш пример ? Според мен говориш за primitive obsession, което е code smell. Ако имаш статичен метод някъде, най-вероятно някъде ти липсва определен клас, който да моделира въпросната същност.

Така е. В главата на ООП радикалистите някак си изглежда правилно, че ако имаш 99 проблема и ползваш още един обект => напълно правилно е кода ти да е със сто проблема, но да е като по учебник.

Това мнение е било редактирано от SuN на 30-03-2020, 11:29


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
ТК_
Публикувано на: 02-04-2020, 08:45
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 45
Регистриран на: 04.08.18



QUOTE (FidelDahan @ 30-03-2020, 08:57)
Но най-важното при static конструкциите е, да не се използват за съхраняване на state в програмата чрез static fields. По-точно да нямаме mutable state в static fields.

Предполагам, имаш предвид безразборната инициализация.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) 1 [2]  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0