Percursos
/
C#
C#
/
Exercícios
/
Vermelho vs. Azul: estilo Darwin
Vermelho vs. Azul: estilo Darwin

Vermelho vs. Azul: estilo Darwin

Exercício de aprendizagem

Introdução

Namespaces

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.

Instruções

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.

1. Encontra uma forma mais adequada de isolar o código das duas equipas

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.

2. Simplifica o sistema de nomes

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.

Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar Vermelho vs. Azul: estilo Darwin?

Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.