Mensagens recentes por magno machado

16 mensagens

Avatar magno machado
16 mensagens
3 horas atrás

Fórum: arquitetura – Discussão: hashbang nas URLs

Pelo que entendi, a history api apenas vai te ajudar a gerar entradas de histórico sem precisar gerar uma nova requisição ao servidor. Mas para dar alguma funcionalidade a estas entradas no histórico, vai ser necessario javascript e possivelmente ajax, exatamente como seria usando hashbang.

Você falou algumas coisas que acho que não procedem. Olha por exemplo este site, feito em GWT: http://examples.roughian.com/index.htm#Home

Ele carrega em uma única página. Conforme você navega nos menus, ele gera entradas no histórico usando hash (#) sem recarregar a página. Agora use o botão de voltar do navegador, viu que funciona normalmente? Agora salva qualquer página destas nos favoritos e tenta acessar… Acessou a página correta? Poisé…

Avatar magno machado
16 mensagens
3 horas atrás

Fórum: arquitetura – Discussão: hashbang nas URLs

“Quando o usuário clicar no link, será usado javascript para renderizar o conteudo novo dinamicamente, e HistoryAPI para mudar a URL sem recarregar a pagina.”
Sim… Ou seja, à partir daí a diferença fica por conta do visual da URL. Levando em conta que nem todos os navegadores suportam estes recursos da history api, não vejo um problema tão absurdo assim o uso do hashbang

Avatar magno machado
16 mensagens
4 horas atrás

Fórum: arquitetura – Discussão: hashbang nas URLs

Pelo que entendi a questão Hashbang x HTML 5 History API no final se resume a ter ou não dois caracteres estranhos na URL (Claro que isso tem outras implicações, mas por hora não vem ao caso), pois de qualquer forma você vai precisar de Javascript para carregar o conteúdo apropriado via AJAX de acordo com o estado definido na URL, e vai precisar de suporte no lado servidor para permitir indexação, ou falei besteira?

Digo isso em se tratando de aplicações altamente dinamicas, onde onde os estados são alternados sem usar page reloads, pois é disso que a citada proposta do Google trata

Claro que é melhor uma solução padronizada, que não implique em caracteres extras na URL. Fica melhor visualmente, mais legivel e não sofre do problema relatado no post do Adriano Almeida de se um dia você resolver abandonar o hashbang e usar uma alternativa. Mas tem que se levar em conta que nem todos os navegadores suportam estes recursos html5. Já o hashbang……………..

Avatar magno machado
16 mensagens
5 dias atrás

Fórum: arquitetura – Discussão: Nomes de classes, métodos e atributos em português

“Com o tempo, vários métodos/variáveis tinham erros de ortografia e diversos tinham traduções “forçadas” que ficariam bem melhor em português. Não é tão simples quanto parece…a maioria não esta acostumada.”
Eu tambem já tive uma experiencia assim… E foi um dos motivos para eu decidir adotar uma abordagem “mista”

Entretanto, já tive projetos totalmente em ingles, inclusive comentarios e documentação. Acho que é algo para se analisar caso a caso

Avatar magno machado
16 mensagens
8 dias atrás

Fórum: arquitetura – Discussão: Nomes de classes, métodos e atributos em português

Normalmente eu uso em português tudo que for diretamente relacionado ao domínio do sistema, e inglês no restante.

Já trabalhei em projetos usando tudo em inglês (incluindo o domínio) e achei péssimo. Alguns termos são de dificil tradução, muitos termos mal traduzidos, termos traduzidos de várias formas diferentes, etc. Em alguns casos você tem que parar o trabalho pra pesquisar qual o correspondente em inglês para uma determinada expressão, e isso não é legal.

Já para o restante dos nomes é o contrario: Em ingles me parece mais legível, mais natural.

Avatar magno machado
16 mensagens
1 mês atrás

Fórum: arquitetura – Discussão: Branches e Scrum

Uma pergunta: Você precisa MESMO de branches?

Avatar magno machado
16 mensagens
3 meses atrás

Fórum: arquitetura – Discussão: Implementação de MVP em Swing

Estou iniciando um projeto desktop em Java/Swing e estou tentando utilizar o padrão MVP para organizar as telas.

Alguem conhece algum framework pronto para MVP em Swing? Por enquanto estou implementando o meu próprio mesmo.

No caso, o presenter precisa acessar a view para atualizar o seu estado eventualmente, por isso os presenters possuem uma referencia à sua view. Para ficar tipado, utilizei generics e com isso a minha classe Presenter (da qual todos os presenters herdam) ficou assim:

1 public class Presenter<VIEW extends View> { 2 3 private final VIEW view; 4 5 public VIEW getView() { 6 return view; 7 } 8 9 public Presenter(VIEW view) { 10 this.view = view; 11 } 12 13 }

Acontece que a view tambem precisa acessar o presenter para notifica-lo de ações do usuário (exemplo: clique em um botão), então a view ficou declarada assim:

1 public interface View<PRESENTER extends Presenter<?>> { 2 void show(); 3 void setPresenter(PRESENTER presenter); 4 PRESENTER getPresenter(); 5 }

Aí já vem uma questão: Há uma dependencia cíclica entre presenter e view. Como vocês veem isso? Eu deveria evitar? Pensei em criar uma outra interface, a ser implementada no presenter, e que seria de conhecimento da view (portanto a view não iria mais conhecer o presenter). Quando necessario, a view invoca métodos nesta interface para notificar o presenter. Mas não sei se isso traria alguma vantagem, creio que só iria trazer mais complexidade.

Um outro problema: Para não ter que implementar os métodos getPresenter e setPresenter em todas as classes que implementam views, eu criei uma classe padrão para implementações de views, a qual ficou assim:

1 public abstract class BaseJFrameViewImpl<PRESENTER extends Presenter<?>> extends JFrame implements View<PRESENTER> { 2 3 private PRESENTER presenter; 4 5 public void setPresenter(PRESENTER presenter) { 6 this.presenter = presenter; 7 } 8 9 public PRESENTER getPresenter() { 10 return presenter; 11 } 12 13 }

E agora um exemplo disso sendo utilizado:

1 public interface LoginView extends View<LoginPresenter> { 2 3 } 4 5 public class LoginViewImpl extends BaseJFrameViewImpl<LoginPresenter> implements LoginView { 6 }

Como podem ver, na declaração da interface LoginView eu tive que especificar que o presenter utilizado é o LoginPresenter. E na hora de declarar a implementação dessa view, eu tive que repetir esta informação, isso ficou um tanto estranho para mim.

Alguma dica de como organizar melhor isso? Ou será que estou me preocupando demais com coisas sem importancia?

Avatar magno machado
16 mensagens
5 meses atrás

Fórum: arquitetura – Discussão: TDD em objetos que não retornam nada

O método não retorna nada, mas deve ter efeitos colaterais (ex: altera o estado do objeto de alguma forma). Você deve testar se estes efeitos estão ocorrendo

Avatar magno machado
16 mensagens
5 meses atrás

Fórum: arquitetura – Discussão: Como realizar testes automaticos neste caso

Renato, é uma opção mt interessante!

Esse teste seria efetuado em cima da dll já compilada, é isso mesmo?

Nesse caso dispensaria a necessidade de testes de unidade?

Avatar magno machado
16 mensagens
5 meses atrás

Fórum: arquitetura – Discussão: Como realizar testes automaticos neste caso

Estou utilizando C++ para desenvolver uma dll que deve se comportar da seguinte forma:
Cada função da dll, ao ser chamada, registrar internamente um log que, dentre outras informações, irá conter o instante em que a chamada foi feita (com precisão de mili segundos).

No final, há uma função da dll que quando chamada irá pegar todos os logs gerados anteriormente e vai gravar em um arquivo.

Como posso escrever um teste automatizado para isso?

Inicialmente eu pensei em gerar manualmente um arquivo com o mesmo formato que a dll deve produzir, com algumas entradas de log.

Depois eu chamo as funções da dll que produziriam os logs correspondentes e compararia o arquivo produzido pela dll com o arquivo que eu mesmo gerei manualmente. Mas como preciso logar os instantes das chamadas, isso não funcionaria.

Alguma outra ideia?

Creio que não seria muito complexo testar isso a nível de unidade.

Acham que seria necessario escrever testes tambem em cima da dll já compilada, só para garantir que todas as funções estão sendo exportadas corretamente?

Avatar magno machado
16 mensagens
6 meses atrás

Fórum: arquitetura – Discussão: Controladores em sistemas desktop

Puxa vida, então à partir de agora só vou me comunicar via texto :)

