Вопрос по рефакторингу: извлечь как виджет / метод / переменную… Каковы плюсы и минусы?

#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 эту кнопку и использовать ее на нескольких экранах нашего приложения.