DEV Community

Felipe
Felipe

Posted on

Leitura comentada - Arquitetura Limpa - Capítulo 3, 4, 5 e 6 - Panorama dos Paradigmas

Descrição

Neste capítulo, o Bob Martin busca dar uma visão geral sobre os paradigmas de programação.

Programação Estruturada

Se refere ao uso de if/then/else e do/while/until em vez do uso de declarações goto. A programação estruturada impõe disciplina sobre a transferência direta do controle. A programação estruturada nos força a decompor um programa em um conjunto de pequenas funções comprováveis. Temos que testar essas pequenas funções para comprovar que atendem aos nossos propósitos. A programação estruturada é o motivo arquitetural de considerarmos decomposição funcional como uma boa prática.

Programação Orientada a Objetos (P.O.O)

Descobriram que a memória heap poderia armazenar um valor muito depois do retorno de uma função. Nisso, entenderam que era possível fazer uma função que instancia uma classe, variáveis locais se transformaram em variáveis de instância, e funções aninhadas se tornaram métodos. A consequência disso foi a descoberta do polimorfismo através do uso disciplinado de ponteiros de função. De forma geral, a P.O.O pode ser resumida em: a programação orientada a objetos impõe disciplina sobre a transferência indireta do controle. Uma interface pode servir para ser executada de forma que independa da implementação.

A programação orientada a objetos se sustenta a algumas coisas que existem, como encapsulamento, herança e polimorfismo. Contudo, Bob defende que essas coisas não existem por causa da P.O.O.

Inversão de dependência também é citada como sendo efeito do polimorfismo, de forma a ressaltar a dependência de interfaces ao invés de implementações - o fluxo de controle é delegado para a implementação, enquanto a única dependência é a interface. Para Martin, OO se trata da possibilidade de ter controle absoluto através do polimorfismo, sobre cada dependência do código de um sistema.

Programação Funcional

A programação funcional foi pensada partindo do principio de que valores dos símbolos não mudam, isso significa que uma linguagem funcional não tem nenhuma declaração de atribuição. A programação funcional impõe disciplina sobre a atribuição.

O Tio Bob diz que cada um dos paradigmas removem capacidades de um programador, considerando que cada um deles impõe algum tipo de disciplina, dizendo o que não fazer. Removem declarações goto, ponteiros de função e atribuições.


Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay