サーバー側のJavascriptのベストプラクティス?
-
10-07-2019 - |
質問
Javaで構築されたCMSがあり、サーバーサイドJS用のMozilla Rhinoがあります。現時点では、JSコードベースは小さいですが成長しています。手遅れになりコードが恐ろしい混乱になる前に、いくつかのベストプラクティスとコーディングスタイルを紹介したいと思います。
明らかに、名前空間の制御は非常に重要です。しかし、他のベストプラクティスはどうでしょうか(特にJavaプログラマーの場合)。
解決
最前線のヒントを次に示します。
- Javaのように、関数にはDoxygen / JsDocスタイルのdocblockを使用します
- 単体テスト。個人的にはJsTestDriverに似ています。CIサーバーからも自動的に実行できるためです。
- JSLintを使用します。悪いコードについてはちょっと気になります
- Google Closure Compilerの使用を検討してください。 JSLintのようなコードについては細かく調べますが、不十分なdocブロックなどを見つけるのに役立ちます。
- チームの全員がクロージャの仕組みを理解していることを確認してください。そうしないと、頭痛の種になります
- お気づきのように、特に他のJSライブラリでコードをうまく動作させるには、名前空間が重要です(
var myns = myns || {};
) - 個人的には、クラスなどのOOPヘルパーを提供するライブラリを使用すると便利です。プロトタイプの継承を使用することもできますが、多くの場合、その方法は少し複雑です。
他のヒント
Douglas Crockfordが好むように、JavaScriptは世界で最も誤解されているプログラミング言語です。多くの人はそれを知りませんが、JavaScriptでコーディングする正しい方法があります。優れたJavaScriptの作成方法を理解する前にJava開発者にコーディングを開始させると、深刻な問題が発生することは間違いありません。
最初に行うことは、誰もがMozillaの優れた記事、JavaScriptの再紹介( https://developer.mozilla.org/en/a_re-introduction_to_javascript )。 JavaScriptの最大の問題の1つは、最も一般的なタスクを実行する方法が多数あることです。この記事では、同じページにユーザーを誘導する必要があります。もう1つの重要なリファレンスは、JavaScript:The Good Partsを含むダグラスクロックフォードの研究です。
多くのJava / C ++プログラマを獲得するもう1つのことは、JavaScriptがブロックスコープではなく関数スコープを使用することです。これは非常に難しい問題を引き起こす可能性があります。 A List Apartには、JavaScriptのバインドと呼ばれるこの問題に関するすばらしい記事があります。
上記のリソースで説明されている主要な問題を要約すると、学ぶべき最も重要な違いは
- プロトタイプ継承(vs.classベースの継承)を使用してオブジェクト指向コードを記述する方法
- クロージャーとラムダの使用方法
- 動的オブジェクトの力を活用する方法
- 関数スコープのコードの書き方
JavaにJSエンジンがあるので、JSコードの単体テストを書く習慣をつけてください。コーディングスタイルを選択し、積極的に適用します。可能であれば、ツールを使用して、コードがコーディングスタイルに従っていることを確認します。