
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
87 lines
1.7 KiB
Plaintext
87 lines
1.7 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Returning ``++null++`` or ``++default++`` instead of an actual collection forces the method callers to explicitly test for null, making the code more complex and less readable.
|
|
|
|
Moreover, in many cases, ``++null++`` or ``++default++`` is used as a synonym for empty.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,csharp]
|
|
----
|
|
public Result[] GetResults()
|
|
{
|
|
return null; // Noncompliant
|
|
}
|
|
|
|
public IEnumerable<Result> GetResults(bool condition)
|
|
{
|
|
var results = GenerateResults();
|
|
return condition
|
|
? results
|
|
: null; // Noncompliant
|
|
}
|
|
|
|
public IEnumerable<Result> GetResults() => null; // Noncompliant
|
|
|
|
public IEnumerable<Result> Results
|
|
{
|
|
get
|
|
{
|
|
return default(IEnumerable<Result>); // Noncompliant
|
|
}
|
|
}
|
|
|
|
public IEnumerable<Result> Results => default; // Noncompliant
|
|
----
|
|
|
|
=== Compliant solution
|
|
|
|
[source,csharp]
|
|
----
|
|
public Result[] GetResults()
|
|
{
|
|
return new Result[0];
|
|
}
|
|
|
|
public IEnumerable<Result> GetResults(bool condition)
|
|
{
|
|
var results = GenerateResults();
|
|
return condition
|
|
? results
|
|
: Enumerable.Empty<Result>();
|
|
}
|
|
|
|
public IEnumerable<Result> GetResults() => Enumerable.Empty<Result>();
|
|
|
|
public IEnumerable<Result> Results
|
|
{
|
|
get
|
|
{
|
|
return Enumerable.Empty<Result>();
|
|
}
|
|
}
|
|
|
|
public IEnumerable<Result> Results => Enumerable.Empty<Result>();
|
|
----
|
|
|
|
=== Exceptions
|
|
|
|
Although ``++string++`` is a collection, the rule won't report on it.
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::../message.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|