Criando um projeto Java sem usar nenhum objeto e apenas chamando métodos estáticos na entrada?

5

Estou criando um programa que pega um documento, o extrai e o move para um banco de dados. Eu já fiz a maior parte disso agora e percebi que não fiz nenhum exemplo de aulas que fiz (fiz instâncias de outras coisas, como leitores e matrizes em buffer etc.).

Isso é ruim? Eu pareço ter apenas classes que são uma coleção de métodos relacionados que são chamados estaticamente para manipular meus dados (que são armazenados como uma string) até que sejam adicionados a um banco de dados. Como um programador experiente faria isso se minha técnica fosse considerada ingênua ou ruim?

    
por Dan Savage 21.07.2015 / 15:16
fonte

3 respostas

4

Para este problema em particular, não é terrível. O que você está fazendo é basicamente roteirizar um processo de importação, que é um problema imperativo bastante direto. Java talvez não seja a melhor ferramenta para esse trabalho, mas tudo bem.

Um programador experiente pode criar uma estrutura de dados intermediária para representar os dados que entram no banco de dados para ajudar, caso isso venha de uma fonte diferente do arquivo. Eles podem abstrair o arquivo ou banco de dados para que você possa ter diferentes destinos de importação / saída. Mas isso também pode ser super engenharia, dependendo do seu ambiente e necessidades.

    
por 21.07.2015 / 15:23
fonte
3

O ponto de orientação a objetos não é contar as classes definidas pelo usuário e julgar por meio de "more == better".

A instanciação de um objeto é útil se você realmente tiver várias coisas em seu campo de problema que tenham comportamento idêntico, mas uma identidade distinta. Você viu como isso funciona com fluxos: um lê de uma fonte, o próximo de outro; ler e escrever streams são diferentes, mas intimamente relacionados, então faz sentido que ambos herdem da mesma classe, etc. Todas essas são boas razões para usar expressões idiomáticas OOP; é melhor escrever a lógica para fazer algo uma vez e reutilizá-la, e se a lógica estiver vinculada a dados específicos da instância (por exemplo, o nome do arquivo de origem), a maneira lógica de agrupá-los é criar uma classe com os dados e os métodos que funcionam nela.

No entanto , se o problema for tão pequeno que você não repita nada, ou seja, se realmente ler algumas coisas de um lugar, realizar uma transformação e depois escrevê-las em outro lugar, pouco uso na definição de objetos e classes para fazer isso quando é realmente apenas uma lista de etapas a serem executadas. (Separar as fases em métodos menores, mesmo que cada uma seja chamada apenas uma vez, ainda é uma boa ideia, mas isso não está estritamente relacionado à OOP - é uma boa ideia mesmo em linguagens que não são objeto.)

Resumidamente, não se critique por não ter criado sua própria turma. Uma vez que você encontrou a nossa primeira classe de problemas onde faz fazer sentido para definir uma classe com múltiplas instâncias, torna-se mais fácil julgar quando isso faz sentido e quando seria apenas uma fachada para um fundamentalmente não Solução de problemas dinâmicos.

    
por 21.07.2015 / 15:23
fonte
0

Você não pode criar um programa em Java sem objetos. Tudo o que você instancia é um objeto. Os métodos estáticos que você chama são chamados em instâncias do objeto Class de sua classe.

Mas sim, geralmente é uma má ideia usar uma única classe grande com apenas métodos estáticos. Torna-se terrivelmente difícil de manejar muito rapidamente.
Em vez de evitar a questão da orientação a objetos de aprendizagem, tornando as coisas piores para você no futuro, à medida que seus programas se tornam maiores, faça agora o esforço de envolvê-la em sua mente agora que suas criações ainda são pequenas e fáceis de imaginar. br> Obtenha alguns livros decentes, consiga alguém para lhe dar instruções de preferência, não pense que você pode sempre evitar o problema ou resolvê-lo apenas fazendo perguntas em algum fórum ou assistindo vídeos do youtube.

    
por 21.07.2015 / 15:46
fonte