0

バッキング Bean を呼び出す複合コンポーネントがあります。ここで、いくつかの画像のパラメーターを渡します。

<h:outputText value="#{MyBBean.formRequest(
   cc.attrs.type, 
   cc.attrs.orientation, 
   cc.attrs.title, 
   cc.attrs.width, 
   cc.attrs.height, 
   cc.attrs.xlabel, 
   cc.attrs.ylabel, 
   cc.attrs.value)}" 
escape="false" />

ここに方法があります

public boolean formRequest(
      final String type,
      final String orientation,
      final String title,
      final String width,
      final String height,
      final String xlabel,
      final String ylabel) {

   // some actions here

   if (height != null) {
      appendAttribute(HEIGHT_ATTRIBUTE_NAME, height, request);
   }

   if (width != null) {
      appendAttribute(WIDTH_ATTRIBUTE_NAME, width, request);
   }

   // the like

   if (ylabel != null ) {
      appendAttribute(Y_LABEL_ATTRIBUTE_NAME, ylabel, request);
   }

   // other actions

   return request.toString();
}

そして、ここに appendAttribute メソッドがあります

private void appendAttribute(final String attributeName, 
      final String attributeValue, final StringBuilder builder) {

   builder.append(attributeName);
   builder.append(EQUALS_CHAR);
   builder.append(attributeValue);
   builder.append(AMPERSAND_CHAR);
}

これらのネストされていない if ステートメントのリファクタリングに関するアイデアはありますか? 私は匂いがするから

4

1 に答える 1

1

if ステートメントをappendAttributeメソッドに移動できます。その場合、条件は 1 か所にしかありません。

public boolean formRequest(
  final String type,
  final String orientation,
  final String title,
  final String width,
  final String height,
  final String xlabel,
  final String ylabel) {

  appendAttribute(HEIGHT_ATTRIBUTE_NAME, height, request);
  appendAttribute(WIDTH_ATTRIBUTE_NAME, width, request);
  appendAttribute(Y_LABEL_ATTRIBUTE_NAME, ylabel, request);
  return request.toString();
}

と:

private void appendAttribute(final String attributeName, 
  final String attributeValue, final StringBuilder builder) {

  if(attributeValue != null) {
      builder.append(attributeName);
      builder.append(EQUALS_CHAR);
      builder.append(attributeValue);
      builder.append(AMPERSAND_CHAR);
  }
}
于 2013-07-05T12:34:05.657 に答える