개발주기의 위치에 따라 다르지만 때로는 알고리즘을 스케치 할 때 복잡한 블록을 즉시 구현하지 않고 추상화하려는 경우가 있습니다.
def full_algo():
init_stuff()
process_stuff()
...
init_stuff
작동 방식 을 알고 있지만 머리가 다소 간단하지만 실제로는 필요하지 않으므로 빈 함수로 선언하십시오. 그것은 당신의 코드가 까다로운 세부 사항을 신경 쓰지 않고 컴파일하고 실행할 수있게합니다.
출시 된 응용 프로그램의 또 다른 용도는 상속을 사용할 때입니다. 플랫폼 특정 코드의 동작을 정의하는 큰 클래스가 있다고 가정하십시오. 다음과 유사한 논리로 끝날 수 있습니다.
init_filesystem();
access_files();
release_filesystem();
이 코드는 많은 플랫폼에서 작동하지만 일부 플랫폼에서는 파일 시스템 초기화가 필요하지 않을 수 있습니다. 그런 다음 상속은 다음과 같이 보입니다 (C ++에서 = 0 인 가상은 파생 클래스가 해당 메소드를 구현해야 함을 의미합니다).
class FileSystem{
virtual void init_filesystem() = 0;
virtual void access_files() = 0;
virtual void release_filesystem() = 0;
};
그런 다음이 클래스 (인터페이스)의 특정 구현은 해당 메소드 중 일부에 대해 아무 것도 수행하지 않을 수 있습니다. 또는 기본 클래스는 가상 선언 대신 초기화 / 릴리스에 대해 빈 메소드를 선언 할 수 있습니다.
마지막으로 (그리고 부끄러운 일) 때로는 아주 오래된 응용 프로그램을 유지 관리합니다. 방법을 삭제하면 문제가 발생하기를 두려워합니다. 올바르게 상속되지 않은 복잡한 상속이 있거나 많은 함수 포인터 (콜백)가있는 경우 발생합니다. 내부 코드를 삭제하면 아무 것도 깨지 않고 호출됩니다.