The Daily WTF 日本語
フォロー
CodeSOD: Negative Days
TimeSpan 構造体の .NET ソース コードには、その機能について説明するコメントが含まれています。TimeSpan は、正または負の期間を表します。内部的には、ミリ秒単位で格納されます。この表現は、時間や日などの単位には適していますが、より長い期間では不正確になります。たとえば、月は 28 日から 31 日まで長さが異なります。同様に、年は 365 日または 366 日になり、10 年間には 1 回から 3 回のうるう年が含まれる可能性があります。これらの不整合が、TimeSpan 構造体が年または月に対するメソッドを提供しない理由です。年について言及されている「364 日」は、作者が「指のミス」と呼ぶ軽微なエラーであり、コードの動作には影響しません。このコメントは 12 年間変更されずにコードに残っています。TimeSpan クラス自体も、基本的にミリ秒のラッパーであるため、変更されていません。月または年を加算するようなより複雑な日付の計算は、他の日時オブジェクトによって処理されます。これは大きな問題ではありませんが、コメントとクラスの歴史は注目に値します。TimeSpan クラスは、非推奨のコンストラクターや、Silverlight を含む古い .NET バージョンに対するコンパイル時サポートも明らかにしています。廃止されたテクノロジーである Silverlight は、このクラスの長年の存在を浮き彫りにしています。