# ember/template-no-dynamic-subexpression-invocations
Disallow dynamic helper invocations.
Dynamic helper invocations (where the helper name comes from a property or argument) make code harder to understand and can have performance implications. Use explicit helper names instead.
## Rule Details
This rule disallows invoking helpers dynamically using `this` or `@` properties.
## Examples
### Incorrect ❌
```gjs
{{(this.helper "arg")}}
```
```gjs
{{(@helperName "value")}}
```
### Correct ✅
```gjs
{{format-date this.date}}
```
```gjs
{{(upper-case this.name)}}
```
```gjs
{{this.formattedData}}
```
```gjs
{{! Body-position dynamic helpers are allowed }}
{{this.formatter this.data}}
```
## Related Rules
- [template-no-implicit-this](./template-no-implicit-this.md)
## References
- [Ember Guides - Template Helpers](https://guides.emberjs.com/release/components/helper-functions/)
- [eslint-plugin-ember template-no-dynamic-subexpression-invocations](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/template-no-dynamic-subexpression-invocations.md)