Uma boa prática é sempre analisar projetos open source e comparar com a forma que trabalhamos, com tais comparações conseguimos absorver conhecimento e experiência que pode ser útil nos nosso projetos, recentemente Anderson Fraga, no fórum Tectura, iniciou uma discussão onde ele faz um questionamento familiar para muitos desenvolvedores, ele comparou a declaração de métodos e classes do projeto Restfulie e viu que no projeto foi usado nomes curtos e expressivos.
Diante disso, tenho uma curiosidade: o que vocês estabelecem como padrão para usarem nos models? Nomes curtos (e.g. class User, método buscar) ou nomes mais complexos e descritivos, semelhantes aos recomendados para TDD (e.g. class User, método buscarPeloId). Qual idéia/metodologia vocês usam?
As vezes a expressividade prejudica a legibilidade, como no caso:
@TestverificaSePodeHabilitarNovoRegistroPassandoParametroInvalido(){}
acho q tudo deve ser um balanceamento entre expressividade e legibilidade
it "deveria enviar um email caso ocorra um erro" doend
public class GerenciamentoClientesManagedBeanTest {@Test public void filtrandoClientes(){dadoQueEstouAcessandoComoGerenteDaLoja();eEstouGerenciandoMeusClientes();ePossuoClientesCadastrados();quandoInformarCriteriosDeBusca();eSolicitarPesquisaPorClientes();oSistemaDeveriaApresentarAListaDeClientes();masSeEuNaoTiverClientesParaOsCriteriosInformados();eSolicitarPesquisaPorClientes();oSistemaDeveriaExibirMensagem("Não a Clientes para os critérios informados");masSeAlgumCampoDoCriterioDeBuscaFoiInformadoIncorretamente();eSolicitarPesquisaPorClientes();oSistemaDeveriaEmitirMensagem("Informe Critérios de busca corretamente");masSeEuEstiverComAlgumErroNoSistemaDeBuscasPorClientes();eSolicitarPesquisaPorClientes();oSistemaDeveriaExibirMensagem("Erro no sistema, não foi possível efetuar busca");oSistemaDeveriaLogarOErroNoLog();}}
@Testpublic void addACardInAnIteration() {given.thereIsAnUserNamed("sergio").and().thereIsAProjectNamed("IEs4Linux").ownedBy("sergio").withACardNamed("support IE8").planningCard().whichDescriptionIs("IE8 must be supported").and().withAnIterationWhichGoalIs("new release").and().iAmLoggedInAs("sergio");when.iOpenProjectPageOf("IEs4Linux").and().iOpenThePageOfIterationWithGoal("new release").and().iAddTheCard("support IE8").inThisIteration();then.theCard("support IE8").appearsOnList("iteration_cards");}
Como a sugestão que o Lucas deu, componha um comportamento longo por diversos comportamentos menores.Existem diversos padrões para fazer isso como neste post do blog da Caelum.