Czysty kod. Jakościowe oprogramowanie. Dobre praktyki. Święte Graale pracy programisty, o których każdy z nas wie, a mimo to wciąż zachowujemy się tak, jakby ich nie było. Bo przecież ten kod to tylko na chwilę. A tego to w ogóle nie będziemy używać. A tę klasę się zrefaktoruje później. Wszyscy od czasu do czasu zaciągamy dług u samych z siebie z przyszłości - dług, którego potem (nie bez powodu) bardzo nie chcemy spłacać.
Zagłębmy się więc w ten fascynujący świat słabego oprogramowania. Przejdźmy przez las nieużytych wzorców projektowych, przebrnijmy przez bagna zagnieżdżonych pętli. Wejdźmy na kolejny ośmiotysięcznik, a może z jego szczytu uda nam się dojrzeć zatokę pięknego kodu - w której, miejmy nadzieję, tym razem pozostaniemy na dłużej.
5. czyli jak wiedźmin i angielski teolog
mogą pomóc Ci pisać lepszy kod
„KTO TO PISAŁ?! A, TO JA…”
6. „KTO TO PISAŁ?! A, TO JA…”
czyli jak wiedźmin i angielski teolog
mogą pomóc Ci pisać lepszy kod
albo przynajmniej zrozumieć, czemu nie
jest tak dobry, jak byś chciał(a)
40. final class OrderTaxesProcessor implements OrderProcessorInterface
{
public function __construct(
private ZoneProviderInterface $defaultTaxZoneProvider,
private ZoneMatcherInterface $zoneMatcher,
private PrioritizedServiceRegistryInterface $strategyRegistry,
private ?TaxationAddressResolverInterface $taxationAddressResolver = null,
) {
}
public function process(BaseOrderInterface $order): void
{
if (OrderInterface::STATE_CART !== $order->getState()) {
return;
}
$this->clearTaxes($order);
if ($order->isEmpty()) {
return;
}
$zone = $this->getTaxZone($order);
if (null === $zone) {
return;
}
/** @var TaxCalculationStrategyInterface $strategy */
foreach ($this->strategyRegistry->all() as $strategy) {
if ($strategy->supports($order, $zone)) {
$strategy->applyTaxes($order, $zone);
41. public function process(BaseOrderInterface $order): void
{
if (OrderInterface::STATE_CART !== $order->getState()) {
return;
}
$this->clearTaxes($order);
if ($order->isEmpty()) {
return;
}
😡
42. public function process(BaseOrderInterface $order): void
{
if ($order->canBeProcessed()) {
return;
}
$this->clearTaxes($order);
if ($order->isEmpty()) {
return;
}
if ($order->canBeProcessed()) {
return;
}