1

だから私には3つの可能性があり、ドライな例は私の問題の誤解につながる可能性があるため、実際のコードを提示します

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;dr簡潔さよりも読みやすさを優先します。

あなたが唯一の開発者であり、将来維持する必要がないプロジェクトでは、ワンライナーを書くことはクールかもしれませんが、あなたは「プロ」を求めているので...

あなたがそれを呼ぶように、「非常識なオブジェクトの作成」が進むべき道です。なんで?

  1. 計算の後続のすべての部分に名前を付けることができるため、コードは非常に読みやすくなります

  2. コードはいくつかの小さなスコープ (専用関数など) にある必要があるため、スコープが終了するとすぐにこれらの追加変数はなくなります。

  3. これらのオブジェクトは、それらを参照する変数なしで作成されるため、パフォーマンスへの影響は実質的に存在しません。

また、記述したばかりのコードに応じて独自のフォーマットを選択しないでください。会社全体で標準的なフォーマッタを使用し、IDE が一貫した方法でコードを常に自動的にフォーマットするようにします。

于 2013-10-26T08:29:31.517 に答える
1

私は二番目に投票します。読みやすさを向上させるために、( Alt+EnterIntellij 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

私は客観的な答えを考えることができます:

  • 適切な変数名を思いつくことができる場合は、より明確な 2 番目の名前を使用してください。

  • 適切な変数名が思い浮かばない場合は、最初の名前を使用してください。これは、呼び出しが相互に順不同であるという事実を示しているためです。
    (後者は、それらが特定の順序で発生する必要があることを示唆しており、読者を混乱させて、なぜそうなのか疑問に思うかもしれません.)

于 2013-10-26T09:37:33.137 に答える
0

2番目のものを使用します。

1.長所:
  - 追加のオブジェクトは作成されません。
  -整形式で読みやすい。
2. 短所:
  - 編集する場合は、ドットとブラケットに注意する必要があります
于 2013-10-26T07:41:09.647 に答える