名前空間
このような場合は、2つのクラスHogeを別々の名前空間に入れる。
こうすると、上の関数Hogeの名前はTeamA.Hoge、下の関数Hogeの名前はTeamB.Hogeとなり、両者を区別できるようになる。複数のチームで開発を行う場合は、チームごとに使用する名前空間を決めておけば名前の衝突は起こらないので、それぞれのチームが自由に名前を付けることができる。しかし、ひとつのソースコード中でTeamA.HogeとTeamB.Hogeの片方だけを使う場合は、完全限定名での記述は冗長な表現となってしまう。以下の疑似コードでは、using namespace指令を使って、名前空間内の識別子をインポートし、修飾されていない単純名を使用できるようにしている。
処理系はusing namespace指令から単純名Hogeの完全限定名がTeamA.Hogeであることを推定し、単純名Hogeは完全限定名TeamA.Hogeに補完されてコンパイルが成功する。また、同一の名前空間内からの呼び出しでは単純名は自動的に補完されるため、常に単純名で記述することができる。下の例では、関数Hogeと関数Mainは同一の名前空間TeamAに属しているため、関数Mainからは単純名での記述で関数Hogeを呼び出すことができる。
オーバーロードをサポートする言語であれば、引数などのインターフェイスが異なる場合に限り、異なる関数や異なるメソッドに同じ名前を使用することができる。どのオーバーロードが使用されるかは、呼び出し時に渡す実引数の型などから文脈によって判断される。