气味识别应用_解决气味
生活随笔
收集整理的這篇文章主要介紹了
气味识别应用_解决气味
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
氣味識別應用
有時,我們在代碼庫中可能會遇到一些巨大的if語句。 這些語句必須維護并一次又一次地更改相同的代碼塊。 在if語句檢查變量是否屬于某個值范圍內的情況下,這也是常見的。
假設您有一個枚舉
public enum FoodType {FRUIT,VEGETABLES,RED_MEAT,WHITE_MEAT,FISH,DIARY,CERIAL }而且您有一個功能可以提出一些建議
public String recommend(FoodType foodType) {if(foodType==FoodType.FISH||foodType==FoodType.RED_MEAT||foodType==FoodType.WHITE_MEAT) {//execute a procedure} else if(foodType==FoodType.FRUIT||foodType==FoodType.VEGETABLES) {//execute a procedure} else {//execute a procedure}} 如您所見,現在已做出決定。 該決定與碰巧屬于特定人群的某些類型的食物有關。
魚,紅肉和白肉對那些偏愛蛋白質的用戶有益,而水果和蔬菜更適合以纖維為基礎的飲食。
在將來的情況下,可能會增加該枚舉并添加更多的食物類型。 如果代碼塊必須更改。 同樣,如果在其他文件中使用了這種復雜的if語句,則必須更改每個文件。 不僅您將擁有巨大的if塊,而且還必須在每個文件上維護一個塊,這可能容易出錯。
為了避免這種情況,您可以將if語句的內容更改為一個函數。
package com.gkatzioura;import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set;import static com.gkatzioura.FoodType.*;public class DietFilter {private static final Set FOODS_WITH_PROTEIN = Collections.unmodifiableSet(new HashSet(Arrays.asList(FISH,RED_MEAT,WHITE_MEAT)));private static final Set FOODS_WITH_FIBER = Collections.unmodifiableSet(new HashSet(Arrays.asList(FRUIT,VEGETABLES)));public static boolean proteinBased(FoodType foodType) {return FOODS_WITH_PROTEIN.contains(foodType);}public static boolean fiberBased(FoodType foodType) {return FOODS_WITH_FIBER.contains(foodType);}}因此,我們沒有在if語句中添加每種食物類型的案例,而是創建了一個函數來檢查給定的參數是否屬于特定組。
因此,您的if語句將變為此。
public String recommend(FoodType foodType) {if(DietFilter.proteinBased(foodType)) {//execute a procedure} else if(DietFilter.fiberBased(foodType)) {//execute a procedure} else {//execute a procedure}} 如果將更多食物類型添加到枚舉中,則開發人員將只需更改集合的結構并添加其他食物類型。
這將比更改代碼的多個部分容易得多,并且可讀性更高。
翻譯自: https://www.javacodegeeks.com/2018/07/fixing-if-smell.html
氣味識別應用
總結
以上是生活随笔為你收集整理的气味识别应用_解决气味的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鲜花电商花加发布全员信:进入停业整顿阶段
- 下一篇: 方程豹豹5详细配置公开:预售30万元起,