Costumo ouvir o termo "esboço", "esboço algo", "esboço" e assim por diante.
O que significa stubbing na programação e de onde vem a palavra? Em que contextos ele pode ser usado?
Costumo ouvir o termo "esboço", "esboço algo", "esboço" e assim por diante.
O que significa stubbing na programação e de onde vem a palavra? Em que contextos ele pode ser usado?
Respostas:
Um método stub é um método que apenas retorna um resultado simples, mas válido (embora não necessariamente correto).
Eles geralmente são feitos ao criar a infraestrutura e você não deseja gastar tempo com todos os métodos necessários no momento. Em vez disso, você cria stubs para que tudo seja compilado e o preenchimento automático do IDE saiba sobre os métodos que você planeja usar.
Outro lugar em que os stubs são usados é a zombaria durante o teste. Você fornece métodos de stub em vez da dependência normal através da injeção de dependência, que retorna resultados fixos e garante que o código faça a coisa certa com eles. Isso isola o teste do código que você está tentando testar e significa que você não precisa gerar um banco de dados apenas para executar esses testes.
Talvez isso seja melhor respondido com um exemplo concreto. Vamos considerar o caso em que você está criando um aplicativo de desktop. Você decidiu ter uma função nomeada e createMenubar
, assim, seu construtor de aplicativos é limpo e arrumado.createToolbar
createMain
Seu código principal será mais ou menos assim (este exemplo está em python):
class ExampleApp():
def __init__(self):
self.createMenubar()
self.createToolbar()
self.createMain()
Até que você tenha tudo funcionando, sua função principal falhará. Como você pode testar seu aplicativo durante o desenvolvimento? Por exemplo, se você começar a trabalhar createMenubar
, a inicialização falhará após criar a barra de menus, pois você não implementou a barra de ferramentas ou a área principal da GUI.
É aí que entram os stubs. Você pode criar uma função nomeada createToolbar
e createMain
que atenda aos requisitos do construtor de aplicativos (a saber, que essas funções existem), sem ter que implementá-las. Essas funções são stubs:
def createToolbar():
pass
def createMain():
pass
Com esses stubs no lugar, você pode começar a implementar o programa principal e a barra de menus, sem ter que se preocupar com os detalhes da barra de ferramentas ou da parte principal do programa. Eventualmente, você passará para a barra de ferramentas e substituirá o stub pela função real. E, finalmente, você removerá o stub createMain
e dará uma implementação real.
Observe que os stubs não precisam necessariamente fazer nada. Esses stub podem, por exemplo, criar um widget de contêiner vazio que o construtor do aplicativo pode criar. O ponto é que você cria funções ou objetos fictícios que fazem apenas o suficiente para permitir que seu outro código seja executado enquanto você o desenvolve. Com o tempo, você substitui os stubs um por um até que seu aplicativo seja concluído.
Um "esboço" é usado na programação "de cima para baixo". É quando você está construindo seu aplicativo do geral para o específico. Ao fazer isso, você usará "stubs" como "espaços reservados" para aplicativos específicos que você não teve tempo de criar. Eles geralmente retornam itens como valores fictícios ou aleatórios para a parte mais geral do programa. Tudo bem, o stub alimenta um valor suficiente para fazer a parte mais "sênior" do programa funcionar. Até que seja hora de o stub ser substituído ou ajustado com seu verdadeiro cálculo ou valor.