Replies: 1 comment
-
너무 깔끔하고 유익한 정보인거 같습니다~~!!! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
저희가
Doore
초기convention
과 여러가지 세팅에 대해 이야기 할 때,final
에 대해 이야기 한 적이 있었습니다.제 기억상 그 때 당시,
final
의 사용 범위에 대해 의견이 나뉘었습니다. 결론적으로 일부 경우를 제외하고final
을 써야 하는 정확한 이유를 설명하지 못했다는 이유로 자율적으로 판단하여 사용하기로 정했습니다.하지만 작성된 코드를 보니 정리되지 않은 코드라는 느낌이 강하게 들었습니다. 그리고 프로그래밍 언어론 수업에서
final
에 관한 내용을 공부하며 저희 프로젝트에서도 규칙을 정해final
을 사용하는 것이 좋을 것 같다는 생각이 들었습니다.아래 내용은 교수님께 질문하고 답변 받은 내용을 바탕으로 작성하였습니다.
JDK 8
이 들어오며, 함수형 프로그래밍이라는 새로운 패러다임이 등장합니다. 함수형 언어의 기본적인 특징은capturing
을 하는 것입니다.capturing
이 발생하면 실행 속도에 영향이 있습니다. (ex.lamda
사용 시capturing
발생) 따라서 자유 변수가 생기지 않도록 코드를 짜야하며, 가능한final
을 사용하도록 권고 되었습니다.그리고 JVM에서는
final
이 아님에도final
처럼 동작하는 경우가 있기 때문에GC
에 미치는 영향이 큽니다. 또한getter
/setter
처럼 속성 값을 마음대로 변경할 수 있는 경우가 발생하면 속도 문제로 인해 대용량 처리를 빠르게 할 수 없습니다.따라서
final
을 사용하게 되면 위에 기재된 내용을 가정하지 않아도 됩니다.다만, 객체를
stream
에 넣는 경우 side effect가 발생하는 경우가 있기 때문에 해당 경우에는final
을 신중하게 사용하여야 한다고 합니다.정리하면, 모든 코드에
final
을 붙이되,stream
을 사용하는 경우를 제외하는 것이 좋다고 생각합니다.이에 대한 다른 분들의 의견이 궁금합니다~!
참고
함수형 프로그래밍
Beta Was this translation helpful? Give feedback.
All reactions