Itu tergantung pada di mana Anda berada dalam siklus pengembangan, tetapi kadang-kadang ketika membuat sketsa algoritma, Anda ingin membuat abstraksi tentang blok kompleks tanpa langsung mengimplementasikannya.
def full_algo():
init_stuff()
process_stuff()
...
Anda tahu bagaimana cara init_stuff
kerjanya, itu agak sederhana di kepala Anda tetapi Anda tidak benar-benar membutuhkannya segera, sehingga Anda mendeklarasikannya sebagai fungsi kosong. Ini akan memungkinkan kode Anda untuk dikompilasi dan dijalankan tanpa peduli tentang detail berdarah.
Penggunaan lain untuk aplikasi yang dirilis adalah ketika menggunakan warisan. Misalkan Anda memiliki kelas besar yang mendefinisikan perilaku kode spesifik platform. Anda mungkin berakhir dengan logika yang mirip dengan ini:
init_filesystem();
access_files();
release_filesystem();
Kode ini akan berfungsi pada banyak platform, tetapi beberapa platform mungkin tidak memerlukan inisialisasi sistem file. Maka warisan Anda akan terlihat seperti ini (virtual dengan = 0 di C ++ hanya berarti bahwa kelas turunan HARUS mengimplementasikan metode tersebut):
class FileSystem{
virtual void init_filesystem() = 0;
virtual void access_files() = 0;
virtual void release_filesystem() = 0;
};
Maka implementasi tertentu dari kelas ini (antarmuka) mungkin tidak melakukan apa pun untuk beberapa metode tersebut. Atau, kelas dasar dapat mendeklarasikan metode kosong untuk init / release daripada mendeklarasikannya secara virtual.
Akhirnya (dan memalukan), terkadang Anda memelihara aplikasi yang sangat lama. Anda takut bahwa menghapus metode akan merusak banyak hal. Ini terjadi ketika Anda memiliki warisan kompleks yang tidak dipahami dengan benar atau ketika Anda memiliki banyak fungsi pointer (panggilan balik). Anda cukup menghapus kode di dalamnya sehingga mereka dipanggil tetap tanpa merusak apa pun.