[요구사항 탐구] 함수(또는 메소드)의 길이가 15라인을 넘어가지 않도록 구현한다

2021. 12. 2. 20:19
반응형

이 글은 요구사항에 대해서 의문점을 가지고 질문을 던지며 의문점을 해결해나가는 글입니다.

 

이전 포스팅(https://steadyit.tistory.com/13)에 이어서 이번 포스팅에서도 1주 차 미션의 요구사항에 대해서 탐구해봤던 것을 포스팅해보려 합니다.

 

 

왜 15라인을 넘어가지 않아야 할까?


요구사항을 보자마자 15라는 특정한 숫자는 어디서 나온 것일까?라는 생각을 하였습니다. 

고민을 한 결과, 15라는 숫자는 중요한 것이 아니라 함수의 길이를 최대한 짧게!라는 메시지를 담는 게 아닐까 싶었습니다. 

 

그렇다면, 왜 함수를 짧게 해야할까?


이것에 대한 이유는 이전 포스팅에서 살펴보았던 코드의 depth를 2까지만 허용한다의 이유와 같지 않을까 싶었습니다.

함수 내부의 코드를 적게 작성하면서 함수가 어떤 역할을 하는지 쉽게 알아볼 수 있도록 하기 위해서가 아닐까 싶습니다.

 

 

또, 저의 해석이 맞는지 구글링을 해보았습니다.


아래의 글에서는 20~30줄을 권장하고 있습니다. 함수의 line을 짧게 가져가라라고 하는데 이유는 하나의 함수에서는 하나의 역할을 해야 하고 그렇게 된다면 가독성 있는 코드를 작성할 수 있다고 합니다. 

 

https://medium.com/swlh/javascript-code-styling-best-practices-maximum-function-length-callbacks-parameters-26098e465cd1

 

JavaScript Code Styling Best Practices — Maximum Function Length, Callbacks, Parameters

Reducing nesting, function lengths, and parameters are good.

medium.com

 

아래의 글은 한국에서 유명한 리팩터링의 저자인 Martin Fowler가 함수의 길이에 대해 작성한 포스트입니다.

Martin Folower 또한 최대한 작은 함수를 만들고 코드의 가독성을 높여라라고 말하고 있습니다.

https://martinfowler.com/bliki/FunctionLength.html

 

bliki: FunctionLength

People often ask low long a function should be, but the answer depends more on the distance between its intention and implementation.

martinfowler.com

제가 많고 많은 글 중에서 이 분의 글을 인용하는 이유는 유명해서가 아니라 이 분이 짧은 함수의 길이를 사용하는 것에 대해 생각할만한 포인트를 던져줬기 때문입니다. 

 

그의 글에서 아래와 같은 얘기를 하였습니다. 

Some people are concerned about short functions because they are worried about the performance cost of a function call.

 

즉, 함수의 길이를 최대한 짧게 가져가기 위해서는 기존보다 더 많은 함수를 만들어야 하고 그렇다면 함수를 호출하는 일이 더 많아질 텐데 성능에 악영향이 있을 것 아니냐라고 사람들이 걱정을 한다는 글입니다.

 

그래서, 또 찾아보았습니다.


함수 호출에 따른 성능 저하에 대해 찾아본 결과 여러 글을 찾을 수 있었습니다. 결론은, 함수를 호출하는 정도가 성능에 영향을 끼치는 경우는 상황에 따라 다르다고 합니다.

 

https://softwareengineering.stackexchange.com/questions/318055/how-much-do-function-calls-impact-performance

 

How much do function calls impact performance?

Extracting functionality into methods or functions is a must for code modularity, readability and interoperability, especially in OOP. But this means more functions calls will be made. How does

softwareengineering.stackexchange.com

https://stackoverflow.com/questions/11168939/function-calls-are-expensive-vs-keep-functions-small 

 

"Function calls are expensive" vs. "Keep functions small"

On the one hand, I read or hear that "function calls are expensive" and that they impact efficiency (for example, on Nicholas Zakas' Google tech talk). On the other hand, however, it seems accepte...

stackoverflow.com

 

 

글을 마무리하며


결론적으로, 가독성(작은 함수, 잦은 호출) vs 성능(큰 함수, 적은 호출) 이 두 가지는 서로 trade off인 관계인듯합니다. 아마 개발자의 스타일에 맞게 둘 중 하나를 고르거나 절충적인 방법을 찾아서 코드를 작성하지 않을까 생각합니다. 저는 성능을 고려하여 최적화된 코드를 짤 단계는 아니라고 생각됩니다. 그보다 다른 사람들과의 협업을 위해 최대한 가독성 있는 코드를 짜고 싶습니다. 그래서 저는 미션의 요구사항인 함수의 길이가 15가 넘지 않게 하라라는 것을 학습하고 체화하여 앞으로 더 가독성 있게 코드를 작성해보고자 합니다.

반응형

BELATED ARTICLES

more