zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

《解构领域驱动设计》第一次勘误

驱动领域 设计 第一次 解构 勘误
2023-06-13 09:17:38 时间
本以为经过四年的精心打磨,又经过多次审校,本书的错误数能够降到空前的最低,没想到书一经出版,就陆续收到书友发现的书中谬误。许多谬误实在低级,让我脸红。除了少数是文字错误外,有好几处都是代码中的低级错误。只怪我当初审校时,将太多精力放在文字内容上,忽略了对代码片段的认真检查。

趁着这次出版社的重印,赶紧订正了书友发现的这些错误。让我感到惭愧的是,在公众号总结这些勘误时,发现仍有极少量错误未能在这次重印时指出,只有留待再下一次的重印了。

世间事,哪能尽善尽美?然而一些低级错误实不应犯,只有借此机会向购买书籍的读者朋友表示诚挚的歉意!

以下为本次勘误列表:

第5页:文本框下第三行,“就会是的”修改为“就会使得”,如下图所示:

第36页:倒数第四行行末:“成为领域分析建模、领域设计建模和领域分析建模的驱动力”,修改为“成为领域分析建模、领域设计建模和领域实现建模的驱动力”,如下图所示:

第153页,原代码为:

@Transactional(propagation=Propagation.REQUIRED)
public void placeOrder(Order order) {
    try {
 orderService.execute(order);
        notificationService.send(notificationComposer.compose(order));
    } catch (InvalidOrderException ex | Exception ex) {
        // 日志记录为横切关注点
        logger.error(ex.getMessage());
        // ApplicationException派生自RuntimeException,事务会在抛出该异常时回滚
        throw new ApplicationException("failed to place order", ex);
    }
}

修改为:

@Transactional(propagation=Propagation.REQUIRED)
public void placeOrder(PlacingOrderRequest request) {
    try {
 Order order = request.to();
        orderService.placeOrder(order);
        notificationService.send(notificationComposer.compose(order));
    } catch (InvalidOrderException | Exception ex) {
        // 日志记录为横切关注点
        logger.error(ex.getMessage());
        // ApplicationException派生自RuntimeException,事务会在抛出该异常时回滚
        throw new ApplicationException("failed to place order", ex);
    }
}

如下图所示:

说明:本次勘误中,漏掉了catch语句中的ex变量的错误。

第195页,原代码为:

orderRepository.add(order);
shoppingCartService.removeItems(order.customerId(), Order.purchasedProducts());
inventoryClient.lock(LockingInventoryRequest.from(order));
修改为:
orderRepository.add(order);
shoppingCartService.removeItems(order.customerId(), order.purchasedProducts());
inventoryClient.lock(order);

如下图所示:

第261页,代码中的注释“//”改为“//client”,如下图所示:

第269页,原代码为:

public static createFlight(String flightId, String ioFlag, ...)

缺少了返回值,应修改为:

public static Flight createFlight(String flightId, String ioFlag, ...)

如下图所示:

第384页,第二段第二行最后几个字“将其放在应服务”修改为:“将其放在应用服务”,如下图所示:

第408页,代码段Absence类的构造函数错误地写成了Address构造函数:

public Address(String country, String province, String city, String street, String zip) {
    this.country = country;

    this.province = province;

    this.city = city;

    this.street = street;

    this.zip = zip;

}

应修改为:

public Absence(LocalDate leaveDate, LeaveReason leaveReason) {
    this.leaveDate = leaveDate;
    this.leaveReason = leaveReason;
}

如下图所示:

若读者在阅读本书时发现错误,请在评论中不吝提出,作者在这里表示诚挚感谢!