Pentingnya Modularisasi Dalam Pemrograman

Don’t Repeat Yourself (DRY). Pernah mendengar slogan ini? DRY merupakan sebuah prinsip pengembangan software yang makna utamanya adalah mengurangi repetisi semaksimal mungkin.

Mungkin repetisi yang pembaca lakukan tidak akan terlalu terasa kalau pembaca menulis software yang pendek (seperti tugas algoritma dan pemrograman di kelas misalnya). Kalau urusannya dengan software siap pakai beneran, barulah semuanya terasa. -_-

Contoh singkat, pernah menulis program dengan Java? Untuk mengeksekusi 1 query ke database MySQL saja misalnya, paling tidak harus ada kode seperti di bawah ini bukan?

import java.sql.*;

import javax.swing.JOptionPane;

public class MySQLSampleProgram {

    public static final String  DB_NAME     = "dbname";
    public static final String  DB_HOST     = "localhost";
    public static final int     DB_PORT     = 3306;
    public static final String  DB_USER     = "dbuser";
    public static final String  DB_PASSWORD = "dbpassword";

    public static Connection conn = null;
    public static Statement stat = null;

    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://" + DB_HOST + ":" + String.valueOf(DB_PORT) + "/" + DB_NAME, DB_USER, DB_PASSWORD);
            stat = conn.createStatement();

            String query = "SELECT * FROM table;";

            ResultSet rs = stat.executeQuery(query);

            /* Continued... */
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
}

Baru setelah melakukan eksekusi terhadap query, hasil yang didapatkan dari database bisa dipakai. Bayangkan kalau setiap form yang pembaca buat harus mencantumkan kode konfigurasi database di atas (DB_NAME dan seterusnya) dan kode yang ada di blok try di atas (Class.forName dan seterusnya). Fiuh, capek bukan?

Untuk itulah pentingnya modularisasi. Dengan mengelompokkan operasi-operasi yang sering dilakukan ke dalam suatu modul (function, procedure atau class), maka jika dibutuhkan, operasi-operasi tersebut tinggal dipanggil dengan cara yang singkat. Di sinilah pemrograman berorientasi objek menjadi menyenangkan.😉

Dengan menganggap masalah yang hendak diproses sebagai objek, maka proses pemecahan masalah dapat dilakukan langsung tanpa harus melaksanakan serentetan operasi yang berulang-ulang. Untuk menyelesaikan contoh kasus koneksi database di Java seperti di atas misalnya, saya melakukan modularisasi dengan cara menulis class yang dapat digunakan untuk menyederhanakan eksekusi query. Coba lihat di sini: https://gist.github.com/imamhidayat92/5418582

Kalau pembaca menggunakan class yang saya tulis tersebut, mengeksekusi query hanya akan sekedar memanggil perintah sederhana seperti berikut:

import helper.MySQLConnector;

import java.sql.*;

import javax.swing.JOptionPane;

public class MySQLSampleProgram {

    public static void main(String[] args) {
        try {
            String query = "SELECT * FROM table;";

            ResultSet rs = MySQLConnector.executeQuery(query);

            /* Continued... */
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
}

Hemat bukan jadinya?😛

Melakukan sesuatu yang repetitif itu akan sangat melelahkan. Tanpa modularisasi, proses meng-update kode juga akan menjadi rumit. Bayangkan, ada berapa kode serupa yang harus diperbaiki kalau ternyata ada prosedur yang salah?

Dengan modularisasi, tentu saja menulis program juga akan menjadi lebih efisien, dan kodenya akan lebih mudah dibaca.

Semoga bermanfaat.😉

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s