I found out that site()->language()->code() gave an error if the language did not exist and site()->language() did not.
Fatal error: Call to a member function code() on a non-object in
Are there any other differences that I need to be aware of?
Can site()->language() give any other result than the language code or false? If there are no big differences, why does site()->language()->code() exist? Is it needed?