1
resposta

[Projeto] Resposta Desafio Proposto

Fiz o desafio antes de ver o video de resolução. Pensei em usar enums, mas achei que teria muito trabalho então usei switch.

Primeiro mapiei o campo key:

[JsonPropertyName("key")]
public int chaveTom { get; set; }

Depois criei um propriedade Tom

public string Tom
{
    get
    {
        string tom;

        switch (chaveTom)
        {
            case 0:
                {
                    tom = "C";
                    break;
                }
            case 1:
                {
                    tom = "C#";
                    break;
                }
            case 2:
                {
                    tom = "D";
                    break;
                }
            case 3:
                {
                    tom = "D#";
                    break;
                }
            case 4:
                {
                    tom = "E";
                    break;
                }
            case 5:
                {
                    tom = "F";
                    break;
                }
            case 6:
                {
                    tom = "F#";
                    break;
                }
            case 7:
                {
                    tom = "G";
                    break;
                }
            case 8:
                {
                    tom = "G#";
                    break;
                }
            case 9:
                {
                    tom = "A";
                    break;
                }
            case 10:
                {
                    tom = "A#";
                    break;
                }
            case 11:
                {
                    tom = "B";
                    break;
                }
            default:
                {
                    tom = "Não encontrado";
                    break;
                }
        }
        return tom;
    }
}

Mas depois olhando a forma que foi resolvida pelo Guilherme ficou bem melhor.

1 resposta

Olá, Douglas!

Você fez um ótimo trabalho ao resolver o desafio! A utilização do switch para mapear a tonalidade é uma solução válida e funcional. No entanto, como você mesmo notou, a solução proposta pelo Guilherme é mais eficiente e concisa.

A abordagem do Guilherme utiliza um array de strings para mapear a tonalidade diretamente, sem a necessidade de um switch ou if. Cada índice do array corresponde à tonalidade (key) da música. Assim, a tonalidade pode ser facilmente acessada através do índice, que é a propriedade Key.

Aqui está o código relevante da solução do Guilherme:

private string[] tonalidades = { "C", "C#", "D", "Eb", "E", "F", "F#", "G", "Ab", "A", "Bb", "B" };

[JsonPropertyName("key")]
public int Key { get; set; }

public string Tonalidade {
    get
    {
        return tonalidades[Key];
    }
}

No código acima, a propriedade Tonalidade retorna a tonalidade correspondente à Key diretamente do array tonalidades.

Essa abordagem é mais eficiente porque evita a necessidade de uma estrutura de controle de fluxo (switch ou if) e faz o mapeamento diretamente através do índice do array.

Espero ter ajudado e bons estudos!