DEV Community

Cover image for Analisando os requisitos da melhor API de tabela de campeonato que você já viu
anastacio_dev
anastacio_dev

Posted on

Analisando os requisitos da melhor API de tabela de campeonato que você já viu

Vamos começar escrevendo qual é a ideia:

Receber um conjunto de times e devolver a tabela com todos os jogos entre esses times, as datas das partidas e com a opção da nossa "otimização", que visa reduzir o número de viagens entre os times.

Considerando os requisitos de saída, precisamos ter como entrada não apenas o nome do time, mas outros dados também:

  • sua localização, para que possamos planejar as viagens;
  • o modelo do campeonato: serão times em um grupo único, como o Brasileirão? Ou serão times divididos em vários grupos, como a Copa do Mundo?
  • o campeonato será em turno e returno, turno único, ou algum modelo misto, como a Champions League, onde apesar de um grupo único, não jogam todos contra todos? Ou como a NBA, onde se joga 4 turnos contra os times do seu grupo e até 3 turnos contra os demais times[1]?
  • se houver a divisão por grupos, somos nós quem vamos sortear que time cai em cada grupo ou o usuário já definiu isso? Vamos dar a opção para o usuário;
  • o usuário realmente quer uma tabela "otimizada"?. Talvez seja só o campeonato de condomínio, não é mesmo? Vamos oferecer ao usuário a opção de criar uma tabela simples ou uma otimizada, ok?
  • quantos jogos podemos agendar por dia? Haverá diferenças de limite de jogos por cada dia da semana (tipo, mais jogos aos fins de semana)?
  • e qual é o intervalo de descanso que um time precisa ter entre uma partida e outra?

  • E o nome do campeonato, claro.

Nota: Nesta fase, em um projeto real, teríamos que obter esses requisitos com o cliente.

Dada as informações acima, podemos inferir que as entradas do nosso sistema serão:

Entradas:

  • Um conjunto de equipes e suas localizações
  • a forma do campeonato ( quantos turnos haverá entre times do mesmo grupo? E contra times dos demais grupos? Aliás, haverá divisão por grupos?
  • Havendo a divisão por grupos, somos nós quem faremos o sorteio ou receberemos os grupos já definidos?
  • O usuário quer uma tabela otimizada? Sim ou não?
  • Total de jogos permitidos por dia
  • Dias de descanso que um time;precisa ter entre um jogo e outro;
  • E o nome do campeonato.

E a saída será:

  • O nome do campeonato
  • Os grupos (ou o grupo, caso seja um só)
  • A tabela de jogos, contendo todos os jogos com suas respectivas datas

Aqui já dá pra imaginar dois JSONs, um com os dados de entrada e outro com os dados de saída, certo?

E, pra cada tópico, já dá pra imaginar um objeto, ok?

E como objetos sempre nos levam a falar de classes, então já estamos bem perto dele... O código.

Assuntos para o próximo texto. Prosseguimos.

[1] Por curiosidade, entenda o regulamento da NBA com esse texto no blog deles.

Top comments (0)