本番コードで名前が間違っている関数を処理する方法は?


28

最近、GitHubでPythonライブラリに出会いました。ライブラリは素晴らしいですが、関数名に1つの明白なタイプミスが含まれています。dummy_fuction()それがあるべきときにそれを呼び出しましょうdummy_function()。この関数は間違いなく「インザワイルド」であり、組み込みシステムで使用される可能性が最も高くなります。

最初に思い浮かぶのは、正しい名前の関数の2番目のバージョンを追加し、次のリリースの最初のバージョンに非推奨の警告を追加することです。

3つの質問:

  1. 上記のアプローチは、意図しない結果をもたらす可能性がありますか?
  2. この種の問題に対する標準的なアプローチはありますか?
  3. 非推奨の警告はいつまで残しておくべきですか?

1
これは、静的言語が動的言語よりもはるかに堅牢な状況です(非常に頻繁ではありませんが)。コンパイラは、名前が変更された関数が既に存在するかどうかを確認できます。
ジョルジオ

7
また、参照のHTTPリファラ [原文]
AakashM

2
また、Apacheのmod_spelingも指摘しますが、それは意図的なものである可能性があります。
モニカiamnotmaynardを

1
@AakashM:Wikipediaの記事がそのページ全体で(用語ではなくオブジェクトを参照する場合でも)間違ったスペルと正しいスペルの両方を使用するようになったのが大好きです。
マーティンピーターズ

もう一つの良いビットhttp_referer- 。私はリファラフィールドをしたときのような」その私はスペリングの私の選択のためには何もなく、悲しみを持っていない私のスペルが10億回分以上をいくつか使用しているので、私は今、OEDで修正スペルを取得しようとしています。彼らのものより。」- フィリップハラムベイカー
ジェイミーブル

回答:


29

何よりもまず、ポリシーはメンテナーに依存します。

あなたの質問は面白いと思いますが、ほとんどは意見に基づいています。

私の意見では、あなたのアプローチは健全です-関数の名前を変更し、スペルミスバージョンを非推奨のアーティファクトのままにして、正しいアーティファクトにリダイレクトします。

上記のアプローチは、意図しない結果をもたらす可能性がありますか?

たとえば、コードが壊れる可能性があります。誰かがスペルミスにも耐えられず、名前を変更したバージョンを実装した場合。ライブラリを更新すると、名前の衝突が発生します。

この種の問題に対する標準的なアプローチはありますか?

ライブラリの作成時にスペルミスをしないでください;)

非推奨の警告はいつまで残しておくべきですか?

非推奨は、次のメジャーリリース(バージョン番号の最初の数字が増加する)までそのままにしておくべきだと思います。

これは、一部の(正当化された)下位互換性の破壊が許容される場合であり、コードが引き続き正常にビルドされるようにするのはライブラリユーザーの責任です。

changelogでそれを必ず指摘してください:皆さんがを使用した場合はdummy_fuction、それをdummy_functionすべての場所に置き換えてください。

ライブラリがバージョン管理されていない場合は、バージョン管理されていない可能性があります-バージョン管理を開始するのは良いケースです。


1
聞いてよかった。ライブラリはバージョン管理されているため、バージョン管理のアプローチは適切に聞こえます。実際には独自のIDEがあるため、スペルミスのバージョンはコード補完ツールから隠され、新しいユーザーによる使用が停止されます。Q2の答えとして、さらに+1を提供できれば、私はそうします!
ジェイミーブル

2
これは、他のソフトウェアでも見たアプローチです。開発するソフトウェアにはサードパーティのAPIを使用していますが、そのAPIにはタイプミスを含むゲッターメソッドが含まれています。この問題は、メソッドの名前を変更し、単に正しいバージョンを呼び出す古い(誤った)スペルでダミーメソッドを作成することで修正されました。ダミーメソッドには、推奨されないことと正しいバージョンへのリンクを記載する以外のドキュメントは含まれていません。後方互換性を損なうことを避けるために、その方法は何年も前からありました。
カールニコル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.