問題タブ [readonly-attribute]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 文字列の内部 API への Pythonic アプローチ
質問
python
内部 (および外部) APIで文字列リテラルを再利用する "pythonic" (つまり、正規、公式、PEP8 承認など) の方法はありますか?
バックグラウンド
たとえば、私はいくつかの (一貫性のない) JSON 処理コード (数千行) を扱っており、さまざまな JSON " struct
s" がアセンブル、解析などされています。コード レビュー中に発生する繰り返しの問題の 1 つは、異なる JSON です。struct
同じ内部パラメータ名を使用しているため、混乱が生じ、最終的にはバグが発生します。例:
これらの 2 つの (例) パケットには、同じ名前のフィールドが多数ありますが、それらは非常に異なるタイプのデータを表しています。この実装には、コードの再利用を正当化する理由はありませんでした。人々は通常、コード補完エンジンを使用して JSON のメンバーを取得しますstruct
。これは、タイプミスされた文字列リテラルが機能上の問題を引き起こし、早期にエラーをトリガーしないため、最終的にデバッグが困難な問題につながります。これらの API を変更する必要がある場合、文字列リテラルを調べて、どの JSONstruct
がどのフィールドを使用しているかを調べるのに多くの時間がかかります。
質問 - Redux
python
コミュニティのメンバーの間で一般的な、これに対するより良いアプローチはありますか? でこれを行っていた場合C++
、前の例は次のようになります。
私の最初のアプローチは次のとおりです。
- object として初期化できない
abc
抽象基本クラスを作成し、読み取り専用の定数を設定するために使用します。 - そのクラスをプロジェクト全体の共通モジュールとして使用します。
- これらの定数を使用することで、スペルが間違っているとシンボルが存在しないため、モンキー パッチ エラーの可能性を減らすことができますが、文字列リテラルのタイプミスはコード レビューをすり抜けてしまう可能性があります。