Trilhas
/
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

Namespaces são uma forma de agrupar código relacionado e evitar conflitos de nomes, e costumam estar presentes em todas as bases de código, exceto nas mais triviais.

A sintaxe é a seguinte:

namespace MyNameSpace
{
    public class MyClass {}

    public class OtherClass {}
}

Tipos declarados dentro de namespaces são referenciados fora do escopo do namespace prefixando o nome do tipo com a sintaxe de ponto. Como alternativa, e mais comumente, você pode colocar uma diretiva using no topo do arquivo (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();
        }
    }
}

Você pode criar um alias para um namespace com a sintaxe using MyAlias = MySpace; e depois usar o alias em qualquer lugar onde o namespace poderia ser usado.

Instruções

A gerência está começando a aplicar princípios darwinianos ao projeto Remote Control Car remote-control-competition. As pessoas desenvolvedoras foram divididas em duas equipes, Red e Blue, e cada uma tem a tarefa de melhorar o design de forma independente da outra. Elas não precisam se preocupar com as decisões de design da outra equipe.

Você recebeu a tarefa de dar uma olhada no código e ver qual é a melhor forma de combinar os dois esforços para fins de teste.

1. Encontre uma forma mais adequada de isolar o código das duas equipes

Use namespaces para expressar melhor a intenção do código.

No momento, tipos importantes como Motor e Telemetry, sem falar do próprio RemoteControlCar, estão aninhados dentro de uma classe estática externa, <Color>RemoteControlCarTeam. O único propósito da classe externa é permitir que tipos com o mesmo nome coexistam no programa. Isso é melhor expresso com o uso de um namespace. Você vai ver no próximo exercício que, para esses fins, um namespace tem vantagens sobre uma static class.

2. Simplifique o sistema de nomes

Embora a gerência insista que as equipes se chamem RedRemoteControlCarTeam e BlueRemoteControlCarTeam nas definições, esses nomes são bem complicados na hora de referenciar as equipes. Encontre uma forma de usar os identificadores mais curtos Red e Blue ao construir os carros.

Editar via GitHub O link abre em uma nova janela ou aba
C# Exercism

Tudo pronto para começar Vermelho vs. Azul: estilo Darwin?

Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.