최근 수정 시각 : 2025-02-28 21:58:06

deprecated

deprecate에서 넘어옴

프로그래밍 언어 문법
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: 0 -10px -5px; word-break: keep-all"
프로그래밍 언어 문법
C(포인터 · 구조체 · size_t) · C++(클래스 · 이름공간 · 상수 표현식 · 특성) · C# · Java · Python(함수 · 모듈) · Kotlin · MATLAB · SQL · PHP · JavaScript(표준 내장 객체) · Haskell(모나드)
마크업 언어 문법
HTML · CSS
개념과 용어
함수(인라인 함수 · 고차 함수 · 콜백 함수 · 람다식) · 리터럴 · 문자열 · 상속 · 예외 · 조건문 · 반복문 · 참조에 의한 호출 · eval · 네임스페이스 · 호이스팅
기타
#! · == · === · deprecated · NaN · null · undefined · 배커스-나우르 표기법
}}}}}}
프로그래밍 언어 목록 · 분류 · 문법 · 예제

1. 개요2. 원인3. 언어별 상세4. 유명한 예시5. 관련 문서

1. 개요

deprecated /ˈdɛp.ɹɪ.keɪt.ɪd/

특정 용어, 기능, 디자인 또는 관습의 사용을 비권장 내지 규탄하는 행위[1]를 뜻하는 영어 단어 'deprecation'의 분사형.

주로 프로그래밍 분야에서, 더 이상 사용이 권장되지 않는 특정한 API나 기능에 대해 deprecated되었다고 한다. deprecated된 API/기능은 이후 후속 버전에서 지원이 삭제[2]될 수 있다.

번역할 수 없는 표현이기 때문에 실무에서는 그냥 deprecated라고 영어로 쓰며 영어에 익숙하지 않거나 개발 자체가 처음인 초보자를 대상으로 설명할 때에는 경우에 따라 '비권장됨'[3], '지원 종료됨' 등으로 번역한다.

2. 원인

주로 버그가 있거나, 보안 취약점이 발견되었거나, 최신 버전에서 설계의 변화가 생겼거나, 해당 API가 이미 deprecated된 다른 API와 연관되어 있는 경우에 deprecated로 처리한다. deprecated된 API나 기능의 경우 새로운 코드를 작성할 때 사용하지 말고, 만약 기존 코드에서 사용된 경우 새로운 대체 API나 기능을 사용해 고칠 것을 권고한다.

왜 바로 해당 API를 제거하지 않는지 의문이 들 수도 있는데, 해당 API가 조금이라도 안정 버전에 공개되었을 경우, 해당 API를 사용하는 다른 응용 프로그램의 호환성을 깨트리지 않기 위한 임시방편적 조치이다. 즉, 해당 API를 당장 지우지는 않겠지만, 미래에 반드시 사라질 예정이니 최신 버전을 사용하도록 권고하는 것.

3. 언어별 상세

3.1. C++

#!syntax cpp
// 변수 deprecate하기
[[deprecated]]
int deprecated_variable;

// 함수 deprecate하기
[[deprecated]]
void deprecated_function([[deprecated]] int deprecated_parameter) {} // 함수 파라미터 deprecate하기

// 타입 정의 deprecate하기
[[deprecated]]
typedef int deprecated_typedef;

// 클래스, 구조체, enum 등 deprecate하기
class [[deprecated]] deprecated_class {
	public:
		// 멤버 및 메서드 deprecate하기
		[[deprecated]] int deprecated_member;
};

// deprecate 사유 추가하기
[[deprecated("본 함수는 다음과 같은 이유로 사용이 권장되지 않습니다.")]]
void deprecated_function2() {}
// warning: 'deprecated_function2' is deprecated: 본 함수는 다음과 같은 이유로 사용이 권장되지 않습니다.

C++14 표준부터 attribute를 통해 deprecate하는 기능이 추가되었다. #

4. 유명한 예시

  • PHP에서 5.3에 deprecated를 도입했는데, 이 때문에 PHP 5.3 이상에서 제로보드를 설치 시 설치 화면에 deprecated 범벅이 되는 사태가 발생했었다. 제로보드가 PHP 4.x 기준 문법을 사용했기 때문.
    • PHP 5.3을 사용하는 경우 php.ini 파일에서 error_reporting = E_ALL ^ E_DEPRECATED로 설정하면 deprecation 경고의 출력을 막아 정상적으로 ZB4를 사용할 수 있다. 하지만 PHP 5.4부터는 기존 버전에서 deprecated되었던 session_register() 등의 지원이 완전히 삭제되었기 때문에 ZB4를 이용할 수 없다.

5. 관련 문서


[1] discouragement of use of something human-made, such as a term, feature, design, or practice[2] retire, phase out, EOL(End of Life) 등으로 표현한다[3] 이 표현의 경우 현재 완료형이 없는 한국어에서 전달하기 몹시 까다롭기 때문에 주로 문장형으로 풀어서 쓴다. 번역체에 가까운 'A 함수는 비권장되었다'라고 쓰는 대신 'A 함수는 x.y 버전부터 사용이 권장되지 않는다' 처럼 풀어서 쓰는 식.