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.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay