2012-04-07 11 views
1

저는 궁금합니다 - 비교적 간단한 작업을 위해 함수 (분해)를 생성하는 것이 나쁜 프로그래밍 스타일입니까?지나치게 간단한 함수를 만드는 것이 좋지 않습니까?

예를 들어 PHP에서는 세션, 게시, 가져 오기 및 쿠키에 '$ _'와 대문자를 사용하는 것이 귀찮습니다. 그래서 나를 위해 세션 변수를 생성하는 setSesVar ('key', 'value') 함수를 만들면 나쁘지 않습니까? 그럴 가치가있는 때마다 함수를 호출하는 오버 헤드가 있습니까? 또는 그것과 관련이 없거나 자신이 선호하는 것인가?

몇 가지 다른 예 : C에서

  • 에 println 기능 ++ (그리고 자바) 자바 스크립트에서 getElementBydId의
  • 속기 형태 대신에
  • 리디렉션 (내가 jQuery를 또는 다른 라이브러리를 사용하지 않는 가정) PHP에서의 머리말 ('위치 :'. url)

약간의 주제에 관한 질문 - 저는 더 엄격한 배열을 사용하는 언어에 익숙합니다. PHP에서는 myArray [] = 'newElement'라고 말하면서 마지막 구매 요소를 추가 할 수 있습니다. myArray [sizeof (myArray)]를 사용해야하는 것처럼 느껴지지만 unessesary 코드를 추가하는 것이 좋지 않을 것이라고 생각합니다.

+4

꽤 주관적입니다. 이것은 아마도 커뮤니티 위키이어야합니다. –

답변

1

기능에 따라, 그리고 얼마나 많은 일을하는지에 따라 다릅니다. 모든 것을 가져 와서 한 줄짜리 기능을 만들면 아무런 복잡성도 없앨 수 있습니다. 사실, 당신은 두 가지 방법으로, 복잡성을 추가했습니다 : 코드를 알아 내기 위해이에 PHP에 내장 아니에요

  • 첫째, 아무것도 뭔가 새로운 사람입니다. $_SESSION['stuff'] = "some value";을 보면, PHP로 한 시간 이상을 보낸 사람처럼 그 일이 무엇인지 알고 있습니다. 반면에, 내가 setSessionVar('stuff', 'some value');을 볼 경우, 내가 가서 setSessionVar이 무엇인지 확인해야합니다. 내 말은, 그것은 무언가를 무언가를 설정하는 것 이상으로 수행해야한다는 것입니다. $_SESSION; 그렇지 않다면 은 왜 이되어야합니까?은 그게 뭐죠?

  • 두 번째로 이러한 함수가 서로를 호출하면 결국 함수 호출에 대한 맹금류가 생깁니다. 다른 2 행 함수를 호출하는 다른 2 행 함수를 호출하는 2 행 함수를 통해 추적하는 것보다 10 (또는 심지어 30) 회선 함수를 따르는 것이 더 쉽습니다. 다른 2 행 함수를 호출 할 수도 있고 그렇지 않을 수도 있습니다. - 라인 함수.코드를 통해 길을 추적하려면 파일을 통해 (또는 다른 파일들 사이의 탭으로) 유유히해야 할 것입니다.

필자 의견으로는 PHP에 내장되어 있으며 간단한 코드 한 줄로 표현할 수있는 모든 기능은 자체 기능을 가질 가치가 없습니다. 한 가지 예외를 제외하고 최소한 3 줄로 제한하는 것이 좋습니다. 예를 들어 게터 또는 세터와 같이 개체 내부에 대한 액세스가 필요한 메서드는 더 작을 수 있습니다. 그러나 대부분의 함수는 PHP가 이미 하찮게하지 않는 것을해야합니다. 그렇지 않으면 기능의 목적을 무너 뜨리고 정당한 이유없이 복잡성을 추가하게됩니다.

1

이름이 너무 자세하지 않은 경우에만 - 너무 짧으면 미래의 관리자에게 실수로 코드가 흐릿해질 수 있습니다. 다른 한편, 만약 그들이 충분히 장황하다면, 절반은 원래 코드를 사용하는 것이 더 빠를 것입니다. 나는 '여분의'타이핑을 피하기 위해 지나치게 짧은 함수 이름을 사용한다면 분해는 나쁜 생각 일뿐입니다.

0

나는 그것이 달라질 것입니다. 이 기능들을 어디에 넣으시겠습니까? 가장 중요한 것은 모든 클래스에서 이들을 복제하려고한다면 아마도 나쁜 생각 일 것입니다. 그런 다음 목적은 아마 어쨌든 패배 할 것 몇 가지 유틸 클래스에 이르렀하는 경우 :

System.out.println(" ... "); MyUtils.println(" ... ");

대 정말 많은 이해가되지 않습니다. (다른 사람들과 동일)

+0

좋은 지적. 나는 C++을 자주 사용하지 않기 때문에 실제 파일에 함수를 포함시키는 경우가 종종 있습니다 (충동 적으로하는 일을 디버깅하는 것). Javascript에 클래스 이름이 없으므로 '코어'소스 파일이 있으면'getById (id) {return document.getElementById (id); }' 또는 PHP :'function sessionCookie ($ key, $ value) {if ($ value! = null) {return $ _SESSION [$ key]; } else {$ _SESSION [ 'key'] = '값'; }}'(이것이 완벽하지 않을 수도 있음) – Raekye

+0

동료 작업자가 파일을 열고 $ value = sessionCookie 대신'$ value = $ _SESSION [ 'key']' $ key)'와 코어 파일을 찾아 sessionCookie가 무엇을하는지 알아야합니다. – user12345613

+0

함수 redirect ($ url) {header ('Location :'. $ url); }? 많은 작은 레벨이 있다고 느낄 때부터 묻기 만하면됩니다 ... 사소한 것처럼 보이면 미안 해요. 하하 – Raekye

관련 문제