メソッドの命名で主語を気にしていること
読み易いなーって思うメソッド名の付け方
最近、コード書くとき、どの視点からなのか、英語の文法的に読み易いのかってのを意識してメソッド名をつけてる。(オブジェクト指向で。関数型だと当てはまらないかも)
同じことをするメソッドを両方から見てみる
例 > オブジェクトを生成、変化、抽出
例えばcategoryって言うクラス(もしくはenum)があって、カテゴリは数字で分けられてる場合
# 前提:DB上で1はオモチャというカテゴリ # 生成> 1という値のカテゴリを取得する Category.of(1); Logic.pickupCategoryBy(1); # 変化> オモチャカテゴリをDBで表現する値を取得する toyCategory.toDBVal(); Logic.convertToDBValFrom(toyCategory); # 取得> オモチャの商品のリストを取得する toyCategory.getItemList(); Logic.getItemListFrom(japanCategory); # 抽出> 女の子向けの商品を抽出する toyCategory.forGirls(); Logic.extractForGirlsFrom(toyCategory);
こんなかんじでまとめることで、英語の文を書くようなプログラムを書いてる
(気になれる)
組み合わせてメソッドを作ってみるとこんな感じ。
# LogicClass /** * 指定の商品が、対象のカテゴリに含まれるか * @param categoryId 対象のカテゴリID * @param targetItem 指定の商品 * @return 含まれるならtrue **/ public boolean includeItemIn(int categoryId, Item targetItem){ Category targetCategory = Category.of(categoryId); List targetItemList = getItemListFrom(targetCategory) return targetItemList.has(targetItem); }
こんなかんじですかね。
読みやすいですかね?読みにくいですかね?
僕は、けっこう、読みやすいと思うます。