Get used to Writing Generic Functions!

Berapa sering kita menggunakan kode swapping dan mencari nilai max? Sering, maka dari itu kita buatkan mereka sebagai function.

 

Namun, jika ada 4 tipe objek (eg. int, double, string, Score), haruskah kita membuat 4 function swapping dan 4 function max?

 

Biasakanlah menulis function yang generic (dapat di-apply ke banyak tipe), karena ini akan lebih memantapkan prinsip code reuse.

 

Berikut sample generic functions:

namespace Zedilabs

{

    public class Utility

    {

        public static void Swap<T>(ref T var1, ref T var2)

        {

            T temp = var1;

            var1 = var2;

            var2 = temp;

        }

 

        public static T Max<T>(T var1, T var2) where T : IComparable

        {

            if (var1.CompareTo(var2) > 0)

                return var1;

 

            return var2;

        }

    }

}

 

Berikut sample penggunaannya:

static void Main(string[] args)

{

    string s1 = "Halo";

    string s2 = "Dunia";

 

    Console.WriteLine("Sebelum swap: {0} {1}", s1, s2);

 

    Zedilabs.Utility.Swap<string>(ref s1, ref s2);

    Console.WriteLine("Sesudah swap: {0} {1}", s1, s2);

 

    // Old way of doing things

    int[] arrInts = new int[] {1, 2, 3, 4, 5};

    int max = arrInts[0];

    for (int i = 1; i < arrInts.Length; ++i) {

        if (arrInts[i] > max)

            max = arrInts[i];

    }

    Console.WriteLine("Old Max : {0}", max);

 

    // New way of doing things

    System.Collections.IEnumerator iter =

        arrInts.GetEnumerator();

    max = 0;

    while (iter.MoveNext()) {

        max = Zedilabs.Utility.Max<int>(max, (int)iter.Current);

    }

    Console.WriteLine("New Max : {0}", max);

 

}

 

Dan berikut outputnya:

Sebelum swap: Halo Dunia

Sesudah swap: Dunia Halo

Old Max : 5

New Max : 5

Press any key to continue . . .

 

Remember, don’t use indexing facility if you don’t need random access to a container!

 

Bibliography:

[1] Matthew Austern, Generic Programming and the STL.

Share this post: | | | |
Published Sunday, May 07, 2006 12:26 AM by zeddy

Comments

No Comments

Leave a Comment

(required) 
(required) 
(optional)
(required) 

Enter the numbers above:
Powered by Community Server (Commercial Edition), by Telligent Systems