Size: a a a

Angular - русскоговорящее сообщество

2021 March 04

E

Eugene in Angular - русскоговорящее сообщество
Alex Bu
Переменные, в смысле, самые обычные. Например, service.user. Не методы, а-ля service.getUser()
В данном случае шаблон почему-то знает про какой-то сервис, хотя это вообще не его ответственность.
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Alex Bu
Меня больше занимает тот момент, что там кто-то по рукам кого-то бить хочет за вызовы переменных сервиса в темплейте. Кроме того, что сервис нужно сделать ради этого публичным в классе, я не вижу в этом ничего плохого. Пытаюсь понять что такого плохо в этом, может кто-то уже наконец расскажет что-то конкретное)

А то пока какой-то диктатурой попахивает))
закон деметры есть
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Alex Bu
Еще раз. Не дергаем. Читаем рионли переменные, алооо)
да блин, разница то какая?)
источник

E

Eugene in Angular - русскоговорящее сообщество
Smooth Operator
закон деметры есть
+
источник

AB

Alex Bu in Angular - русскоговорящее сообщество
Eugene
В данном случае шаблон почему-то знает про какой-то сервис, хотя это вообще не его ответственность.
То есть, предлагается, переменные дублировать. user = this.service.user, а потому уже вызывать user в темплейте
источник

E

Eugene in Angular - русскоговорящее сообщество
Alex Bu
То есть, предлагается, переменные дублировать. user = this.service.user, а потому уже вызывать user в темплейте
+
источник

AB

Alex Bu in Angular - русскоговорящее сообщество
Даже если их может быть 100 штук
источник

E

Eugene in Angular - русскоговорящее сообщество
Alex Bu
Даже если их может быть 100 штук
йеп
но если у вас 100 свойств из сервиса в компоненте - попахивает архитектурными проблемами
источник

E

Eugene in Angular - русскоговорящее сообщество
Alex Bu
То есть, предлагается, переменные дублировать. user = this.service.user, а потому уже вызывать user в темплейте
Ну смотрите, у вас в компоненте эти переменные лежат стопочкой, а в шаблоне раскиданы. Если вы переделаете сервис, где проще будет поправить?
источник

E

Eugene in Angular - русскоговорящее сообщество
У вьюшки должен быть хоть какой-то контракт и как можно меньше связности с другими частями приложения, иначе малейшие изменения в приложении аукнутся кучей побочных телодвижений.
источник

AB

Alex Bu in Angular - русскоговорящее сообщество
Eugene
Ну смотрите, у вас в компоненте эти переменные лежат стопочкой, а в шаблоне раскиданы. Если вы переделаете сервис, где проще будет поправить?
Если касаться ридонил переменных, то не уверен, что дублирование слов мне как-то серьезно облегчит жизнь
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Alex Bu
Если касаться ридонил переменных, то не уверен, что дублирование слов мне как-то серьезно облегчит жизнь
так можно относиться к любому правилу)
Почему плохо дёргать метод сервиса из шаблона?)
источник

E

Eugene in Angular - русскоговорящее сообщество
Alex Bu
Если касаться ридонил переменных, то не уверен, что дублирование слов мне как-то серьезно облегчит жизнь
Это хоть и зовется "законом Деметры", на деле всего лишь набор практик проектирования. Никто не заставляет вас им следовать.
Но если нужна какая-то качественная аргументация, можно глянуть code complete Макконнелла, он там подробно раскрывает все это.
источник

E

Eugene in Angular - русскоговорящее сообщество
Oleg Safonov
так можно относиться к любому правилу)
Почему плохо дёргать метод сервиса из шаблона?)
потому что есть зона, ченж детектор и нехилые шансы отстрелить себе ногу в плане производительности.
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Eugene
потому что есть зона, ченж детектор и нехилые шансы отстрелить себе ногу в плане производительности.
Ну стоп стоп) я спрашиваю у защищающего обращение к сервису в шаблоне)
источник

E

Eugene in Angular - русскоговорящее сообщество
Oleg Safonov
Ну стоп стоп) я спрашиваю у защищающего обращение к сервису в шаблоне)
Но вопрос про обращение к методу, хотя человек явно выше сказал, что речь только о переменных.
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Eugene
Но вопрос про обращение к методу, хотя человек явно выше сказал, что речь только о переменных.
Я хочу понять логику, почему свойства - норм, а методы нет
источник

E

Eugene in Angular - русскоговорящее сообщество
Oleg Safonov
Я хочу понять логику, почему свойства - норм, а методы нет
Потому что свойства - это только про архитектуру. А методы - про архитектуру и вероятные проблемы с производительностью.
источник

AB

Alex Bu in Angular - русскоговорящее сообщество
Oleg Safonov
так можно относиться к любому правилу)
Почему плохо дёргать метод сервиса из шаблона?)
Видите разницу между
<div *ngIf="serice.getUser$() | async"> и <div *ngIf="user$ | async">, который user$=this.serice.getUser$()?

И я вижу, так плохо очевидно

А вот в случае <button (click)="user$ = service.getUser()"> я ничего плохого не вижу. Делать однострочную функцию в компоненте - ну хз. Как минимум читать сложнее становится
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Eugene
Потому что свойства - это только про архитектуру. А методы - про архитектуру и вероятные проблемы с производительностью.
ну нет. Там метод может просто возвращать значение. А свойство может быть с геттером
источник