web-dev-qa-db-ja.com

JSでメソッドを「廃止」としてマークするにはどうすればよいですか?

多くの無関係なメソッドを含むかなり大きなJSファイルを、その使用法に従ってメソッドを再グループ化するものにリファクタリングし、必要に応じてそれらの一部を名前変更します(誤解を招く名前を防ぐため)。

ただし、実際にこのコードを使用するほとんどのWebページは異なるコードブランチに分散しているため、単純な検索と置換を実行できません。私はすべての異なるブランチでそれを行うことができますが、それは30以上のブランチで同時にメンテナンスを行うか、変更が他のブランチ(私または他のチームメンバーによって)にマージされた後に名前を変更することを忘れる可能性があります。

これがC#の場合、メソッドに[Obsolete]のマークを付けるだけで、必要に応じて必要な変更にフラグを立てることができるので、ある程度同等のものを探しています。呼び出しを新しいメソッドにリダイレクトするだけで、しばらくの間、古いインターフェイスの機能を引き続き提供しますが、他の理由でページで作業しているときに新しいインターフェイスに切り替えるように「強制」したいと思います。

debugger;ステートメントと詳細なコメントをすべてのメソッドに追加して、開発中に中断するが本番では中断しないように、同様のことを行う他の方法はありますか?

39
JBG

移行期間にできることはいくつかあります。

  1. @deprecatedJSDoc フラグ。
  2. 関数が非推奨であることを示すコンソール警告メッセージを追加します。

サンプル:

/**
 * @deprecated Since version 1.0. Will be deleted in version 3.0. Use bar instead.
 */
function foo() {
  console.warn("Calling deprecated function!"); // TODO: make this cross-browser
  bar();
}
63
Jordão

Visual Studio 2013で見つかったものは次のとおりです。 http://msdn.Microsoft.com/en-us/library/vstudio/dn387587.aspx

切り替えを行っていないため、まだテストされていませんが、有望に見えます。

それまでの間、ページの読み込み時に次のようなコンテキストに応じてフラグを挿入しています。

<%
#if DEBUG
    Response.Write("<script type=\"text/javascript\"> Flags.Debug = true; </script>");
#endif
%>

そして、フラグがtrueの場合はエラーをスローするメソッドを呼び出し、リリース構成の場合は新しい呼び出しにリダイレクトします。

1
JBG