Di dunia java, ini disebut Runnable
. Di dunia C #, itu disebut Action
.
Tapi, ada nama yang lebih baik yang cocok dengan pandangan yang lebih luas.
Pandangan yang lebih besar tentang hal-hal datang kemudian, ketika Anda memutuskan bahwa selain antarmuka fungsional parameterless Anda juga perlu memiliki antarmuka fungsional serupa yang menerima satu, dua, atau lebih argumen, atau yang mengembalikan nilai. Ketika itu terjadi, Anda akan ingin nama-nama semua entitas itu menjadi isomorfik dan korespondensi satu sama lain.
Jadi, di Jawa, saya memiliki set sendiri antarmuka fungsional yang saya sebut Procedure
s, didefinisikan sebagai berikut:
public interface Procedure
{
void invoke();
}
public interface Procedure1<T1>
{
void invoke( T1 argument1 );
}
... (Anda mendapatkan fotonya.)
Dan saya juga memiliki seperangkat antarmuka yang sama yang disebut Function
s, didefinisikan dengan cara yang sama, dengan parameter generik pertama adalah tipe pengembalian:
public interface Function<R>
{
R invoke();
}
public interface Function1<R,T1>
{
R invoke( T1 argument1 );
}
Jadi, maksud saya di sini adalah Procedure
nama yang sangat bagus karena cocok dengan pandangan yang lebih luas. Jika nanti Anda memutuskan untuk memiliki antarmuka fungsional yang sama dengan metode yang menerima argumen atau mengembalikan nilai, Anda akan mengalami hal ini.
CATATAN: Saya pada dasarnya setuju dengan pernyataan Karl Bielefeldt bahwa "prinsip penamaan normal harus [tidak] keluar jendela" dan bahwa "Antarmuka hampir selalu diberi nama sesuai dengan apa yang mereka lakukan, bukan setelah beberapa ide sintaksis generik." Tetapi perhatikan bahwa bahkan ia mengizinkan "hampir selalu". Kadang-kadang ada kebutuhan untuk (dasarnya anonim) prosedur dan fungsi, dan itulah yang diminta OP, dan itulah yang saya jawab.
Amandemen 2017-11-10:
Anda mungkin bertanya, mengapa Function1<R,T1>
bukan Function1<T1,R>
? Itu bisa berjalan baik, tetapi saya memiliki preferensi untuk mengembalikan nilai di sebelah kiri karena saya ingin mengikuti konvensi penamaan 'convert-from' (destination-from-source) sebagai lawan dari 'convert-to' (source-to) -destinasi) konvensi. (Yang lebih merupakan kecelakaan daripada sebuah konvensi, sungguh, dalam arti bahwa kemungkinan besar, tidak ada yang pernah memikirkannya, karena jika mereka memikirkannya sama sekali mereka akan tiba di konvensi 'convert-from'. )
Saya membaca tentang ini di Joel Spolksy - Membuat Kode yang Salah Terlihat Salah , ini adalah artikel yang sangat panjang, yang saya sarankan untuk membaca secara keseluruhan, tetapi jika Anda ingin melompat langsung ke kasing yang ada, cari 'TypeFromType', tetapi untuk memberi Anda TL; DR, idenya adalah yang myint = intFromStr( mystr )
jauh lebih baik daripada myint = strToInt( mystr )
, karena dalam kasus pertama nama-nama jenisnya dekat dengan nilai yang terkait, sehingga Anda dapat dengan mudah melihat bahwa 'int' cocok dengan 'int' dan 'str' cocok dengan 'str'.
Jadi, dengan ekstensi, saya cenderung memesan hal-hal dengan cara mereka akan muncul dalam kode.