initialize (또는 init)의 반대는 무엇입니까? [닫은]


94

이 용어는 메소드 이름으로 사용됩니다. 이 메소드는 사용자 인터페이스의 일부가 숨겨 지거나 제거 될 때 호출되며 값을 기본값으로 재설정하고 더 이상 사용되지 않는 객체를 처리하는 데 사용됩니다.

가능한 이름은 해제, 제거, 폐기, 지우기 등입니다.

어느 것이 가장 적절하다고 생각하십니까?


1
파괴? (더 많은 편지가 필요합니다)
Deiwin

31
이것이 어떻게 구성 적이 지 않은지 알 수 없으며 아래 답변을 빠르게 스캔하면 많은 개발자가 반의어를 얻지 못한다는 것을 알 수 있습니다. IMO 분석법 이름은 매우 중요하며 "초기화"에는 명확한 반의어가 없지만 일반적이고 유용한 용어입니다.
earcam

2
슬프게도 질문이 종결 된 이후로 더 이상 답변을 추가 할 수 없습니다 (이어 캠이 말했듯이 : 어떻게 구성 적이 지 않습니까?). 여기에 내 답변을 추가 할 것입니다. 짧고 댓글 친화적 인 형식은 다음과 같습니다. 반의어가 필요 Initialize하지 않은 경우에만 사용하십시오 ! 하나가 다른 동사를 선택해야 할 경우 (대부분 더 설명적인 대안이 있습니다). 추가 참조를 위해 GitHub의 프로그래머위한 반의어 목록을 제공 하고 있습니다.
Max Truxa

3
나는 정확히 같은 질문을했을 때 이것에 대한 답변이 매우 유용하다는 것을 알았습니다. 닫혀서는 안됩니다.
Ian Goldby

3
동의합니다 ...이 질문을 마무리하는 것은 전혀 도움이되지 않습니다.
harald

답변:


79

나는 사용한다 :

  • 초기화 ()
  • 끝내다()

더 적절하다고 생각합니다.

  • 두 단어 모두 길기 때문에 코드에서 볼 수 없습니다 (init를 사용하지 않습니다)
  • 정확한 영어입니다 (AFAIK)
  • 내 머리 속에는 모호함을 피하는 것으로 끝납니다. 시작 (끝과 일치), 시작 (정지와 일치), 작성 (파괴와 일치), 설정 (설정되지 않은 일치),로드 (언로드와 일치) 등과 일치하지 않습니다.

어떤 사람들은 맛의 문제를 찾을 수 있습니다.


6
일에 대한 terminate(). 필자는 일반적으로 모호하지 않으며 사용 사례에 합리적으로 적용 할 수 있다고 생각합니다.
벤 Hocking

9
나는 다른 모든 제안은 정확하고 잘 알려진 반의어가있는 단어에 대한 "종료"와 완전히 동의합니다. 파괴 (생성), tearDown (설정), 닫기 (열기), 릴리스 (취득) 등. 이것을 보지 못한 개발자 수는 놀랍습니다.
earcam

방어하다. 그것이 내가 끝났을 때 내가하는 일입니다. (그러나 Terminate는 나의 두 번째 선택이 될 것입니다.)
Nicki

3
@Nicki는 각각의 객체가 파괴 될 때마다 창문을 다시 설치하는 데 비용이 많이 든다 ...
Klaim

으로 earcam는 지적 : 그것은이다 set up(일치하는 tear down)하지 setup(영어로 그런 동사가 없다).
Max Truxa

25

나는 일반적으로 객체의 기능에 따라 Finalize, Destroy 또는 Terminate를 사용합니다.

당신이 설명하는 경우, Finalize는 내 계획에 따라 갈 것입니다.


불행히도 'Finalize'는 동의어 또는 'Initialize'의 반의어 일 수 있으므로 일반적으로 좋지 않은 선택이라고 생각합니다. 그러나 '파괴'와 '종료'는 경쟁자입니다. "최종 또는 완성 된 형태로 작성"이라는 정의는 mw.com/dictionary/finalize를 참조하십시오. 코드 에서이 방법을 사용하는 것을 보았습니다. 즉, 객체를 마무리하는 것이 초기화의 마지막 단계입니다. 반대로, Java의 Object 클래스에는 finalize()더 이상 객체에 대한 참조를 표시하지 않는 메소드가 있습니다.
벤 호킹

@ BenHocking 나는 당신이 "최종 또는 완성 된 형태로 넣어"잘못된 길을 가고 있다고 생각합니다. 나에게 이것은 당신이 객체로 끝났음을 의미하며 모든 속성을 정리 / 재설정 할 때입니다. 이것이 OP가하고 싶은 말입니다. 그래서 나는 그 정의가 나의 경우를 증명한다고 생각합니다.
Brian Dishaw

또한 왜 downvote에 대한 의견이 있으십니까? (나는 그가 downvoter임을 나타내지 않았기 때문에 @BenHocking이 아니라고 가정합니다)
Brian Dishaw

a) 내가 투표하지 않은 것이 맞습니다. 귀하의 제안은 합리적이며이 토론이 유용하다고 생각합니다. b) 내가 지시 한 것과 정확히 일치하는 finalize ()를 보았습니다. 예를 들어, Delauney 삼각 측량을 계산하는 클래스에서 모든 점을 추가 한 후 finalize ()를 호출하여 결과를 사용하기 전에 추가 계산을 수행했습니다. 이 경우 객체가 더 이상 수정 용으로 열리지 않았지만 삼각 측량 결과를 얻기 위해 계속 사용할 수있었습니다.
벤 Hocking

