Olá, depois de um pouco de estudo sobre alguns padrões de projeto e também estive olhando alguns projetos por ai…
resolvi fazer uma pequena lib de logging. Gostaria da opinião de alguem com algumas sugestões,melhorias, criticas e o que for.
fiz agora de manhã sem muito planejamento esta bem “lixoso” ainda.
sou programador meia boca ainda mais estou até usando umas ideias que peguei em outros projetos como Hibernate(alguns padrões) e Log4j(a lógica e algumas caracteristicas)
tem algumas funções incompletas mais pretendo terminar com o tempo(a formatação do outuput).
ninguem deu uma olhada? É pouco código, coisa feita em uma manhã sem muito planejamento, estou trabalhando nele hoje já esta até bem melhor estou documentando algumas interfaces e depois vou fazer o um push com novidades.
Eu dei uma olhada sim… de modo geral achei o código bonitinho, o que merece melhoria são detalhes. Vou colocar alguns:
(1) Documentação! Esse é o ponto principal se quer que alguém use sua biblioteca. Pode ser simplesmente o README do github, bem explicado, dizendo as principais características da ferramenta e exemplos de uso.
(2) Testes: O diretório de testes não possui testes automatizados, apenas uma classe que é feita para teste manual/visual. Seria interessante adicionar uma boa suíte de testes unitários e automatizados em geral.
(3) Detalhes de código:
Na inicialização do ConfigurableLoggerManagerFactory, se o loadConfigFromFile() falhar a biblioteca deveria tomar alguma ação e não só imprimir o stack-trace. Por exemplo, adotar uma configuração padrão (e informar através de System.err que está fazendo isso)
Não use comparação com números mágicos. Por exemplo, ao invés de [color=red]if (this.level.getLevelNum() >= 1)[/color] use [color=blue]if (this.level.getLevelNum() >= Level.INFO.getLevelNum())[/color] ou melhor ainda deixe a lógica de comparação dentro do próprio Level e ninguém mais precisa manipular os valores (sugestão: [color=green]if (Level.INFO.canHandle(this.level))[/color])
Isso foi o que observei. Também não tive oportunidade de analisar tããão profundamente, mas já é um ponto de partida vamos ver o que mais o pessoal diz
Obrigado eu me esforço ao maximo pra conseguir um código bonito e padronizado ao maximo.
no momento estou priorizando as coisas mais importantes pra documentar isso não vem ao caso ainda, meu projeto é um simples passa tempo, quem sabe um dia faço algo mais sério, nem tem uma licença de codigo aberto ainda.
vou dar mais uma estudada, eu nunca usei Suite eu sempre faço arquivos simples como o que utilizei pra testar os metodos do Logger, vou tentar estudar mais um pouco sobre testes uns dois dias atras me mandaram estudar TDD vou ver se compro um livro.
Na inicialização do ConfigurableLoggerManagerFactory, se o loadConfigFromFile() falhar a biblioteca deveria tomar alguma ação e não só imprimir o stack-trace. Por exemplo, adotar uma configuração padrão (e informar através de System.err que está fazendo isso)
Não use comparação com números mágicos. Por exemplo, ao invés de if (this.level.getLevelNum() >= 1) use if (this.level.getLevelNum() >= Level.INFO.getLevelNum()) ou melhor ainda deixe a lógica de comparação dentro do próprio Level e ninguém mais precisa manipular os valores (sugestão: if (Level.INFO.canHandle(this.level))) [/quote]
Vou tentar comentar bastante esse arquivo(ConfigurableLoggerManagerFactory) com pequenas observações. tem que ser em inglês pq acho mais interessante de entender o codigo em inglês por causa que maioria dos projetos por padrão usarem o inglês, meu inglês é um pouco fraco ainda mais tenho que treinar de algum jeito vai servi não só pra melhorar o código como também melhorar meu inglês
nessa parte da comparação com números mágicos, acho que foi preguiça de repertir código acho que por isso que fiz isso, vou conserto isso imediatamente, eu não tinha pensado em fazer a comparação dentro do codigo do enum Level