The Daily WTF 日本語
フォロー
CodeSOD:道外
ファイルパスの区切り文字は、クロスプラットフォームソフトウェアを記述する際に課題となることがあり、すべてのプログラミング言語がそれらを処理するための簡単なAPIを持っているわけではありません。C++ 17以前は、開発者はファイルパスの区切り文字を処理するためにプリプロセッサのマジックを使用する必要があり、しばしばBoostライブラリ群を使用していました。一般的な解決策は、条件付きコンパイルディレクティブを使用してパス区切り文字のプリプロセッサ定数を定義することでした。このアプローチにより、開発者は異なるファイルパスの規約で動作するようにパスを組み立てることができました。しかし、一部の開発者は、パス区切り文字を追加してから正しいものに置き換えるといった間違ったアプローチを取り、重複したエラーを起こしやすいコードにつながりました。この間違ったアプローチは、コードベース全体にコピー&ペーストされることが多く、同じ欠陥のあるロジックが複数箇所に存在することになりました。複数の開発者が使用していたにもかかわらず、コードはリファクタリングされず、一部のケースでは依然として間違ったパス区切り文字を生成していました。幸いなことに、現代のWindowsは間違ったパス区切り文字に対して寛容ですが、これは悪いコーディングプラクティスを容認するものではありません。より良いアプローチは、パス区切り文字の定数を定義し、コードベース全体で一貫して使用することです。BuildMasterのようなセルフサービスリリース管理プラットフォームを使用することで、開発プロセスを合理化し、このようなエラーの可能性を減らすことができます。