반복문(Loops)

박상훈·2022년 8월 18일
0
최근 자바에서도 함수형 프로그래밍을 지원하면서 반복문보다 더 나은 대안책이 생김

반복문을 파이프라인으로 바꾸기(Replace Loop with Pipeline)

  • 컬렉션 파이프라인(자바 Stream)
  • 고전적인 반복문을 파이프라인 오퍼레이션을 사용해 표현하여 코드를 더 명확하게 함
    • 필터(filter): 전달받은 조건의 true 에 해당하는 데이터만 다음 오퍼레이션으로 전달
    • 맵(map): 전달받은 함수를 사용해 입력값을 원하는 출력값으로 변한하여 다음 오퍼레이션으로 전달

before

class Refactoring {
    private String company;
    private String twitterHandle;

    public Author(String company, String twitterHandle) {
        this.company = company;
        this.twitterHandle = twitterHandle;
    }
  
    static public List<String> TwitterHandles(List<Author> authors, String company) {
        var result = new ArrayList<String> ();
        for (Author a : authors) {
            if (a.company.equals(company)) {
                var handle = a.twitterHandle;
                if (handle != null)
                    result.add(handle);
            }
        }
        return result;
    }
}

after

class Refactoring {
    static public List<String> TwitterHandles(List<Author> authors, String company) {
        return authors.stream()
                .filter(author -> author.company.equals(company))
                .map(author -> author.twitterHandle)
                .filter(Objects::nonNull)
                .collect(Collectors.toList());
    }
}
profile
엔지니어

0개의 댓글