プログラミング全般

プログラミング全般


名付け方法

オブジェクト、変数


オブジェクトや変数の名前のつけ方は結構単純だと思う。
それが何であるかを表現する名前を付ければ良い。
  • モノ(主にデータ型:CTFont,)
  • 役割・役職・役目(デザインパターン等:CTManager,AppDelegate)
  • 変数に何が入っているかを的確に表し、潜在的なバグを減らす方法(text_or_nil,array_or_empty)

text_or_nil:テキストが入っているか、テキストで無いならばnilが入っていることを連想させる。
text:

関数、メソッド

関数名やメソッド名は、単純にこれと言った規則が無い。
厳密には、規則が無いのではなくて、特定の規則が用いられているが、
意識して統一しないとゴチャ混ぜになってしまうことが多い。
人それぞれという感じもあるし、今のところ自分では
どうコントロールしているのかがまだわかっていない。

  • タイミング(Applecation.launch,touchesBegan,touchesEnded,touchesMoved):主体+タイミング
  • 動作(openMenu):動作+対象
    • 開始動作(openMenu)
  • 結果(selectOptions)
などがある。

  1. タイミング・順序・出来事(主にフロー、イベント)
  2. 変化・動作(主に表示)
  3. 結果・成果(主にデータの変更)などがある。

どういうパターンが考えられるかというと、

例えば、アプリケーション(ウィンドウ、ビュー)で、クリックされた時に
メニューを開き、4つの選択肢から、ひとつ選んでもらって、選んだものを返す場合、

タイミングにそのまま記述して行く人、(appClicked,winClicked,viewClicked)
開始する動作で名付ける人、(openMenu)
結果で名付ける人、(selectOptions)
といった名付けがされる場合がある。

 class Application
   def clicked
     selected = menu.open_menu_and_select_options
     
   end
   def open_menu
     selected_option
   end
 end

 class Application
   def clicked
     selected = open_menu
     
   end
   def open_menu
     selected_option
   end
 end


 class Application
   def clicked
     selected = select_option
     
   end
   def select_option
     menu_open
     selected_option
   end
 end


プログラムの見通し的な立場に立つと、
clicked_and_open_menu_and_select_option
長ったらしい感じ(×)はするが、いちいち内部まで見たくない時に便利(◯)

プログラムの変更などのフレキシビリティ重視の立場に立つと

 def clicked
   open_menu_and_select_option
 end
 def open_menu_and_select_option
 end

 def clicked
   select_option_with_open_menu
 end
 def select_option_with_open_menu
 end


と、書いた方が、メニューを開いて選択を返す動作が、
他のタイミングに移る時に手間が掛からない。






要するに、その時々で重視したいやり方を適切に選びなさい、(>_<)
ということなんでしょうけど。
分割し過ぎで見通しが悪くなりすぎたら、一旦まとめてみる、(-_-)(-_-) -> ( - _ - )
まとめて多くを書き過ぎて、一旦分割してみる、( - _ - ) -> (-_-)(-_-)

場合によっては、両方の書き方を用意しておいて
いつでも切り替えができるようにしておく、というのもありかもしれない。
両方の書き方をしたら、その分管理のコストがかかりそうだけど(^-^;)

一つの解決法として、日本語(などの母国語)でプログラムを書いてみて、
その単位毎にメソッド化・関数化していくのが適当なのかもしれない。

タグ:

+ タグ編集
  • タグ:
最終更新:2010年07月12日 12:09
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。