-
@ Bolsonitro Ucrânia 🇺🇦🇻🇦
2024-10-09 16:55:00Existe uma menção ao capítulo 12 - Relating design patterns to the model e também ao capítulo 4 - Layered Architecture.
Uma parte interessante aqui no capítulo 1 foi sobre deixar regras de negócio mais explícitas, um exemplo é dado em que a regra está implícita dentro de um método da aplicação:
java public int makeBooking(Cargo cargo, Voyage voyage) { double maxBooking = voyage.capacity() * 1.1; if ((voyage.bookedCargoSize() + cargo.size()) > maxBooking) return –1; int confirmation = orderConfirmationSequence.next(); voyage.addCargo(cargo, confirmation); return confirmation; }
Então o código é refatorado para algo mais ou menos assim:
```java public int makeBooking(Cargo cargo, Voyage voyage) { if (!overbookingPolicy.isAllowed(cargo, voyage)) return –1; int confirmation = orderConfirmationSequence.next(); voyage.addCargo(cargo, confirmation); return confirmation; }
public boolean isAllowed(Cargo cargo, Voyage voyage) { return (cargo.size() + voyage.bookedCargoSize()) <= (voyage.capacity() * 1.1); } ```
A vantagem aqui é que a regra de negócio de overbooking mais explícita e acessível, o que facilita o entendimento por todas as pessoas envolvidas no projeto. Além, é claro, de tornar a regra mais clara (explícita).
Na minha opinião isso também traz outra série de vantagens, facilita a manutenção e contribui para que funções façam apenas uma coisa.
O capítulo também fala da importância de se aprofundar no entendimento do domínio (isto é, das regras de negócio da empresa) para criar modelos mais úteis e representativos.
O capítuo 1 é uma introdução, e os capítulos mais importantes são: 2, 3, 9 e 14 - Pois esse livro é muiot técnico e difícil, aprofunda muito no tema, então uma leitura mais rápida passaria por estes capítulos citados.