Visual Basic ve Pascal’da işlem yapmak üzere bir araya getirilen kod bloklarına fonksiyon veya Procedure adı verilmektedir. Hazırlanmak istenen kod bloğu işletildiği zaman geriye değer gönderiyorsa Function anahtar kelimesinden, geriye değer göndermiyorsa Procedure(Visual Basic’te Sub) anahtar kelimesinden yararlanılıyor. Bu arada yakın bir zamanda piyasaya verilen Delphi Prism’de Function Procedure ayrımının kaldırıldığını belirtelim. C’de ise fonksiyon procedure ayrımı yoktur. Belli bir işlem yapmak için hazırlanan kod bloklarına fonksiyon adı verilmektedir. Fonksiyon geriye bilgi göndermiyorsa başına void yazılır. Buraya kadar her şey normal ve bilinmedik bir şey yok.
Sonra nesneye yönelik programcılıkta ve .NET Framework uyumlu programla dillerinde işlem yapan kod bloklarına metot denilmeye başlandı. C ve C++ geleneğine dayanan C# için bu bir anlam kargaşasına zaten neden olmazdı. Fonksiyonlara metot demek zor değildir. Ancak geçmişte Pascal veya Visual Basic ile az çok uğraşmış olanlar alışkanlıklarından dolayı geriye değer göndermeyen metotlardan bazen Procedure ve geriye değer gönderenlere fonksiyon demeleri sık rastlanan bir durumdur.
.NET uyumlu Visual Basic’te geriye doğru uyumluluğu sağlamak için geriye değer gönderen metotlar yine Function anahtar kelimesi tanımlanırken değer göndermeyenler ise Sub anahtar kelimesi ile hazırlanıyorlar. Yani garip bir durum var gibi.. Kod bloğunu Function anahtar kelimesi ile tanımlıyorsunuz sonra da bu metottur diyorsunuz. Bu nedenle kitaplarda, makalelerde ve forumlarda Sub anahtar kelimesi kullanılarak hazırlanan metotlardan Procedure(Türkçesi ile yordam) diye söz edilmesini hep normal karşılamak gerektiğini ifade ettim. Visual Basic 9.0 kitabımda ise hem Function hem Sub anahtar kelimesi ile hazırlanan kod bloklarından sürekli metot diye söz ettim. Gelelim bu metni asıl yazma nedenime: Bir süre önce bir kaynakta procedure’lerin fonksiyonlara göre daha gelişmiş bir yapıya sahip olduğu beyan edildiğini fark ettim. Sahi Procedure’ler gerçekten daha gelişmiş bir yapıya mı sahiptir? Yani C#’ta olmayan Procedure’ler olmayan Fonksiyonlardan daha mı gelişmiş oluyorlar. Yorumu size bırakıyorum. Tabi aklı tepelerde yani bir karış havada olanlar “hayır C#’ta procedureler daha gelişmiş bir yapıya sahiptir” demeyi sürdüreceklerdir.