フォトアルバム

2009年7月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

なかのひと

アンケート

  • Do you Like?
    アンケート
    どのColdfusion用フレームワークが好き?
    ModelGlue:Unity
    ModelGLue
    Mach-II
    FuseBox
    LiteWire
    OnTap
    ColdBox
    OnAir
    cfWheels
    CFRails

    [PR]アンログ.jp 自動車保険

373news.com

想ひ出

  • Dvc00050
    携帯で撮った写真をアルバムにしています。

サムネイル

  • CF-OOP









  • ganymean.org









  • シナプス

Google Analytics

« RIAForge | メイン | OpenPNE2.4.2 »

CFCベスト・プラクティス

ColdFusionオブジェクト指向プログラミング・ユーザーのための
「CFCベスト・プラクティス」がPeter Bellのブログで紹介されています。
さくっと意訳してみました。

詳しくは、CF-OOP Wikiを確認してください。

  1. メソッド内のローカル変数には、常に"var"を使え!
    • ループカウンタ
    • テンポラリ変数
  2. パブリックデータへのダイレクトアクセスは厳禁!
    • コンポーネント名.メソッド()でアクセスしろ!
    • パブリックデータへのダイレクトアクセスは、インタフェースの設計に反します。
    • 良い例
      foo = myCFCInstance.getInterestingStuff()
      myCFCInstance.setInterestingStuff(foo)
    • 悪い例
      foo = myCFCInstance.interestingStuff
      myCFCInstance.interestingStuff = foo.
  3. プライベート・データとして、"this"スコープを使用するな!
    • "this"は、"variables"スコープのことです。
  4. "arguments"は、常に明示するか、一切明示しないかのどちらかにしろ!
    • 常時、明示するのがお勧めです。
  5. CFCOMPONENTとCFFUNCTIONタグでは、「OUTPUT="false"」にすること!
    • ファンクションの実行結果をページに書き出したいのであれば、cfmファイルに以下のように記述すること。
      "#myCFC.someHTMLGeneratingMethod()#"
  6. ドキュメントの可読性向上のため、CFCOMPONENT/CFFUNCTION/CFARGUMENTの"hint"属性を必ず使用すること!
  7. CFFUNCTIONのRETURNTYPE属性 と CFARGUMENTSのTYPE属性 は必ず指定しろ。
    • ドキュメントの可読性向上とランタイムによる型式チェック速度向上のためです。
    • ファンクションが何も返さないのであれば、RETURNTYPE="void"を忘れずに!
    • カスタムオブジェクト型を使用する場合、TYPE="any"とすることで、速度パフォーマンスが向上する。
  8. CFC内で外部変数を直接参照しないこと!
    • session変数やapplication変数など
    • 例外は、ウェブサービスやFlashリモーティング用にファザード(facade)を構築するときだけです。
  9. メソッド引数のうち、必須でないものには"DEFAULT"値を指定すること!
  10. CFCタグの"EXTENDS"は、"is-a"として使用しろ!"has-a"やコード再利用目的で使用するな! 

トラックバック

このページのトラックバックURL:
http://app.synapse-blog.jp/t/trackback/190195/6597177

このページへのトラックバック一覧 CFCベスト・プラクティス:

コメント

田中さん、お返事有難うございます。

そうですね、Duck Typing によるパフォーマンスの向上に関してリークしてしまったことをSeanはかなり後悔しているみたいですが、実際にパフォーマンス向上のためにフレームワーク内のCFCからタイプ属性をとりはらったり(あるいはAnyに指定する)、開発中はタイプ属性を明示するけれどプロダクションではなくしちゃう(あるいはAnyにしちゃう)人が結構いるみたいですね。

確か、CFにはType Safety の恩恵がない(コンパイルしない)から、詳しいタイプ属性はヒント属性に書いておいて、タイプ属性は常にAny でいいんじゃないかという人もいたと思います。Peter Bell か Nando あたり。実は僕も結構賛成です。

でも僕は小さいアプリケーションしか書かないので、タイプ属性が不明な時以外はタイプ属性をしっかり指定する(strongly typed)ようにしています・・・単なる自己満足と分かっていながら(^^;;;

ではまた。

Terryさん、コメントありがとうございます。

ご指摘のとおり、原文を読むと"速度向上"とは書いていませんね。
Sean Corfieldのプレゼン資料で、CF7ではType="any"としたほうがかえってランタイムチェックを行わないため、速度パフォーマンスが良いということが書かれていたので、そのように書いてしまいました。
修正しておきます。
http://corfield.org/articles/ducktyping_cfunited.pdf
http://corfield.org/blog/index.cfm/do/blog.entry/entry/More_on_Duck_Typing

はじめまして。いつも楽しく拝見させていただいています。

一点だけ気になったことですが・・・

7)TYPE属性を指定すると、、ランタイムによる型式チェックのためにパフォーマンスがやや低下すると書かれていると思いますし、一般的にそのように言われていると思います。特にカスタムデータ型の場合ですが。
(もちろんTYPE属性を必ず指定しようというのには僕も賛成です)

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。

ログイン

  • コントロールパネルへのログイン
    アカウント:

    パスワード:

PR情報

  • [[PR]]
  • おすすめバナー

更新ブログ

google Search

  • Google
    blog.ganymean.org
    WWW

最近のトラックバック

Google

SHINOBI

Blog powered by TypePad
Member since 04/2005