14

나는 release물건과 다른 자원을 처리하는 방법을 좋아한다 (예 : 파괴 준비). reset값을 기본값으로 재설정하는 방법을 선택 합니다.

"기본"상태에 리소스가 필요하지 않은 경우 해당 작업의 해당 부분을 수행 reset하기 위해 호출 할 수 있습니다 release.


6

close()

아직 아무도 close ()를 제안하지 않았습니다. Java 7에는 새로운 "자원 사용"기능이 있습니다. 자동으로 정리되는 클래스는 단일 close () 메소드가있는 java.lang.AutoCloseable을 구현해야합니다. shutdown () 또는 cleanup ()도 좋을 수 있습니다.

아니 finalize()

finalize ()는 Java의 가비지 수집기에 특정한 것을 의미하며 작동 방식은 약간 이상합니다. finalize ()로 Java 가하는 일을 정확히 원하지 않는 한 finalize ()에서 멀리 떨어져 있습니다.


2
Java에서 finalize ()에 대해 올바른 지적을 했지만 OP는 질문이 Java와 관련이 있고 "메소드 이름"(예 : C ++)을 가진 다른 OO 언어가 아니라는 것을 구체적으로 언급 한 곳을 나타내지 않았습니다.
EliSko

C #에서는 Finalize클래스 인스턴스를 파괴하는 데 사용됩니다.
Olivier Jacot-Descombes

4

나는 '파괴'를 아주 좋아합니다. 비디오 게임이나 다른 것을 쓰지 않으면 명확하지 않을 수 있습니다.


4
내 마음에 "파괴"는 "만들기"와 짝을 이룹니다.
EliSko

4

액션이 선택적이거나 필요한지 (누설 리소스가 없는지), 언어가 생성자 / 소멸자를 지원하는지 여부에 달려 있습니다. 선택적 경우에는 다음을 사용합니다.

  • 명확한
  • 초기화
  • UI 컨텍스트에서 숨기기

반대 동작이 필요한 다른 경우 (생성자 / 소멸자가없는 언어 또는 소멸자가 리소스를 해제하지 않은 경우)는 다음을 사용합니다.

  • 초기화 - 피니
  • 초기화-초기화 해제
  • 창조-파괴

귀하의 경우에는 내가 선호한다고 생각합니다 hide. 원하는 경우에도 메모리 / 자원을 해제 할 수 있습니다. 중요한 것은 선택 사항입니다.


3

내 첫 번째 생각은 무너졌지만 많은 테스트 프레임 워크에서 사용됩니다. 마무리와 처리에는 비슷한 문제가 있습니다. 재설정 또는 정리 모두 좋은 선택처럼 보입니다. 다시 초기화하면 초기화 된 상태로 돌아가는 것이 분명해집니다. 다시 돌아가는 상태가 초기 상태이면 좋을 것입니다.

현재 상황에서 용어에 과부하가 걸리지 않도록하십시오.


나는 이것이 그 자체로 어떻게 문제인지 알지 못한다. 부여, Finalize그리고 Dispose.NET 코드에서 있습니다. 그 외에는 기존 이름을 재사용하는 데 문제가 없습니다.
Konrad Rudolph

1
@KonradRudolph 기존 이름을 재사용하는 것이 좋습니다. 내가 열거 한 용어 중 어느 것도 내가 설명하고있는 것을 이해하는 것과 잘 일치하지 않습니다. 그래서 당신이 생각하는 단어를 볼 수 있기 때문에 더 혼란 스러울 것입니다.
로그인

3

값을 기본값으로 재설정하고 더 이상 사용되지 않는 객체를 폐기하는 데 사용됩니다.

reset객체를 기본값으로 재설정하는 경우 좋은 용어처럼 보입니다. reinitialize이 객체의 사용이 다른 것과 비슷한 경우에도 적합 할 수 있습니다 initialize. 이 방법은 메시지를 수신하는 것이 아닌 다른 객체 를 처리하는 것처럼 들립니다.이 경우 위의 두 가지 중 하나가 좋습니다. init리시버와 반대되는 작업을 수행하고 리시버를 준비하는 dispose경우 좋은 선택입니다.


1

http://www.wordhippo.com/what-is/the-opposite-of/initialize.html

마무리하겠습니다. 그러나 나는 그것이 정확한 유스 케이스에 약간 의존적이라고 생각한다.

일반적인 용도 또는 표준화에 대한 개념을 찾고 있다면 릴리스와 같은 특별한 의미가없는 덜 의미있는 것을 선택하거나 제거 할 것입니다.

init vs (무엇이든)의 개념은 (constructor vs destructor)와 비슷하거나 java에서 마무리됩니다.

( 참고 : 언어에 객체를 구성하고 파괴하는 개념이있는 경우 init ()를 거의 사용할 필요가 없습니다.)


참고 finalize로 Java로 예약되어 있습니다.
Basil Bourque

0

메소드가 호출되는 객체의 사용이 중단되면 표준 소멸자를 사용합니다. 그러나 그것은 일반적인 것처럼 들리지 않으므로 너무 일반적인 것이 아니라 더 나은 이름은 아마도 hide()객체 자체가 숨겨져 있거나 hideUserInterfacePart()구성된 객체가 숨겨져있는 경우와 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.