Posted by : Izumikawa Fukumi 2014年8月22日金曜日

今回は初心者さん限定の記事となるのですが、今回お教えするのは、
「プログラムの最適化」です。具体的にどのような事なのか分からない方も居ると思いますけど、プログラムのソースを出来るだけ短縮し、分かりやすく書くと言う事を自分では最適化と思っています。(勝手に)



ではちょいと手元にあったソースを元にしてみます。

今回書いたソースは +竹内史 にお願いされて書いた簡単な関数です。

function url_TextData(data){
    
    var val = 0;
    
    var Textif0 = new RegExp("^https?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    var Textif1 = new RegExp("^http?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    if (data.match(Textif0)) { val++; }else if(data.match(Textif1)){ val++; }
    return val;
}


関数の内容は、URLであるかでないかを判断するプログラムです。
URLでは無いときは0を返して、URLである場合は1を返します。

至って簡単なプログラムですね。
このソースはもう既に最適化しています。

これを最適化してない状態だと以下の様になります。

function url_TextData(data){
    
    var val = 0;
    
    var Textif0 = new RegExp("^https?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    var Textif1 = new RegExp("^http?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    
    var a = data.match(Textif0);
    var b = data.match(Textif1);
    if (a) { val++; }else if(b){ val++; }
    return val;
}


これだと、無駄に変数に値を入れている感じしますよね。
なんせC言語を使ってたら、そんなどうでもいい事まで気になってしまいます。

こういった変更をする事により、無駄に記述を無くし、かつ、奇麗にソースを書く事が出来ます。

皆さんも試してみてね。

- Copyright © I aim to creator. - Hatsune Miku - Powered by Blogger - Designed by Johanes Djogan -