더 이상 사용되지 않는 것으로 간주됩니까? [닫은]


27

방금 -std=c++0x청년들이하는 일을 모호하게 처리하고 싶었 기 때문에 (GCC 에서 플래그로 내 코드 일부를 컴파일했습니다. ) 에 대해는 auto_ptr사용되지. 물론 auto_ptrC ++ 0x에서 더 이상 사용되지 않는다는 것을 알고 있었지만 ...

지원 중단이 시간과 노력을 낭비하지 않습니까? 더 이상 사용되지 않는 이유 (예 : auto_ptr 사용) :

  • 수백만 개의 경고가 발생하면 사람들은 경고를 끄도록 유혹 할 것입니다.

  • auto_ptr 약간 naff이지만 실제로 주석에서 말하는 것을 수행합니다.

  • 실제로 더 이상 사용하지 않으려면을 추천 printf()합니다. 그러나 뒤 따르는 소리를 상상해보십시오. auto_ptr친구가 많지 않지만 적어도 내 C ++ 코드에서는 이상 printf사용되어 전혀 사용되지 않습니다.

  • 그들은 네임 스페이스 범위에서 정적되지, 지금은 undeprecated 된 것으로 보인다 - -위원회는이 권리를 얻기의 나쁜 기록이 있다면 나는 놀라지 않을 것이다 auto_ptr컴백 유사한했다

  • 마지막으로,위원회가 말한대로 컴파일러 구현자는이를 무시합니다. 고객 코드를 손상시킬 위험이 없으며, 자극적 인 경고 만하면됩니다.

그래서 내 질문-당신은 (C ++뿐만 아니라 auto_ptrs뿐만 아니라) 사용 중단을 좋은 아이디어라고 생각합니까? 그렇다면 왜?


2
@TheLQ-나는 그것을 "왜 감가 상각해야 하는가"라고 읽었지만 auto_ptr예제로 사용 했습니다.
ChrisF

4
주석에 "거의 어떤 종류의 용기에 사용하면 마음이 상할 것"이라고 말합니까? 사용 unique_ptr하고 더 행복하십시오.
Kate Gregory

13
@ Neil-귀하의 언어는 약간의 염증성이며 (반사시) 심각한 질문보다 더 많은 분노를 겪습니다. 열려있는 상태로 유지하려면 "톤 다운"할 수 있습니다.
ChrisF

4
@Neil-당신이 그것을 유머러스 한 의도로 고맙게 생각했지만, 내가 말했듯이, 당신이 생각한 것보다 더 "거의"반복되었습니다.
ChrisF

10
사용 중단을 제거 할 계획이라면 먼저 사용 중단을 권장해야합니다. 기존 언어 / API가 많으면 그렇지 않을 수 있습니다. 지원 중단을 통해 사용 중단 된 지원 중단을 제거 할 시간을 제공 할 수 있습니다.
Joachim Sauer

답변:


32

지원 중단 사유 (일반) :

  • 그것은 사람들에게 뭔가 나쁜 습관임을 분명히 나타냅니다 (그리고 대안을 제안합니다).
  • 사용 중단 기간은 컴파일러가 코드를 완전히 제거하기 전에 코드를 변경할 수있는 기회를 제공합니다.

나는 또한 마지막 요점에 동의하지 않습니다. 컴파일러는위원회를 무시하지 않으며, 그들이 사용되지 않는 것들을 제거 결국 않습니다 (예를 >?=하고 <?=- 그들은 다음 제거 *를 사용되지 않는 GCC에서).

중요한 점은 여러 가지 이유로 제거해야 할 것이라며, 더 이상 사용되지 않는 것이 유일한 방법이라고 생각합니다. 이 경우 auto_ptr에는로 대체되었으므로 제거해야합니다 unique_ptr. 전환은 충분히 쉽고 사람들은 그렇게 할 시간이 충분합니다.

(*) 그렇습니다. 나는 그것이 확장이 아니며 표준이 아니라는 것을 알고 있지만, 요점은 컴파일러 공급 업체가 코드가 의존하지 않더라도 사용 중단이 시작되면 결국 물건을 제거한다는 것입니다.


6
이 주제에 대해 미안하지만 저항 할 수는 없습니다. 그 >?=<?=운영자는 무엇입니까?
brandizzi

7
오래된 GCC에서는 a >?= b;속기 if (a > b) a = b;및을 위한 글 을 쓸 수 <?=있습니다.
Peter Alexander

2
어 ... 왜 그들이 추가했는지 알 수 있습니다. 그리고 왜 그것들을 제거했는지. 공개 된 후에 얼마나 문제가 있는지를 보여주는 "신선한"기능에 대해서는 지원 중단이 필요할 수 있습니다.
Phil

25

