1

所以我有三种可能性,我提供真实的代码,因为枯燥的例子会导致对我的问题的误解

1 大软管方法 - 一条龙

return ItemDtoMapper.generateItemDtoFromItem(itemDao.saveItemAndReturn(ItemDtoMapper.generateItemFromItemDto(itemDto, UserDtoMapper.generateUserFromDto(userService.findByUserName(UserNameExtractor.getLoggedUser())))));

2 软管格式化 - 用括号打破

 return ItemDtoMapper.generateItemDtoFromItem(
     itemDao.saveItemAndReturn(
          ItemDtoMapper.generateItemFromItemDto(itemDto, UserDtoMapper.generateUserFromDto(
              userService.findByUserName(
                 UserNameExtractor.getLoggedUser())))));

3. 疯狂的对象创建 - 拆分显式对象的调用

UserDto userDto = userService.findByUserName(UserNameExtractor.getLoggedUser());
User user = UserDtoMapper.generateUserFromDto(userDto);
Item itemForSave = ItemDtoMapper.generateItemFromItemDto(itemDto, user);
Item itemForDao = itemDao.saveItemAndReturn(itemForSave);
return ItemDtoMapper.generateItemDtoFromItem(itemForDao);

我知道我的软件架构并不完美,但这个问题只是为了在这种情况下获得有关专业格式的最佳答案。

4

4 回答 4

1

tl; 博士赞成简洁性而不是可读性。

在您是唯一的开发人员并且您将来不必维护的项目中编写单行代码可能很酷,但是由于您要求“专业”...

正如你所说,“疯狂的对象创建”是要走的路。为什么?

  1. 您可以命名计算的所有后续部分,因此代码更容易阅读

  2. 代码应该在一些小范围内(例如专用函数),因此一旦范围结束,那些额外的变量就会消失;

  3. 无论如何,这些对象都是创建的,只是没有引用它们的变量,因此实际上不存在性能影响。

此外,您不应根据刚刚编写的代码选择自己的格式。在整个公司中使用一些标准格式化程序,让您的 IDE 始终以连贯的方式自动格式化您的代码。

于 2013-10-26T08:29:31.517 回答
1

我投票给第二个。为了提高可读性,我将添加静态导入(Alt+Enter在 Intellij Idea 中的方法上)并为重复使用的方法添加别名,ItemDtoMapper.generateItemDtoFromItem例如ItemDtoMapper.newItemDto. 符号越少越好。

static import ItemDtoMapper.generateItemDtoFromItem;
static import UserNameExtractor.getLoggedUser;

...

return newItemDto(
        itemDao.saveItemAndReturn(
            newItemDto(
               itemDto, 
               newUser(userService.findByUserName(getLoggedUser())
            ))));

或者可能提取嵌套调用使其更具可读性:

ItemDao daoToSave = newItemDto(
    newItemDto,
    newUser(userService.findByUserName(getLoggedUser())
));

return newItemDto(itemDao.saveItemAndReturn(daoToSave));
于 2013-10-26T08:29:44.843 回答
1

我可以想到一个客观的答案:

  • 如果你能想到好的变量名,那就选择第二个,因为它更清晰

  • 如果您想不出好的变量名,请选择第一个,因为它记录了调用彼此之间无序的事实。
    (后者表明它们必须以某种顺序发生,这可能会使读者困惑,想知道为什么会这样。)

于 2013-10-26T09:37:33.137 回答
0

我们使用第二个。

1.优点:
  - 没有额外的对象创建,
  - 格式良好的易于阅读。
2. 对比:
  - 如果编辑,需要注意点和括号
于 2013-10-26T07:41:09.647 回答