Fred Tingaud 16f6c0aecf
Inline adoc when include has no additional value (#1940)
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.
2023-05-25 14:18:12 +02:00

88 lines
1.6 KiB
Plaintext

== Why is this an issue?
In the interests of keeping code clean, the simplest possible conditional syntax should be used. That means
* using the ``++??=++`` operator for a self-assign-if-not-null operation,
* using the ``++??++`` operator for an assign-if-not-null operation, and
* using the ternary operator ``++?:++`` for assignment to a single variable.
=== Noncompliant code example
[source,csharp]
----
object a = null, b = null, x;
if (a != null) // Noncompliant; needlessly verbose
{
x = a;
}
else
{
x = b;
}
x = a != null ? a : b; // Noncompliant; better but could still be simplified
x = (a == null) ? new object() : a; // Noncompliant
if (condition) // Noncompliant
{
x = a;
}
else
{
x = b;
}
if (a == null) // Noncompliant
a = new object();
var y = null ?? new object(); // Noncompliant
a = a ?? new object(); // Noncompliant for C# 8
----
=== Compliant solution
[source,csharp]
----
object x;
x = a ?? b;
x = a ?? b;
x = a ?? new object();
x = condition ? a : b;
a ??= new object();
var y = new object();
a ??= new object();
----
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Use the "[?:|??|??=]" operator here.
'''
== Comments And Links
(visible only on this page)
=== on 8 Jul 2015, 08:39:56 Tamas Vajk wrote:
\[~ann.campbell.2] LGTM
=== on 11 Dec 2015, 08:51:07 Tamas Vajk wrote:
\[~ann.campbell.2] I reformatted the description (uses a list now), and added the missing code samples.
=== on 11 Dec 2015, 13:56:45 Ann Campbell wrote:
looks good
endif::env-github,rspecator-view[]