2017-03-14 19 views
2

プロパティファイル(エンドユーザーがOAuth2コンシューマキーとコンシューマシークレット値を扱う)を処理するクラスがあります。私はこのような方法で持って、このクラスで値が異なってもメソッドが異なる必要がある場合のメソッドのコード複製

// Get the consumer key or secret value 
public String getConsumerKeyOrSecret(String keyOrSecret) 
{ 
    String value = properties.getProperty(keyOrSecret); 
    if (value == null || value.isEmpty()) 
    { 
     value = null; 
    } 
    return value; 
} 

が、これはこれを実装するための最良の方法ですか?私の意見では別のクラスでこれらの値を取得するためのより便利な方法は、あなたが必要とするキー、およびこのように実装する方法のための2つの別々のメソッドを呼び出すために、次のようになります。

public String getConsumerKey() 
{ 
    String consumerKey = properties.getProperty("consumer_key"); 
    if (consumerKey == null || consumerKey.isEmpty()) 
    { 
     consumerKey = null; 
    } 
    return consumerKey;  
} 

public String getConsumerSecret() 
{ 
    String consumerSecret = properties.getProperty("consumer_secret"); 
    if (consumerSecret == null || consumerSecret.isEmpty()) 
    { 
     consumerSecret = null; 
    } 
    return consumerSecret;  
} 

をしかし、これは、コードの重複とはみなされないでしょうか?これにアプローチする最善の方法は何ですか?

+0

このタイプのチェック(つまり「== null」など)を行うプライベートメソッドを作成し、このチェックが必要な他のすべての場所からプライベートメソッドを呼び出す – ochi

答えて

1

共通のプライベートメソッドを導入することで、重複せずに2番目のソリューションを使用できます。

public String getKey(){ 
    return getPropertyValueOrNull("key"); 
} 

public String getSecret(){ 
    return getPropertyValueOrNull("secret"); 
} 

private String getPropertyValueOrNull(String property){ 
    String value = properties.getProperty(property); 
    if (value == null || value.isEmpty()){ 
     return null; 
    } 
    return value; 
} 
1

引数をゼロにする2つの方法をユーザーに提供します。

あなたは最初のメソッドを1回だけプライベートなものとして保持し、そのルックアップを一度実装するために使用します。

つまり、コードの重複を避けるだけでなく、コードのユーザーに最も使いやすいインターフェイスを与えることもできます。

関連する問題