Eu queria tirar uma dúvida sobre como esse tipo de implementação é feita em sistemas reais e como é feito a modularização correta das funções, eu basicamente fiz uma função Get para pegar o álbum que corresponda ao nome do qual o usuário forneceu é implemento um foreach para varrer esse álbum o custo deste algoritmo seria linear pois irá realizar n comparações, minha dúvida é ? Como isso é implementado de fato no mercado ? Como eu prático e treino boas práticas de programação ? Uma função não pode ficar grande como essa no qual eu escrevi ?
public static Album VerificaAlbum( Dictionary<string, Banda> bandasRegistradas, string nomeBanda, string nomeAlbum ) { List albuns = bandasRegistradas[nomeBanda].GetAlbum(); foreach( Album album in albuns ) { if( album.Nome == nomeAlbum ) return album; } return null!; }
public override void Insere( Dictionary<string, Banda> bandasRegistradas ) { base.Insere( bandasRegistradas ); Menu.FormataOpcao( "Por favor, insira o nome da banda:" ); string nomeBanda = Console.ReadLine()!;
if( GerenciadorBandas.VerificaBanda( bandasRegistradas, nomeBanda ) )
{
Console.WriteLine( $"Banda: {nomeBanda} encontrada!" );
Menu.FormataOpcao( "Por favor, insira o nome do álbum:" );
string nomeAlbum = Console.ReadLine()!;
Album albumEncontrado = GerenciadorBandas.VerificaAlbum( bandasRegistradas, nomeBanda, nomeAlbum );
Menu.FormataOpcao( "Por favor, insira a nota do álbum:" );
int avaliacao = int.Parse( Console.ReadLine()! );
albumEncontrado.InsereNota( new Avaliacao( avaliacao ) );
}
else
{
Console.WriteLine( $"Banda: {nomeBanda} não encontrada!" );
}
}