Design Architecture/Refactoring

Separate Query From Modifier

lipnus 2022. 4. 20. 12:06
반응형

매소드가 값도 반환하고 상태도 변화시킨다

->둘로 쪼갬

 

 

before

public class SeparateQueryFromModifier_before {

	static void checkSecurity(String[] people) {
		String found = foundMiscreant(people);
		someLaterCode(found);
	}
	
	static String foundMiscreant(String[] people) {
		for (int i = 0; i < people.length; i++) {
			if (people[i].equals("Don")) {
				sendAlert();
				return "Don";
			}
			if (people[i].equals("John")) {
				sendAlert();
				return "John";
			}
		}
		return "";
	}
	
	static public void sendAlert() {
		System.out.println("alert received ....!");
	}
	
	static public void someLaterCode(String found) {
		System.out.println("someLaterCode is Running - " + found);
	}
	
	public static void main(String[] args) {
		String[] people = {"kitty", "Don", "John", "Smith","David", "Olive" };
		
		checkSecurity(people);
	}

}

 

after

public class SeparateQueryFromModifier_before {

	static void checkSecurity(String[] people) {
		String found = foundMiscreant(people);

		if(!found.equals("")) {
			sendAlert();
			someLaterCode(found);

		}
	}
	
	static String foundMiscreant(String[] people) {
		for (int i = 0; i < people.length; i++) {
			if (people[i].equals("Don")) {
				return "Don";
			}
			if (people[i].equals("John")) {
				return "John";
			}
		}
		return "";
	}

	static public void sendAlert() {
		System.out.println("alert received ....!");
	}
	
	static public void someLaterCode(String found) {
		System.out.println("someLaterCode is Running - " + found);
	}
	
	public static void main(String[] args) {
		String[] people = {"kitty", "Don", "John", "Smith","David", "Olive" };
		
		checkSecurity(people);
	}

}

 

반응형