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.