LTSVパーサーをerlangで書いてみた

突然のLTSVブーム、ということで、勉強中のerlangを使ってparserを書いてみ ました。

それまでerlang(とOTP)という言語自体については少しずつ分かってきたのです が、ベストプラクティスというか、どう書けばいいか、という点やrebarや eunitなどの周辺エコシステムについては全然分かっていませんでした。

そのため、今回の実装をネタにそのあたりを勉強しようかな、と思っていまし た。

指摘された事項

といっても、自分は実際使っているわけではないので、実際に使っている Voluntas先輩 にコードレビューを頂きながら、指摘してもらいました。

specの書き方

bashoさんの riak では %% @spec という書き方がされていますが、

%% @spec parse_file(string()) -> [[{binary(), binary()}]].
parse_line(Line) -> ok.
%% という書き方ではなく、

-spec parse_file(string()) -> [[{binary(), binary()}]].
%% @doc parse LTSV file
parse_line(Line) -> ok.
%% という書き方

をするといいそうです。これにより、自動でドキュメントが生成されます。 @docはどっちでも、というぐらいだそうです。

起きた問題

./rebar eunitしてもテストが実行されない

lrtsb.app.srcを作っていないのが原因でした。rebar create-app appid=ltsv で作成しました。simplemodでは要らないかと思ってました。

ということで

文法からは分からない、erlangの実際のコードについて指摘を頂いたので、誰 かの役に立つかと思いまとめてみました。V先輩に感謝しつつ〆。

Comments

comments powered by Disqus