Programação OOP vs procedimento - página 9

 
Реter Konow:
Entendo porque não o entendo, não é meu código, além de ser apenas uma parte dele. Mas você também não parece entender isso - ou estou errado?

Eu não uso apontadores...

Antes eu trabalhava da mesma forma que você, apenas com funções, mas com o tempo elas tinham que ser armazenadas de alguma forma, depois eu tinha que procurá-las, cada função fazia suas próprias ações extras.

Agora eu reconstruí tudo em classes e quando ligo para a classe Order recebo tudo o que preciso e uma lista de funções e métodos disponíveis...

 
Реter Konow:
É por isso que eu gosto de fazer grandes blocos genéricos de código.

Não posso nem acreditar que o autor de uma boa GUI sem o OOP

Salvando linhas de código?!

 
СанСаныч Фоменко:

Não, seu exemplo é muito bom.

Não se trata de programação processual.

Há um critério muito mais importante de qualidade do programa: a clareza do código.

A solução que você deu é horrível: não está nada claro O QUE função está sendo chamada de forma significativa. Eu escreveria uma troca normal e um comentário contra cada chamada. Este é o código certo.

Concluo a partir de seu exemplo que o OOP é uma coisa prejudicial.


E por que trocar por 100 variantes se você sabe com antecedência que apenas 1 será usada?

Para que serve um carretel de 100 variantes de interruptor em comparação com três linhas de código?

Não é correto tornar complexo, grande e lento o que pode ser feito racionalmente, de forma otimizada (mesmo perfeitamente).

O OOP é prejudicial somente se você usá-lo de forma incorreta.

Por favor, responda a este comentário.

 
Реter Konow:
É por isso que eu gosto de fazer grandes blocos universais de código.

O que os torna universais?

 
Dmitry Fedoseev:

Por que você precisa de um interruptor de 100 variáveis quando você sabe com antecedência que apenas 1 será usado?

Qual é a clareza de um interruptor de 100 variáveis em comparação com três linhas de código?

Fazer coisas complexas, grandes e lentas que podem ser feitas racionalmente, de forma ótima (mesmo perfeitamente) não é a abordagem correta.

Por favor, responda a este comentário.


Não é um spoiler - é uma documentação da funcionalidade do programa combinada com o texto do programa. Isto é o mais importante, não o que funcionará sozinho

 
Vladimir Pastushak:

Eu não uso apontadores...

Antes eu trabalhava da mesma forma que você, apenas com funções, mas com o tempo elas tinham que ser armazenadas de alguma forma, depois eu tinha que procurá-las, cada função fazia suas próprias ações extras.

Agora eu reconstruí tudo em classes e quando ligo para a classe Order recebo tudo o que preciso e uma lista de funções e métodos disponíveis...

Se for mais conveniente para você, eu não tenho nada contra isso. A partir de minha experiência bastante rica em programação, posso dizer que qualquer tarefa pode ser resolvida sem OOP com a mesma eficácia, se você aplicar a universalização e a compressão a suas soluções. Esta é uma experiência confirmada pela grande prática. Talvez uma ou outra abordagem esteja relacionada às peculiaridades individuais de nosso pensamento. Este é o ponto principal que eu gostaria de transmitir.
 
СанСаныч Фоменко:

Isto não é um spoiler - é uma documentação da funcionalidade do programa combinada com o texto do programa. Isto é o mais importante, não o que funcionará sozinho


Tanto a inclinação como o lastro. As moscas devem ser separadas, as costeletas separadas. A documentação é importante, mas não deve interferir com o funcionamento do programa.

 
Dmitry Fedoseev:

O que os torna universais?

Por exemplo, você precisa de um bloco que posicione objetos gráficos uns em relação aos outros, criando controles. Ao mesmo tempo, o mesmo bloco controla o fenômeno dos objetos, ou seja, ele esconde alguns objetos e revela outros. Ele também calcula as dimensões da barra de rolagem e as dimensões gerais da janela. Ele também calcula o movimento deslizante na barra de rolagem. Este é o bloco universal de relações entre objetos.


Ou um bloco que controla o tamanho da janela quando o puxador da janela é agarrado. Ou um bloco que controla os estados de controle. Ou o bloco que calcula em que elemento está o cursor e simultaneamente traz muitos parâmetros globais em foco...

 
Реter Konow:
Por exemplo, você precisa de um bloco que posicione objetos gráficos uns em relação aos outros, criando controles. Ao mesmo tempo, o mesmo bloco controla o fenômeno dos objetos, ou seja, ele esconde alguns objetos e revela outros. Ele também calcula as dimensões da barra de rolagem e as dimensões gerais da janela. Ele também calcula o movimento deslizante na barra de rolagem. Este é o bloco de relação objeto universal.

Mas isto é implementado através de "se" e "switch", não é?

 
Dmitry Fedoseev:

Mas isto é implementado através de "se" e "switch", não é?

Sim, estes blocos têm ambos. Mas confie em mim - eles são comprimidos ao máximo e versáteis, porque resolvem uma ampla gama de problemas.