Usages of ID class in Salesforce

As we know that each record Id represents a unique sObject record. There are two versions of every record Id in salesforce :
・15 digit case-sensitive version which is referenced in the UI
・18 digit case-insensitive version which is referenced through the API
And there are many usages of sObject ID,such as:

Get the sObject name

Get 15 digit ID

The ID needs to be 15 digit when it is passed as a report parameter.

Get 18 digit ID

The most simple solution is to create a formula field with formula “CASESAFEID(Id)”,and get the value of it from Apex or Report.
And, there have some really really crazy solutions,as the following :
http://salesforce.stackexchange.com/questions/27686/how-can-i-convert-a-15-char-id-value-into-an-18-char-id-value/27694
And
https://sites.google.com/site/ezrakenigsberg/blog/greatnewfixforthe15-characteridproblem