🙆

クラスかメソッドか(separate widgetsとhelper methods)

2022/07/09に公開

リファクタリングをしていて、クラスに分けるかメソッドに分けるか悩むことがあったのですが、基本的にクラスで切り出した方がメリットがあるようです!

個別ウィジェットとヘルパーメソッドの比較

自分にとって勉強になったのは,メソッドで分けることを【helper methods】と呼び

【helper methodsの例】

class Example extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
   return ListView(
      children: <Widget>[
      for(final obj in myObjs)
        Dismissible(
      key: ValueKey(obje.id),
      child: ...
     )
   ],
     );
     
     ↓↓ Dismissibleの塊を、methodで切り出す!
     (この時は、「_build ◯○」という命名にするっぽい)
     
     
 class Example extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
   return ListView(
      children: <Widget>[
      for(final obj in myObjs)
       _buildDismissible(obj)
   ],
     );
    }
    
Widget _buildDismissible(MyObj obj){
  return Dismissible(
    key: ValueKey(obje.id),
    child: ...
   );
  }
 }
     

クラスで分けることを【sepatate widgets】と呼ぶことでした。

【sepatate widgetsの例】

class Example extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ListView(
       children: <Widget>[
       for(final obj in myObjs)
         Dismissible(
	   key: ValueKey(obje.id),
	   child: ...
	  )
	],
      );
      
      ↓↓ Dismissibleの塊を、classで切り出す!
      (この時は、「_build ◯○」という命名にしなくていいっぽい)
      
class Example extends StatelessWidget {
}

記事などを読んでいて「ヘルパーメソッド」という単語が出てきた時にいつも「?」って感じだったのですが

「メソッドで切り出したのね」

と頭の中で変換できるようになったのが何よりの収穫でした!

Discussion