作为一个应用示例，感觉这里是个坏味道，万一别人看了学着做这种模块间穿插来去的相互调用，可能会造成业务系统维护性降低。这里有没有更好的办法去实现，比如单独有个`book/effect`的模块弄出来？