Avatar magno machado
16 mensagens
6 meses atrás

Fórum: arquitetura – Discussão: Controladores em sistemas desktop

Eu sempre tive essa dúvida, a a resposta me veio quando passei a utilizar os frameworks de MVP do Google Web Toolkit (que diga-se de passagem, tem um modelo de desenvolvimento muito parecido com desktop).

Usa-se um objeto (que lá é chamado de PlaceManager) que irá receber as requisições para abrir novos forms.
Esse PlaceManager é um singleton e os controllers o recebem via DI.
Então fica assim: CadastrousuarioView gera um evento que é tratado pelo CadastroUsuarioController, que por sua vez interage com o PlaceManager solicitando a abertura do CadastroLocalizaçãoController

Dessa forma os controllers ficam bem desacoplados e fica mais facil testar essa interação entre diferentes forms.

Avatar magno machado
16 mensagens
6 meses atrás

Fórum: arquitetura – Discussão: Injeção de Dependência em C# qual melhor opção?

No Delphi muitas vezes eu crio os mocks na unha mesmo, sem framework. Não se compara com a facilidade de usar algo como o Mockito, mas é o que posso fazer pra me virar por enquanto. E no Delphi 2009 voce já tem métodos anônimos, o que já ajuda um pouquinho

Avatar magno machado
16 mensagens
6 meses atrás

Fórum: arquitetura – Discussão: Injeção de Dependência em C# qual melhor opção?

Tambem já testei o PascalMock e tambem não gostei, a gente tem que escrever muito código. O mock do Emballo segue uma linha muito diferente.
É uma pena que o pessoal do Delphi demorou a abrir os olhos para a necessidade de implementar coisas como reflexão… Muito mais pessoas poderiam ter se beneficiado das possibilidades que são abertas com esse tipo de recurso na linguagem

Avatar magno machado
16 mensagens
6 meses atrás

Fórum: arquitetura – Discussão: Injeção de Dependência em C# qual melhor opção?

Alexandre, para Delphi você pode tentar este projeto http://code.google.com/p/emballo
Entre outras coisas, ele implementa DI e mocks (mocks ainda em desenvolvimento), mas é para Delphi 2010 ou superior

Avatar magno machado
16 mensagens
6 meses atrás

Fórum: arquitetura – Discussão: Nomes 'complexos/descritivos' no modelo?

Sou a favor de declarar nomes que explicam claramente qual o proposito daquele método ou caso de teste.

No caso de testes, não tenho ressalvas quanto ao comprimento do nome, mas em código de produção procuro evitar nomes muito longos.

Sim, um nome pouco expressivo dificulta o entendimento do código, mas nomes excessivamente longos tambem prejudicam bastante, ao menos para mim.

A clareza é sempre prioridade