Skip to content

Commit 70d613e

Browse files
Address code review feedback - improve Features.cs implementation
- Keep _featureStatusMap as readonly for safety - Extract default feature map to CreateDefaultFeatureStatusMap method - Avoid duplication between initialization and reset - Use Clear() and re-populate in ResetFeatureStatusForTests - All tests still passing Co-authored-by: YuliiaKovalova <[email protected]>
1 parent 437d242 commit 70d613e

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

src/Framework/Features.cs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,19 @@ public enum FeatureStatus
3636
/// </summary>
3737
public static class Features
3838
{
39-
private static Dictionary<string, FeatureStatus> _featureStatusMap = new Dictionary<string, FeatureStatus>
39+
private static readonly Dictionary<string, FeatureStatus> _featureStatusMap = CreateDefaultFeatureStatusMap();
40+
41+
private static Dictionary<string, FeatureStatus> CreateDefaultFeatureStatusMap()
4042
{
41-
{ "BuildCheck.Beta", FeatureStatus.Preview },
42-
{ "CachePlugins", FeatureStatus.Available }, // Project cache plugins (e.g., Quickbuild) are enabled by default but can be remotely disabled.
43-
{ "EvaluationContext_SharedSDKCachePolicy", FeatureStatus.Available }, // EvaluationContext supports the SharingPolicy.SharedSDKCache flag.
44-
{ "TerminalLogger_MultiLineHandler", FeatureStatus.Available }, // TerminalLogger has better explicit support for rendering multi-line messages
45-
// Add more features here.
46-
};
43+
return new Dictionary<string, FeatureStatus>
44+
{
45+
{ "BuildCheck.Beta", FeatureStatus.Preview },
46+
{ "CachePlugins", FeatureStatus.Available }, // Project cache plugins (e.g., Quickbuild) are enabled by default but can be remotely disabled.
47+
{ "EvaluationContext_SharedSDKCachePolicy", FeatureStatus.Available }, // EvaluationContext supports the SharingPolicy.SharedSDKCache flag.
48+
{ "TerminalLogger_MultiLineHandler", FeatureStatus.Available }, // TerminalLogger has better explicit support for rendering multi-line messages
49+
// Add more features here.
50+
};
51+
}
4752

4853
/// <summary>
4954
/// Checks if a feature is available or not.
@@ -72,13 +77,11 @@ internal static void SetFeatureAvailability(string featureName, FeatureStatus st
7277
/// </summary>
7378
internal static void ResetFeatureStatusForTests()
7479
{
75-
_featureStatusMap = new Dictionary<string, FeatureStatus>
80+
_featureStatusMap.Clear();
81+
foreach (var kvp in CreateDefaultFeatureStatusMap())
7682
{
77-
{ "BuildCheck.Beta", FeatureStatus.Preview },
78-
{ "CachePlugins", FeatureStatus.Available },
79-
{ "EvaluationContext_SharedSDKCachePolicy", FeatureStatus.Available },
80-
{ "TerminalLogger_MultiLineHandler", FeatureStatus.Available },
81-
};
83+
_featureStatusMap[kvp.Key] = kvp.Value;
84+
}
8285
}
8386
#endif
8487
}

0 commit comments

Comments
 (0)