Receita “Como Projetar Funções”

Slides: Como Projetar Funções

RECEITA:

  1. Assinatura, propósito, cabeçalho (stub)
  2. Exemplos (usando check-expect)
  3. Template
  4. Corpo do código (lógica da solução)
  5. Teste e depuração

DETALHAMENTO:

Assinatura:

  • O que a função consome (entrada) e o que produz (saída)

Propósito

  • Em uma linha, o propósito/objetivo da função
  • Exemplo: Encontrar dobro de um número

exemplo1

Cabeçalho (stub)

  • Um protótipo bobo da função
  • É a versão do programa que vai falhar nos testes!!

Captura de tela de 2014-09-09 16:51:59

Exemplos / testes:

  • Baseados na ideia de Test Driven Development (TDD) – Desenvolvimento Dirigido a Testes
  • Criar testes unitários antes da lógica do programa
  • Os testes inicialmente devem falhar, pois irão executar o cabeçalho (protótipo bobo)
  • No Racket, podemos usar a função
(check-equal? expr expected-expr)
         ;;Checa se o valor da expressão expr é igual ao valor da expressão expected-expr

Captura de tela de 2014-09-09 16:55:16

Template

  • Esqueleto do código baseado nos tipos de dados (assinatura)
  • Permite reuso de código
  • Consulte: Templates diversos
 

Cabeçalho (stub) x Template

  • O cabeçalho é a versão da função que falha
  • O template não faz nada: é apenas um modelo

Captura de tela de 2014-09-09 16:58:26

  • A ideia é você ter um arquivo com templates comuns e apenas copiá-los para começar a programar
  • Você vai definindo seus próprios templates e pode reusá-los mais tarde

Corpo do código (lógica)

  • Até agora definimos:
    • Tipos de dados consumidos e produzidos (assinatura)
    • Exemplos / testes unitários
    • Um protótipo bobo (cabeçalho) que falha nos testes
  • Agora temos que escrever a lógica de uma função que passa nos testes
  • Utilizamos um template para termos ideia do corpo da função

Captura de tela de 2014-09-09 17:01:10

 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s