1. 길이 자체가 문제가 된다기보다는 한 클래스에 너무 많은 기능이 있는 경우 문제가 됩니다. 작은 단위로 모듈화 하는 것이 좋습니다.
2. 모듈 단위로 나누다보면 한 함수가 길어지는 일은 드물더군요. 제 경우는 최근 대부분 10라인 내외, 좀 길어지는경우 30-40 라인정도인 것 같습니다.
구체적인 라인 수나 최대 허용 라인 같은게 있을리 만무하겠죠. 반드시 하나로 묶여야 할 경우라면 좀 길어지더라도 별 문제될 이유가 없습니다.
2006.01.23 20:31:51 (*.251.246.11)
까까
뭐 일반적으로는 함수하나당 한화면을 넘어가지 않게 짜려고는 하지만 그게 맘같이는 아직 안돼서..
2006.01.23 20:52:49 (*.109.33.113)
kallru
저는 클래스를 몇가지 단계로 나눕니당. 핵심적인 최소 단위 클래스, 그것을 묶는 두번째 단위 정도로 기본을 만들고 이것을 사용하는 매니저 정도의 클래스를 만들죠. 단위 클래스들은 라이브러리 또는 언제 어디에다 붙여도 동작할수 있도록 하며, 매니저는 이것과 엔진을 이어주는 중간계 역활을 만들죠.
2006.01.23 23:15:19 (*.237.153.30)
1ststory
덩어리 화라고 해야 하나?
지점토 인형만들때 얼굴따로 몸따로 팔 관절따로 덩어리 덩어리로 만들잖아요?
뭔가 그런 느낌이 강하죠.
그 흐름을 제어하는 함수도 있고..
2006.01.23 23:40:55 (*.235.122.34)
Excelsis
근데 결국 제어부분은 좀 길어지더군요 =_=
길어지더라도 쓰다보면 뭐 뜯어낼만하거나, 반복되거나 하는 부분은 적당히 함수화시키거나 합니다.
2006.01.23 23:44:31 (*.235.122.34)
Excelsis
주로 제가 쓴 코드중에 가장 긴 함수는 패킷처리 부분의 스위치문이네요.
스위치 케이스문 자체가 줄 낭비가 심한편인데다, 다른 클래스로 패킷을 던져주는 두세줄짜리 내용들의 연속만으로도 한화면은 간단히 넘깁니다;;
(그렇다고 함수포인터 대입은 또 별로 하고싶지가 않더군요-_-; 써보니까 은근히 더 알아보기 힘들어요)
2006.01.24 07:08:30 (*.255.59.11)
박현만
한 함수가 30-40라인 정도면 너무 짧은거 아닌가요;; 불필요하게 모든 것을 함수화하는것은 보기에는 좋을지 모르겠지만 과도한 함수 호출, 즉 호출한 함수에서 또 함수를 호출하고 또 호출하고.. 이런 것은 퍼포먼스 가 좀 떨어질것 같은데요.. 왜냐하면 함수를 호출한다는 의미가 쭉 수행하다가 다른 곳으로 가서 점프해가서 수행하고 다시 또 점프해오고 이런 행위의 반복이니까요..
2006.01.24 09:44:26 (*.107.113.189)
안군
1, "내가 감당할 수 있는 수준"이 가장 적당한 라인 수 인것 같아요. 스크롤해서 보더라도... "어! 이게 뭐지?" 할 정도만 아니면 됨.
1-1. 최대 허용 라인 수도 같은 맥락이요... 도저히 감당이 안되기 바로 직전! (^^;) 그런데, 내공(?)이 쌓여갈수록 점점 그 라인수가 많아지더군요... (레벨업을 하면 찍을 수 있는 스탯 최대숫자가 늘어나듯이;;;)
2. 라인수에 제한을 두는것보다는, 함 함수에서 과연 "한가지 일만" 하고 있느냐에 중점을 두는거죠... 특히나 함수 제목이랑 안맞는 일을 하고 있다면 과감하게 다른 함수로 빼 버리는 센스!
2-1 뭐, 1번하고 비슷해지겠는데요... 감당이 되는 한도 내에서죠... 저도 패킷처리쪽을 짜다 보면 수백라인을 넘어가는 함수를 만들게 되곤 하는데... 뭐, #define을 이용한 매크로를 만들거나, 함수 포인터를 이용하거나... 해서 분량을 줄일 수도 있겠지만;;;
2006.01.24 09:49:54 (*.41.39.25)
Alone
리팩토링을 한번 읽어보시면 어떨런지
2006.01.24 13:00:59 (*.133.24.223)
gustwind
박현만// 성능을 위해 코드의 간결성을 희생하는건 나중에 생각할 문제입니다. 함수 호출 비용이 문제가 되는 부분이라면 inline 확장을 이용하시면 됩니다.
파레토(80/20)의 법칙을 알고 계시겠죠. 실제로 성능에 큰 영향을 주는 부분은 일부에 지나지 않습니다.
2006.01.24 18:19:16 (*.255.59.11)
박현만
gustwind// 그렇군요. 답변 감사합니다~ 관련 책도 많이 읽고 경험도 많이 쌓고 해야 겠네요.. 아직은 확실한 기준없이 짜고 있는 아마추어 단계라서;;
2. 모듈 단위로 나누다보면 한 함수가 길어지는 일은 드물더군요. 제 경우는 최근 대부분 10라인 내외, 좀 길어지는경우 30-40 라인정도인 것 같습니다.
구체적인 라인 수나 최대 허용 라인 같은게 있을리 만무하겠죠. 반드시 하나로 묶여야 할 경우라면 좀 길어지더라도 별 문제될 이유가 없습니다.