Os namespaces são uma forma de agrupar código relacionado e de evitar conflitos de nomes, e estão geralmente presentes em todas as bases de código, exceto nas mais triviais.
A sintaxe é a seguinte:
namespace MyNameSpace
{
public class MyClass {}
public class OtherClass {}
}
Os tipos incluídos em namespaces são referidos fora do âmbito do namespace ao prefixar o nome do tipo com a sintaxe de ponto. Em alternativa, e mais habitualmente, podes colocar uma diretiva using no topo do ficheiro (ou dentro de um namespace) e o tipo pode ser usado sem o prefixo. Dentro do mesmo namespace, não é preciso qualificar os nomes dos tipos.
namespace MySpace
{
public class MyClass {}
public class Foo
{
public void Bar()
{
var baz = new MyClass();
}
}
}
public class Qux
{
public void Box()
{
var nux = new MySpace.MyClass();
}
}
namespace OtherSpace
{
using MySpace;
public class Tix
{
public void Jeg()
{
var lor = new MyClass();
}
}
}
Podes dar um alias a um namespace com a sintaxe using MyAlias = MySpace; e depois usar o alias em qualquer sítio onde o namespace possa ser usado.
A direção está a começar a aplicar princípios darwinianos ao projeto remote-control-competition do carro de controlo remoto. Os programadores foram divididos em duas equipas, Red e Blue, e têm a missão de melhorar o design de forma independente uma da outra. Não precisam de se preocupar com as decisões de design da outra equipa.
Pedem-te que dês uma vista de olhos ao código e vejas qual a melhor forma de combinar os dois esforços para fins de teste.
Usa namespaces para expressar melhor a intenção do código.
Atualmente, tipos importantes como Motor e Telemetry, para não falar do próprio RemoteControlCar, estão aninhados dentro de uma classe estática exterior, <Color>RemoteControlCarTeam. O único objetivo da classe exterior é permitir que tipos com o mesmo nome coexistam no programa. Isso expressa-se melhor com um namespace. Vais ver no próximo exercício que, para estes fins, um namespace tem vantagens sobre uma static class.
Embora a direção faça questão de que as equipas se chamem RedRemoteControlCarTeam e BlueRemoteControlCarTeam nas definições, os nomes são bastante pesados quando nos referimos às equipas. Encontra uma forma de usar os identificadores mais curtos Red e Blue ao construir os carros.
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.