Skip to content

Latest commit

 

History

History
115 lines (79 loc) · 10.4 KB

Alloy_Best_Practices_and_Recommendations.md

File metadata and controls

115 lines (79 loc) · 10.4 KB

Alloy ベストプラクティス・推奨手法

本文書はAlloy Best Practices and Recommendationsの日本語訳です。

本ガイドでは、Alloy アプリケーションを書く上での推奨事項を述べます。本ガイドは、既にある Titanium SDK ベストプラクティス・推奨手法 を補完するもので、特に Coding Best PracticesStyle and Conventions に一番の焦点を当てています。

Titanium から Alloy への移行ガイド

Titanium アプリを作る際には起動時にライブラリを読み込んでいました。私のパターンを MVC に当てはめたとき、アプリケーションの機能は深く Controller の名前空間の中に配置した方が良いですか?

特にそうしたい場合を除いて、そうする必要はありません。アプリ全体で使うグローバルな機能セットを既に持っているなら、構造化やスケーラビリティの面でメリットがない限り、それをわざわざ細かくカテゴライズする理由はありません。すべての Alloy コントローラーで既存のモジュールを呼んで構いません、また、アプリ全体から参照可能な単一のグローバルな参照を作成しても構いません。たとえば、以下のようにします。

apps/alloy.js

// Alloy.Globals.refToYourModule will be available in all controllers
Alloy.Globals.refToYourModule = require('yourModule');

Controller のためのパフォーマンス上のベストプラクティスってありますか?

これまでの Titanium 開発でのベストプラクティスは、そのまま Alloy の世界でも適用できます。実際、従来の Titanium 開発でできることは全て Alloy の Controller でもできます。従来の Titanium 開発で学んだ Coding Best Practices を Alloy で使ってください。つまり、あなたが今できる最善のことは、ランタイムのパフォーマンスを上げるように有効にコンパイラに指示することです。Alloy Controllers: Conditional Code を参照してください。

view の紐付いたたくさんの callback を書いた Controller 達を単に読みこむだけにして、 Alloy に繋がりの管理を任せても構いませんか?

はい、できますし、このコミュニケーションを処理するために Controller 間イベントを使うことも出来ます。Controller 間の疎結合を促すので後者の方が好ましいです。Controller 間での通信用に Controller イベントを使う基本的な例は、master-detail の Alloy テストアプリケーションを参照してください: : https://github.com/appcelerator/alloy/tree/master/test/apps/advanced/master_detail

標準的な Titanium アプリケーションに対してやったように、私の organization で Alloy を支援するのに採用すべきベストプラクティスはありますか?

現行の organization のサイズや深さによります。organization に合わせて Alloy を曲げる方が良いか、Alloy に合わせて organization を曲げるほうが良いかを判断する必要があります。Alloy の背後にある原動力の1つは、たくさんの異なる性質の Titanium のコーディング方法を標準化する必要性でした。判断の過程で、あなたのプロジェクトはより綺麗に、よりベストプラクティスに沿った形になるでしょう。またそれだけでなく、他の開発者が支援・貢献しやすいような、プロジェクトの親近感や構造が生まれるでしょう。

コーディング規約のベストプラクティス

命名規則

  • 変数名やプロパティ、関数の名前の前に二重の _ を付けてはいけません(例: __foo)。これらの名前は Alloy で予約されています。これらの名前を利用すると、名前が衝突して意図しない動作をする可能性があります。
  • ID に JavaScript の予約語を使ってはいけません。現在予約されている語の一覧はこちらです。

グローバル変数

app.js でグローバル変数を宣言しないで、他のファイルでグローバル変数を利用するようにしてください。今はそういう使い方もできますが、推奨されておらず、将来廃止される予定です。Alloy アプリケーションでグローバル変数を使いたい人は、JS ファイルで以下のように宣言することができます。

var Alloy = require('alloy'), Backbone = require('alloy/backbone'), _ = require('alloy/underscore')._;

たとえば、このようにします。

if (typeof Alloy === 'undefined') {
    var Alloy = require('alloy');
}
if (typeof Backbone === 'undefined') {
    var Backbone = require('alloy/backbone');
}
if (typeof _ === 'undefined') {
    var _ = require('alloy/underscore')._;
}

var loading = Alloy.createWidget("com.appcelerator.loading");