2012-02-03 5 views
0

このコードに示すように、いくつかのJavaコードがよりクリーンな方法で終了します。もし終了しない場合は、関数を終了してください。

if(a!=1) {System.exit();} 
//If equal 1, execute the code below 

ActionScriptはbreakキーワードに代わるものとして、(ループまたはアプリケーションを終了していない)機能を停止するための任意の同様のキーワードがありますか?

private function isInt():void { 
    if(a!=1) { /* stop executing the code after these */ } 
    b=a; 
} 
+1

関数が値を返す場合は、次のようにします。return null;それ以外はちょうど言う:復帰; –

答えて

2

引用したJavaコードはプロセス全体を終了します。実行を中止します。フラッシュは、任意にシャットダウンすべきではないWebブラウザなどのホストプロセス内で実行されます。ユーザーが他のタブにコンテンツを持っていた場合はどうなりますか?

特にホスティングブラウザに信号を送信したい場合は、fscommandまたは新しいメカニズムを使用して、ブラウザ/ Webページで何をすべきかを決定する必要があります。

あなたの関数がそれ以上実行されないようにするには、 'return;'を使用してください。それ以上の処理をせずに、あなたがいる機能を残すことができます。

+0

私は、キーワードが戻ります参照してください。 –

+0

FSCommand?あなたはしばらくの間フラッシュをしていないように見える;)[ExternalInterface](http://help.adobe.com/jp/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html)今行く。 – RIAstar

+0

ああ、はい、それはもっと新しい技術です。それはまだすべてのプラットフォームで動作しますか? – JBRWilkinson

1

条件付きリターンステートメントを使用すると、最初はきれいで美しく見えるかもしれませんが、リファクタリング時に問題が発生する可能性があります。

if my conditions are met, execute the next statement. 

しかし、あなたが言っていることは次のとおりです。:

何が言いたいのはこれです

if my conditions are not met, get out of here. 

1あなたは、複雑な方法であるとしましょう例# 2つまたは3つの入れ子式if文:

もちろん210

例#2

、同じ方法は、条件付きのreturn文を使用して、より良いになります

function myComplexMethod (param1 : int, param2: int, param3:String) : String { 
    if (!param3) return null; 
    var ret : String = null; 
    ret += param3; 

    if (param2 == 0) return ret; 
    ret += param2; 

    if (param1 == 0) return ret; 
    ret += param1 + param2; 

    return ret; 
} 

しかし、一見、あなたは本当に、このメソッドの出力が何であるかを伝えることができますになるだろう?

例#3

あなたが本当にあなたのコードをクリーンアップするつもりだった場合はどう?あなたは、各ブロックの意図を反映するために、コードをリファクタリングした場合は、複雑な方法は、簡単な方法になるだろう。この最後の例では

function mySimpleMethod (param1 : int, param2: int, param3:String) : String { 
     return param3 != null ? 
      outputOfAllParams (param1, param2, param3) : null; 
} 

function outputOfAllParams (param1 : int, param2: int, param3:String) : String { 
     return param2 != 0 ? 
      param3 + combinedOutputOfIntParams (param1, param2) : param3; 
} 

function combinedOutputOfIntParams (param1 : int, param2: int) : String { 
    return param1 != 0 ? 
     param2 + "" + sumOfIntParams(param1, param2) : "" + param2; 
} 

function sumOfIntParams(param1 : int, param2: int) : int { 
    return param1 + param2; 
} 

、コードが読みやすいです、そしてあなたはそれを行うことになっているかを見ることができますちょうどそれを見て。

事実:リファクタリングを使用して、例#1から例#3に簡単に移行できます。条件付きブロックのそれぞれが新しいメソッドにリファクタリングされることは明らかです。条件付きのリターンステートメントでは、直感的ではありません。希望のコードブロックがどこで終わるか、そしていつ返ってくるか、非常に慎重にチェックする必要があります。

もちろん、このような単純なタスクを扱う場合、そのメリットはあまり明らかではありませんが、実際の生産コードがあれば、インテントを可能な限り明確にしたいと思います。数ヶ月であなた自身のコードに戻りますが、例#2を使用した場合は、それが何をするべきかを理解するのにずっと時間がかかります。

関連する問題