#flutter #dart #refactoring
#флаттер #dart #рефакторинг
Вопрос:
Все три из них делают в основном одно и то же. Каковы наилучшие методы? В каком случае я должен использовать какой способ извлечения? Каков стандарт?
Я предполагаю, что это могут быть некоторые моменты, которые могут иметь значение:
- удобочитаемость
- Производительность
- количество строк
Пример:
Извлеките контейнер. Какой способ вы бы предпочли и почему?
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container();
}
}
1. Извлечь контейнер как виджет ( 6 строк):
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ExtractedAsWidget();
}
}
class ExtractedAsWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container();
}
}
2. Извлечь контейнер как метод ( 1 (в некоторых случаях 3) строка):
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return buildContainer();
}
Container buildContainer() => Container();
}
3. Извлечь контейнер как переменную ( 1 строка):
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
var container = Container();
return container;
}
}
Ответ №1:
Извлечение as Widget
является наилучшей практикой, поскольку фреймворк Flutter может оптимизировать виджеты, а не методы или переменные. Но для этого конкретного случая я бы извлек Container
как method
. Извлечение as Widget
было бы слишком излишним.
Извлечение в виде переменной
Извлечение as variable
должно выполняться только тогда, когда ваш виджет исправлен, используется только в одном файле и не требует никаких параметров.
Извлечение как метод
Извлечение, как method
и должно быть сделано, когда ваш виджет используется только в одном файле (и он также может использовать некоторые параметры для дополнительной настройки). Это также повышает читаемость кода.
Извлечение в виде виджета
Извлечение as Widget
является наиболее оптимальным способом создания виджета, который используется несколько раз в разных файлах. Flutter рекомендует создавать StatelessWidget
как можно больше.
Самый простой пример, который я могу предложить, — это использование кнопок. У каждого приложения есть фиксированная кнопка основного цвета, которую мы используем. Итак, вместо создания переменной или метода мы должны создать StatelessWidget
эту кнопку и использовать ее на нескольких экранах нашего приложения.