DateTime
UseTimeProvider for testability.
| Banned | Use instead |
|---|---|
DateTime.Now | TimeProvider.System.GetUtcNow() |
DateTime.UtcNow | TimeProvider.System.GetUtcNow() |
DateTimeOffset.Now | TimeProvider.System.GetUtcNow() |
DateTimeOffset.UtcNow | TimeProvider.System.GetUtcNow() |
Guard Clauses
Use SDK’sThrow utilities.
| Banned | Use instead |
|---|---|
ArgumentNullException.ThrowIfNull() | Throw.IfNull() |
ArgumentException.ThrowIfNullOrEmpty() | Throw.IfNullOrEmpty() |
ArgumentException.ThrowIfNullOrWhiteSpace() | Throw.IfNullOrWhiteSpace() |
File System Times
Use UTC variants to avoid timezone bugs.String Comparison
UseOrdinal for performance; InvariantCulture has overhead.
| Banned | Use instead |
|---|---|
StringComparison.InvariantCulture | Ordinal |
StringComparison.InvariantCultureIgnoreCase | OrdinalIgnoreCase |
StringComparer.InvariantCulture | Ordinal |
StringComparer.InvariantCultureIgnoreCase | OrdinalIgnoreCase |
Explicit Parameters
Require explicit intent, no implicit defaults.| Banned | Fix |
|---|---|
Enum.TryParse() | Add ignoreCase parameter |
Math.Round() | Add MidpointRounding parameter |
MathF.Round() | Add MidpointRounding parameter |
new CultureInfo(string) | CultureInfo.GetCultureInfo() (cached) |
Legacy Types
| Banned | Use instead |
|---|---|
Tuple<T1, ...> | Value tuples: (string, int) |
