2017-03-14 61 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; 
} 

這是實現這一目標的最佳方式是什麼?在我看來,更便捷的方式來獲得另一個類,這些值將是這樣調用來實現您需要的鍵兩種不同的方法,而這些方法:

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

通過引入一個通用的私有方法,您可以在沒有重複的情況下使用第二種解決方案。

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

你給你的用戶這兩個方法,用零參數。

您將第一個方法保留爲私有方法,用於實現一次查找。

換句話說:避免了代碼重複,同時也爲您的代碼的用戶提供了最易於使用的界面。

相關問題