2012-01-19 4 views
3

各メソッドと変数を使用するのはとなり、これはより正しい規則ですか?コンパクトコンベンション

var x = GmailApp.getInboxUnreadCount(); 
var email = GmailApp.getInboxThreads (0, x); 

が一列にコードを構成:

var email = GmailApp.getInboxThreads (0, GmailApp.getInboxUnreadCount()); 

答えて

3

後者は、合理的な範囲で必要な数の変数を作成

。しかし、これは主に単純なケースではスタイルの問題です。

これは、10個の引数を取る関数呼び出しがあり、それらの引数のそれぞれが大きな関数呼び出し自体から来た場合、これをしないことを意味します。後で誰があなたのコードベースを取得するか考えてみましょう。

"このコード行はローカル変数を少なくして読み込み可能ですか、それとも、行が何をしているかをより分かりやすくするために分割する必要がありますか?"あなた自身に尋ねるべき質問です。この場合、後者は完全に読み込み可能です。


は実際に、私は最初の例が原因役に立たないローカル変数名xに読みにくくている主張するだろう。代わりに、それがより良い名前を付けられた場合、それはもっと実行可能な選択肢かもしれません。

var unreadCount = GmailApp.getInboxUnreadCount(); 
var email = GmailApp.getInboxThreads (0, unreadCount); 

これは、この非常に単純なケースでは、より良いが、それでもかなり不要です。

+1

もう1つ重要な点は、余分な文字がjavascriptファイルに占めるスペースです。これらのファイルはクライアントがダウンロードする必要があるため、追加の文字は最終的なダウンロードサイズにある程度の重さを持つ可能性があります。もちろん、ファイルを難読化/縮小/圧縮することもできますが、これは特定のインフラストラクチャでは問題にならない可能性があります。 – lsoliveira

+1

これは技術的には真ですが、特にgzippedの場合は、その差はごくわずかです。そして、最近、ungzipされたjsを提供する理由がありません。これらのバイト数が問題となる環境であれば、コンプレッサーを使うことをお勧めします。これはおそらくコンパイル時にこれをリファクタリングします。したがって、帯域幅を節約するために維持することを難しくする理由はあまりありません。自動化されたツールを使用して、最高品質のコードを書くことができます。 –

+0

帯域幅は私にとって問題ではありませんが、将来の参照のために知っておくと良いです。あなたの答えをありがとう、これは私の理論を思い出させる "あなたのコードは一度だけ書くことができますが、それは1000回読むことができる"。 –

1

これはトレードオフです。

最初の例は、読みやすくデバッグが簡単です。エラーが発生する可能性のある行は2行あります。デバッグでは、1行に1つの関数しか呼び出されないので、これは良いことです。

2番目の例は「1ライナー」と呼ばれ、その行にエラーを引き起こす可能性のある複数のものがありますが、メモリの使用量が少ないため、デバッグが難しい場合があります。おそらくそれほど重要ではないでしょう。この例では

1. var unread = GmailApp.getInboxUnreadCount(); 
2. var email = GmailApp.getInboxThreads (0, unread); 

はあなたがgetInboxThreadsがエラーを投げていることを知っている2行目にエラーが発生しますと言います。

1. var email = GmailApp.getInboxThreads (0, GmailApp.getInboxUnreadCount()); 

は今、あなたはあなたが両方の方法をチェックする必要があります1行目にエラーが発生しますと言います。

+0

だから私はデバッグするのが簡単だと思います。 –