17 Apr
Aplicações para a Internet que se comunicam umas com as outras é algo mais do que comum. Ou sua aplicação consome algo que outra produz ou ela produz algo para outra consumir.
É bem fácil testar o que sua aplicação produz. Basta subir um servidor local, fazer uma requisição para o endereço correspondente e processar o resultado. Mas, por outro lado, como testar que sua aplicação consome o que outra produz adequadamente?
É claro que não vamos querer depender da aplicação remota de verdade. Queremos deixar os testes automatizados o mais isolados possível dos recursos externos. Então vamos, provavelmente, querer que o objeto responsável por fazer as requisições para fora não as faça de verdade e que devolva dados semelhantes aos da aplicação real.
Um jeito de fazer isso seria “embrulhar” a comunicação com a Internet numa classe nossa e, nos testes, mockar essa classe e passar essa classe mockada para as classes (ou os métodos) que precisam dela. É possível fazer isso em qualquer linguagem que suporte orientação a objetos.
Em Ruby ainda temos uma outra possibilidade. Como as classes são abertas, podemos re-escrever os métodos da classe Net::HTTP, por exemplo. Assim, não precisamos criar um embrulho; podemos utilizar sempre a classe do sistema.
Pois também não precisamos fazer isso na mão. A gem FakeWeb permite mockar requisições para determinadas URIs com um código bastante sucinto. Por exemplo, se você quiser que seu programa receba “olá mundo” quando fizer uma requisição do tipo GET para a URI http://foo.com/bar, basta escrever antes do código que executa a requisição:
FakeWeb.register_uri(:get, "http://foo.com/bar", :body => "olá mundo")
Em Java também é possível fazer algo parecido com um pouco de magia negra, desde que controlemos a criação do objeto responsável pela requisição. Mas, a meu ver, a primeira abordagem resulta num código mais desacoplado. Qual a sua opinião?
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
22 Oct

Rhino
Javascript é uma linguagem bastante conhecida por seu uso freqüente em páginas da Internet. Nessas páginas, é utilizada para tornar a página mais dinâmica e usável. Apesar do uso difundido, pouco se fala nas características mais técnicas dessa linguagem, de suas vantagens e desvantagens. Menos ainda se fala que essa linguagem também existe fora dos navegadores de Internet; é uma linguagem voltada para a programação de páginas da Internet, mas serve para tudo.
(more…)
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
18 Aug
Não tenho tanta experiência com C++, mas a que tenho já é suficiente para mim.
C++ é uma linguagem derivada de C, acrescentando-se suporte a orientação a objetos. Não que não seja possível escrever programas orientados a objetos em C (o kernel do Linux faz isso em vários lugares), mas dá bastante trabalho.
A linguagem tem como único ponto positivo o suporte a orientação a objetos, definindo o que são classes e suportando herança entre elas; só.
Em compensação, tem diversos problemas: demora para compilar, seus programas são lentos (apesar de dizerem o contrário, Java é mais rápido que C++, por exemplo), suporta herança múltipla (ou seja, apóia o uso de hierarquias malfeitas), mistura paradigmas diferentes de programação (procedural e orientado a objetos), torna os programas difíceis de serem refatorados e exige que o programador se preocupe com alocação de memória, algo que a maioria das linguagens de programação orientadas a objeto não exige, graças à coleta de lixo.
Em resumo, se você quer C com orientação a objetos, prefira Java ou C#. Qualquer um dos dois é melhor do que C++ e, provavelmente, mais eficiente. Agora, se você gosta de POG (programação orientada a gambiarras), C++ é uma boa.
Tem algo a acrescentar? Concorda/discorda com o que foi dito? Sua colaboração é muito bem-vinda! Comente abaixo, comente no fórum ou envie um e-mail para contato at vidageek.net.
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.