CodeSOD: これを後で支払いなさい ノート

CodeSOD: これを後で支払いなさい

Rossは、XMLをデータ交換に使用する小さなクレジットカード決済ゲートウェイと統合するソフトウェアを書くように依頼された。決済ゲートウェイは、公開されたスキーマドキュメントがなく、XMLメッセージの解析のためのサンプルコードを提供していた。サンプルコードは、XML応答からデータを抽出するfetch_data関数を使用していた。ただし、fetch_data関数は、XMLドキュメントの構造を考慮せずに、複数のサブストリングを使用してXMLを解析するように実装されていた。このアプローチは、fragileで、入れ子になったタグ、属性、自己閉じタグを処理できなかった。関数は、有効でないドキュメントフラグメントも抽出することを許可していた。より良いアプローチは、PHPの組み込みXMLパーサークラスを使用することで、より堅牢で維持可能なソリューションを提供する。現在の実装は、ドキュメントを通じて複数の線形検索を行うため、パフォーマンス上の利点さえも提供しない可能性がある。fragileで制限されたパーシングアプローチは、将来的に問題を引き起こす可能性があり、有効なXMLドキュメントを処理することが困難になる。コードの作者は、XMLを簡単に解析するアプローチをとり、複雑なXMLドキュメントを処理するには適切でない。