Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Deno Style Guideを読み解く

More than 1 year has passed since last update.

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

以上です。

okame_qiita
Webエンジニア/greenergy/ときどきfam
https://github.com/kk0917
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away