충분히 복잡한 API는 오랫동안 사용 된 후에도 발견되지 않는 결함이있을 수 있습니다. 우리의 옵션 :

  • 그대로 두십시오. 이는 시간이 지남에 따라 API가 계속 발전함에 따라 점점 더 많은 cruft를 수집 할 것임을 의미합니다. 새롭고 개선 된 버전이 추가 되더라도 이전 버전도 유지 관리해야합니다.
  • 경고없이 제거하십시오. 이것은 많은 코드를 손상시킬 수 있습니다.
  • 더 이상 사용하지 않고 이후 버전에서 제거하십시오. 이는 기존 코드를 수정하는 시간을 제공하는 동시에 크래프트의 양이 제한되는 것을 보장합니다.

더 이상 사용되지 않는 것이 이러한 대안 중 가장 낫습니다.


12

아냐 더 이상 사용되지 않는 것이 좋습니다. 기술이 쓸모없는 오래된 수하물에 갇히지 않도록합니다.

C ++ 분야에서 for 문 내에서 변수 선언을 올바르게 지원하지 않는 Microsoft의 "기능"을 기억합니다. 그것은 약 10 년 동안 계속되었고 많은 코드를 이식 할 수 없게 만들었습니다. 그건 "추천"된 것이 기쁘다.

더 일반적으로, 애플은 80 년대의 어리석은 오래된 API를 5-7 년 동안 "더 이상 사용하지 않는"것으로 표시 한 이후 습관을 잃었다. 나는 WWDC의 Apple 엔지니어와 고대 QuickTime C API 중 일부를 사용하지 않는 것에 대해 이야기하고 있었는데 1990 년경에 개발 된 모델에 대한 지속적인 지원이 우리가 기대할 수있는 것을 완전히 방해하고 있었기 때문에 그들이 그렇게하고 있다는 것을 듣고 기뻤습니다 최신 64 비트 멀티 코어 CPU에서 수행 할 수 있습니다.

실제로 컴파일러 작성자가 auto_ptr을 덤프하는 데 오랜 시간이 걸리며 아마도 10 ~ 2 년 동안 일부 이전 버전과 호환되는 모드를 지원할 것이지만 좋은 것은 imo입니다.


11

더 이상 사용하지 않으려는 경우 printf ()를 추천합니다.

printf유용한 기능입니다. 그것은 iostream보다 짧은 포맷을 허용합니다. 그리고 그것은 C 함수입니다. C ++가 존재하고 사용되는 이유는 C와 호환되기 때문입니다. 따라서 더 이상 사용되지 않는 printf것이 덜 유용 해 보입니다.

그렇다면 더 이상 사용되지 않는 성전을 원하십니까?

위원회는 현재 사용이 중단 될 것으로 예상되는 몇 가지 문제에 대해 알고 있습니다. 지원 중단의 의미를 참조하십시오 .


5

언어와 API는 발전해야합니다. 일부 이전 기능에 따라 많은 코드가있을 수 있지만 새롭고 더 나은 방법이있을 수 있으며 이전 기능을 지원하는 비용이 너무 많습니다.

또한 지원 중단은 향후 기능이 제거 될 것이라는 경고를 표시합니다. 이를 통해 개발자는 새로운 API를 따르는 경우 코드를 업데이트 할 수 있습니다. 이것은 대안보다 훨씬 낫습니다 : 완전히 제거하십시오. 감가 상각은 오류가 아니라 경고입니다.

그리고 이것이 당신이 업데이트하고 싶지 않은 오래된 프로그램이라면, 오래된 API (또는이 경우 컴파일러)를 사용하는 것을 막을 수있는 것은 없습니다.


1

현재, 지원 중단에는 두 가지 이상의 의미가 있습니다.

  • 향후 버전에서 제거 될 예정입니다.
  • 우리는 더 나은 대안을 만들었으며 이제는 기능이 중복 적이지만 완전히 쓸모는 없습니다. 새로 온 사람들은 언어를 배우는 동안 이것을 건너 뛰는 것이 좋습니다. 그러나 곧 제거되지는 않습니다.

정적은 후자의 범주에 속한다고 생각하지만 auto_ptr을 실제로 제거 해야하는지 또는 언어로 유지하는 것이 더 좋은지 시간 만 알 수 있습니다.


0

대안으로 이동하는 것이 1 일 (근무일 기준)에 수행 될 수있는 경우, 더 이상 사용되지 않습니다. 기존 기능을 새로운 기능으로 간단하게 검색 / 교체하거나 호환성 레이어를 쉽게 설정할 수 있습니다.

지원 중단으로 인해 소프트웨어의 많은 부분을 다시 작성해야하는 경우 유해합니다.

좋은 예는 아마도 PHP의 mysql API 일 것입니다. 기본적으로 모든 mysql_ *를 mysqli_ *로 바꾸고 링크 ID를 제공하면됩니다.

OpenGL3에서 glBegin, glEnd 및 모든 행렬 계산 항목이 사용되지 않는 나쁜 예가 있습니다. OpenGL3 이상에서 코드 작업을하려면 정점 버퍼를 사용하기 위해 전체 렌더링 코드를 다시 작성해야합니다.


-1

사람들에게 더 좋은 방법이 있다는 것을 알리는 좋은 방법이라고 생각합니다. 나는 그냥 사라지는 기능보다는 멋진 지원 중단을 선호합니다.

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