Similar to methods, local functions should probably be constrained in their maximum number of parameters (AV1561) and maximum number of statements (AV1500). Tracked by #140.
Likewise, mentions in other rules may need to be expanded to include local functions. In most cases, it should be sufficient to replace "methods" or "members" with: "methods/members and local functions".
Additionally, we may want to provide guidance on when to (not) use local functions:
Discussed in #96 (comment):
public IEnumerable<T> Enumerate<T>(IEnumerable<T> items)
{
if (items == null)
{
throw new ArgumentException(nameof(items));
}
return InnerEnumerate(items);
IEnumerable<T> InnerEnumerate(IEnumerable<T> array)
{
foreach (var item in array)
{
yield return item;
}
}
}
Similar to methods, local functions should probably be constrained in their maximum number of parameters (AV1561) and maximum number of statements (AV1500). Tracked by #140.
Likewise, mentions in other rules may need to be expanded to include local functions. In most cases, it should be sufficient to replace "methods" or "members" with: "methods/members and local functions".
null(AV1135) Updated AV1135 for local functions #149Don't include numbers in variables, parameters and type members (AV1704)Name a member, parameter or variable according to its meaning and not its type (AV1707)AsyncorTaskAsync(AV1755) Updated AV1755 for local functions #153Any()to determine whether anIEnumerable<T>is empty (AV1800) Updated AV1800 for local functions #154Avoid inline comments (AV2310) Updated AV2310 for local functions #155Additionally, we may want to provide guidance on when to (not) use local functions:
Discussed in #96 (comment):
Funcvariables into local functions.yield-based deferred execution methods: