== Why is this an issue?

The point of declaring an optional variable is to make explicit the fact that it might contain no valid value, i.e. ``++nil++``. Force-unwrapping an optional will lead to a runtime error if the optional does contain ``++nil++``. Even if the value is tested first, it's still considered a bad practice to use force-unwrapping. Instead, optional binding or optional chaining should be used.


=== Noncompliant code example

[source,swift]
----
var greeting: String?

// ...
println( \(greeting!))  // Noncompliant; could cause a runtime error

if greeting != nil {
  println( \(greeting!))  // Noncompliant; better but still not great
}
----


=== Compliant solution

[source,swift]
----
var greeting: String?

// ...
if let howdy = greeting {
  println(howdy)
}
----


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[]
