Deno - JavaScriptランタイムのネクストスタンダードか
Deno、いいですよねー。セキュアだし、TypeScript推しだし、標準モジュール志向だし。
v1.0のリリースについて
未だv0.2ということで本番環境での利用は推奨されていません。
作者のライアン曰く2019年中にv1.0リリースすると公言しているそうですが、コミュニティの中では恐らく来年中頃くらいまではかかるのでは?という予想です。
まぁ正式リリース前のこのタイミングで各種情報をキャッチアップしておけばJS界隈で遅れを取ることはなさそうですね。
Deno Style Guideとは
その名の通りDenoをコーディングする際の現時点でのベストプラクティスです。
リンクはコチラ。
それでは早速1つ1つ読み解いていきましょう
Use TypeScript
はい、いきなり言い切ってますねw
TypeScriptありきのDenoってことを肝に命じておきましょう💦
Use the term "module" instead of "library" or "package"
確かにライブラリとかパッケージとか言葉の定義が曖昧になるときがありますよね。
とくにフロントやバックエンドを横断して様々な言語で開発しているとき。
ということでDenoでは「モジュール」と徹底しましょう。
Do not use the filename index.ts nor index.js
index...というファイル名を使うなということですね。
Webサイトだとデフォルトのエントリポイントのindex.htmlに付随したindex.tsとうファイル名にするのが一般的ですが、Denoの場合はmodule名.tsとすることで紛らわしさや動作の先入観をなくすという目的があるようです。
Within deno_std, do not depend on external code
標準モジュールはDenoのベースとなるため実装するプログラム内のなにものにも依存させてはならぬということですかね。
Within deno_std, minimize dependencies; do not make circular imports.
こちらは循環インポートはするなということですが、標準モジュールを汚さないでねってことですかね。
For consistency, use underscores, not dashes in filenames.
同感です。ハイフン使うのはhtmlのattributeくらいですかね。ファイル名はアンダースコアで統一しましょう。
Format code using prettier.
具体的には、
- コードは80文字でラップ
- 2スペースのインデントを使用
- キャメルケースを使用
- 変数、関数、フィールド名はlowerCamelCase
- class, interface名はUpperCamelCase
まぁこのあたりは他の言語と変わりないですかね。
Exported functions: max 2 args, put the rest into an options object.
引数はobjectやinterfaceに切り出しておくことでメンテナブルにしましょうってことですね。
TODO comments should include an issue or the author's github username in parentheses.
こちらはわたくしも日々Denoに限らず実践していますが、TODOコメントにはそれに関連するissue番号なり、Redmine等のチケット駆動であればチケット番号を記載しておくと
着手まで日が空いてしまったり別の開発者が対応することになった場合に便利ですね。
Copyright headers
コピーライトは漏れなく記載しましょうねってことですね。Denoは MIT
BSD
Apache licensed
のに許容しているそうです。
Top level functions should not use arrow syntax
アロー構文はクロージャーでプライベートメソッドを模倣する場合に関数スコープ内でのみ使いましょうってことですね。
個人的にも基本は function...
で書いたほうがコードを読んだときに直感的に関数と視認できるのでそうしてます。
Meta-programming is discouraged. Including the use of Proxy.
ですよね!メタプログラミング、わたくしは生理的に受け付けないですね💦
If a filename starts with underscore, do not link to it: _foo.ts
内部モジュールのファイル名prefixにはアンダースコアを付けて明示化しましょうってやつですね。
Use JSDoc to document exported machinery
こちらはリーダブルなコードとするための一般的なお約束ですね。
Each module should come with tests
はい、テストは必ず行いましょう。その際にファイル名は modulename_test.ts
とするという規則で。
Unit Tests should be explicit
テスト関数には ...TestFunction
と明示しておきましょうってことですね。
まとめ
はい、ということで読み終わりました。ふうー疲れたw
まぁ特別トリッキーなものはなく、他の言語でも言われている一般的な決まりが多かったように思います。
それでは予習はバッチリということで、これからDenoコーディングを楽しみたいと思います。
何か出来ましたらまた共有させていただきます。
以上です。