LoginSignup
6
4

More than 3 years have passed since last update.

Deno Style Guideを読み解く

Posted at

Deno - JavaScriptランタイムのネクストスタンダードか

Deno、いいですよねー。セキュアだし、TypeScript推しだし、標準モジュール志向だし。

v1.0のリリースについて

未だv0.2ということで本番環境での利用は推奨されていません。
作者のライアン曰く2019年中にv1.0リリースすると公言しているそうですが、コミュニティの中では恐らく来年中頃くらいまではかかるのでは?という予想です。
まぁ正式リリース前のこのタイミングで各種情報をキャッチアップしておけばJS界隈で遅れを取ることはなさそうですね。

Deno Style Guideとは

その名の通りDenoをコーディングする際の現時点でのベストプラクティスです。
リンクはコチラ

denoStyleGuide.png

それでは早速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コーディングを楽しみたいと思います。
何か出来ましたらまた共有させていただきます。

以上です。

6
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4