どうも!chuckです。
僕は最近、ようやくcoffeeScriptの勉強を始めました。ただ、書いたコードが絶対的に少なく、まだまだ身についていない印象です。
なので、最近自作したJavaScriptのプラグインをcoffeeで書き換えてみようかなと思います。
いやあ、以前ドットインストールで勉強したのですが、すっかり忘れてますね…。
ちょっとずつ復習していきます。
ログ出力関数
まずはこちらをcoffee化。変数を宣言して、そこに関数を代入しています。
coffeeでは変数宣言にvarは必要ありませんでした。
なので、まずはこんな感じですね。
次に関数を書きます。
まず、引数がない関数はこんな感じ。
functionの代わりに ->を書くんでしたね。
次に引数をつけてみます。
こうですね。引数は矢印の前に置きます。
coffeeではこの関数は、
このようになります。
すっきりしましたね。
定形文字列の宣言
次はこちら。これはまあ文字列を宣言しているだけなのでカンタンですね。
var と末尾のセミコロンを除くだけですね。(coffeeではセミコロンが不要でしたね)
引数チェック関数
次に、受け取った引数が正しいものかどうかチェックする関数です。
こちら。
これまでどおり、var とセミコロンを取り除き、関数に (x) ->を使います。
そして、新規要素としては、coffeeでは同値演算子(===)を==と書きます。
=== を書くとコンパイル時にエラーになります。
(ターミナルでのエラー画面)
変換後はきちんと同値演算子に変換されています。
データ変換関数
次にこちら。受け取ったデータを変換する関数です。
swtich文ですね。
Qiitaの記事より抜粋。
ふむふむ。when と elseを使うんですね。
こうなりました。
なかなかすっきりしました。
それぞれの処理文でreturnという単語が被っていたので、それを省略できたことが嬉しいです。
変換結果を表示する関数
こちら。
変数を3つ用意して、最後に変換結果に応じてログ出力をしています。
三項演算子をcoffeeでどうやって書くのかがポイントですね。
まず三項演算子以外を、coffee化。
コンパイル後のコードがこちら。
なんだか変数増えてない?
ref, ref1という意図しない変数が追加されています。そして、dataとdataTypeに格納される値もおかしい…。
調べた。
とのこと。
そうそう、?はRuby的な用法でしたね。すっかり忘れていました。
代わりにif then elseを使うようです。
書き換えました。
三項演算子よりも記述量は増えましたが、見やすいと感じます。
おしまい
書き換えはけっこう大変かなと思いましたが、ぜんぜんそんなことはなく、楽しくやることができました。
コード的には、50行1,458文字が、38行1,157文字になりました。
20%減といったところですね。
とても良い練習になりました。