We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
리팩터링: 람다, 메서드 참조, 스트림 등의 기능을 이용해서 더 가독성이 좋고 유연한 코드로 만드는 방법
익명 클래스를 람다 표현식으로 리팩터링
Runnable r1= new Runnable(){ public void run(){ System.out.println("Hello"); } };// 익명클래스를 사용한 코드 Runnable r2= ()-> System.out.println("Hello");//람다 표현식을 사용
람다 표현식을 메서드 참조로 리팩터링
람다 표현식 대신 메서드 참조를 이요해서 가독성을 높일 수 있음
메스드 참조의 메서드명으로 코드의 의도를 명확하게 알릴 수 있기 때문.
람다 표현식을 별도의 메서드로 추출한 다음 groupingBy에 인수로 전달 가능. 코드로 간결하고 의도가 명확해진다.
Map<CaloricLevel,List<Dish>> dishesByCaloricLevel= menu.stream().collect(groupingBy(Dish::getCaloricLevel)); public class Dish{ { public CaloricLevel getCaloricLevel(){ if(this.getCalories()<=400) return CaloricLevel.DIET; else if(this.getCaloris()<=700) return CaloricLevel.NORMAL; else return CaloricLevel.FAT; } } }
inventory.sort( (Apple a1, Apple a2)->a1.getWeight().compareTo(a2.getWeight()) ); inventroy.sort(comparing(Apple::getWeight));
명령형 데이터 처리를 스트림으로 리팩터링
List<String> dishNames=new ArrayList<>(); for(Dish dish:menu){ if(dish.getCalories()>300){ dishNames.add(dish.getName()); } }
menu.parallelStream() .filter(d->d.getCalories()>300) .map(Dish::getName) .collect(toList());
전략 패턴
Validator numericValidator= new Validator((String s)->s.matches("[a-z]+")); boolean b1= numericValidator.validate("aaaa"); Validator lowerCaseValidator= new Validator((String s)-> s.mathces("\\d+")); boolean b2=lowerCaseValidator.validate("bbbb");
템플릿 메서드
public void processCustomer(int id, Consumer<Custromer>makeCustomerHappy){ Customer c=Database.getCustomerWithId(id); makeCustomerHappy.accept(c); } new OnlineBankingLambda().processCustomer(1337,(Customer c)-> System.out.println("Hello"+c.getName()));
옵저버
f.registerObserver((String tweet)->{ if(tweet!=null&&tweet.contains("money"){ System.out.println("Breaking news in NY!"+tweet); }) })
UnaryOperator<String> headerProcessing= (String text)->"From Raoul,Mario and Alan:"+text; UnaryOperator<String> spellCheckerProcessing= (String text)->text.replaceAll("labda","lambda"); Function<String,String>pipeline= headerProcessing.andThen(spellCheckerProcessing); String result=pipeline.apply("aren 't labdas really sexy");
팩토리
Supplier<Product>loanSupplier=Loan::new; Loan loan=loanSupplier.get(); final Static Map<String,Supplier<Product>>map=new HashMap<>(); static{ map.put("loan",Loan::new); map.put("stock",Stock::new); map.put("bond",Bond::new); }
No response
The text was updated successfully, but these errors were encountered:
1winhyun
No branches or pull requests
무엇을 알게 되었나요?
리팩터링
리팩터링: 람다, 메서드 참조, 스트림 등의 기능을 이용해서 더 가독성이 좋고 유연한 코드로 만드는 방법
익명 클래스를 람다 표현식으로 리팩터링
람다 표현식을 메서드 참조로 리팩터링
람다 표현식 대신 메서드 참조를 이요해서 가독성을 높일 수 있음
메스드 참조의 메서드명으로 코드의 의도를 명확하게 알릴 수 있기 때문.
람다 표현식을 별도의 메서드로 추출한 다음 groupingBy에 인수로 전달 가능. 코드로 간결하고 의도가 명확해진다.
명령형 데이터 처리를 스트림으로 리팩터링
람다로 객체 지향 디자인 패턴 리팩터링
전략 패턴
템플릿 메서드
옵저버
의무 체인
팩토리
디버깅
스택 트레이스 확인
어려운 내용이 있었다면 이를 어떻게 해결하였나요?
어떤 자료를 참고하였나요?
No response
The text was updated successfully, but these errors were encountered: