xxxManagerというクラス名はアンチパターンであるという話を度々聞きます。
これがアンチパターンとされる理由にも納得はいきます。
ただ、外部のAPIを使いやすくするために、そのAPIのラッパーライブラリを作ったりする場合、
外部APIのあるまとまりのあるクラスのメソッドをまとめるラッパークラスを自分は作るのですが、
このラッパークラスにxxxManagerとつけるのはやはりアンチパターンなのでしょうか?
例えば、Google Apps Scriptのスプレッドシート周りのメソッドを使いやすくするために、SpreadsheetManagerというクラスを作って、その中で以下のようなメソッドを外部に公開するといったやり方をしているのですが、これはよろしくないのでしょうか?
以下のコードではSpreadsheetManagerクラス内部でGoogle apps ScriptのSpreadsheetAppクラス、Spreadsheetクラス、Sheetクラス、また、Rangeクラスのメソッドを呼び出しています。
TypeScript
1let spreadSheetManager: SpreadsheetManager = new SpreadsheetManager("スプレッドシートファイルID"); 2spreadSheetManager.selectSheetByName("シート名(タブ名)"); 3spreadsheetManager.appendTableData([[1,2,3],[1,2,3],[1,2,3]);
以下のリンク先ページを見ると、xxxManagerというよりはxxxFacadeというクラス名がこのような場合は適切ということなのでしょうか?
http://qiita.com/KeithYokoma/items/ee21fec6a3ebb5d1e9a8
xxxManagerというクラス名がアンチパターンとされる理由は、そのクラスが具体的に何を担当しているかが抽象的でわかりづらいという点と、一つのクラスにいろんな役割を持たせるべきではないという点だと思うのですが、後者の理由に関してはFacadeのようなものは例外でしょうか?(そのクラス内で細かな役割を持った複数のクラスを操作しているような場合)
まとまりのない文章で恐縮ですが、xxxManagerという名前の付け方がアンチパターンとされる理由を深く理解したいと思いまして、このような質問を投稿させて頂きました。
よろしくお願い致します。
**参考 - Google Spreadsheet Service **
https://developers.google.com/apps-script/reference/spreadsheet/
参考 - 命名規則に関する記事
http://qiita.com/magicant/items/8134edf969f9629fa66e
http://qiita.com/KeithYokoma/items/ee21fec6a3ebb5d1e9a8
http://gihyo.jp/dev/serial/01/code/000204
更新
更新
頂いた回答を読んで、まず、今回の例の場合はxxxManagerというクラス名はふさわしくないことは理解致しました!!
補足
サンプルコード内のSpreadsheetManagerクラスは以下のSpreadsheet Service全てを網羅するラッパークラスではありません。初期化時に引数に渡すファイル名に紐づくスプレッドシートファイルを読み込み、そのシートに対する読み書きなどの操作を、単純なインターフェイスを外部に公開し利用出来るようにするものです。
https://developers.google.com/apps-script/reference/spreadsheet/
** Facadeクラスの命名に関する参考記事
What's a good name for a façade class?
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/07/11 05:28 編集