Tugas 2 IMK
1. Kemudahan Dipahami (Learnability)
Area tampilan hasil perhitungan jelas, sehingga pengguna dapat segera melihat output dari operasi yang dilakukan. Namun, belum terdapat placeholder (misalnya angka “0” sebagai nilai awal), sehingga tampilan awal kalkulator terlihat kosong dan dapat menimbulkan kebingungan bagi pengguna baru.
2. Konsistensi (Consistency)
Terdapat inkonsistensi pada penanganan angka desimal karena pengguna dapat memasukkan lebih dari satu tanda titik dalam satu bilangan. Selain itu, perilaku kalkulator setelah hasil ditampilkan dapat membingungkan pengguna, karena menekan operator setelah hasil keluar akan melanjutkan operasi alih-alih memulai perhitungan baru secara eksplisit.
3. Penanganan Kesalahan (Error Handling)
Tidak terdapat pesan peringatan apabila pengguna menekan tombol hasil tanpa adanya masukan, serta tidak tersedia fitur penghapusan satu karakter (backspace) sehingga pengguna harus menghapus seluruh masukan jika terjadi kesalahan.
4. Umpan Balik (Feedback)
Kalkulator memberikan umpan balik dasar berupa tampilan langsung dari angka yang ditekan dan hasil perhitungan yang ditampilkan pada layar. Namun, tidak ada umpan balik visual tambahan seperti perubahan warna atau animasi saat tombol ditekan, sehingga pengalaman pengguna terasa statis. Tidak ada pula pesan atau indikator khusus ketika terjadi kesalahan input, yang dapat membantu pengguna memahami masalah yang terjadi.
5. Estetika dan Kenyamanan (Aesthetic and User Comfort)
Logika perhitungan dan urutan operasi yang diterapkan sudah sesuai dengan kaidah matematika, sehingga mendukung keandalan sistem. Namun, dari sisi estetika, tampilan antarmuka masih sederhana dan tidak memiliki fitur pendukung seperti pemisah ribuan, auto-scroll untuk angka panjang, atau penekanan visual pada hasil akhir. Hal ini dapat menurunkan kenyamanan pengguna ketika melakukan perhitungan dengan angka besar.
Secara keseluruhan, kalkulator ini telah memenuhi aspek dasar usability, namun masih dapat ditingkatkan dengan menambahkan penanganan kesalahan yang lebih komprehensif, umpan balik visual yang lebih kaya, dan penyempurnaan tampilan antarmuka agar lebih menarik serta mendukung pengalaman pengguna yang optimal.
Aspek yang Sudah Baik ✅
-
Struktur Kode yang Terorganisasi
-
Konsistensi Interaksi
-
Urutan Operasi Matematika yang Tepat
-
Mekanisme Pengaturan Status Hasil
-
Penghapusan Masukan yang Efisien
Aspek yang Masih Kurang ⚠️
-
Penanganan Kesalahan yang Terbatas
-
Kurangnya Fitur Penghapusan Parsial (Backspace)
-
Kurangnya Umpan Balik Visual
-
Ketidakhadiran Placeholder atau Nilai Awal
-
Kurangnya Dukungan untuk Kasus Input Panjang
-
Parsing Angka Lebih Aman
-
Semua angka diubah jadi
Numbersebelum operasi hitung, jadi hasil gak bakalNaNkalau input ada pemisah.
-
-
Undo/Redo Lebih Stabil
-
Setiap input baru otomatis masuk
undoStack. -
redoStacklangsung di-reset tiap ada input baru → mencegah redo lompat ke state yang salah.
-
-
Cegah Double Operator
-
Baik dari klik tombol maupun keyboard, kalau terakhir sudah operator, maka operator baru akan replace yang lama, bukan ditambahin.
-
-
Format Angka Hanya di Output
-
formatNumber()cuma dipakai untuk menampilkan hasil akhir, bukan saat mengetik → biar proses hitung tetap valid.
-
-
Keyboard Support Ditingkatkan
-
*otomatis jadi×,/otomatis jadi÷. -
Enterlangsung trigger tombol=. -
Backspacelangsung hapus 1 karakter. -
Prevent double operator saat input keyboard.
-
-
Code Lebih Modern & Bersih
-
Pakai
forEach()daripadaforklasik → lebih rapi dan readable. -
Semua fungsi dikelompokkan dan diberi nama jelas (
updateInput,updateHistory,process). -
Perhitungan operator lebih modular pakai
process()→ gak perlu copy-paste loop untuk setiap operator.
-
-
UX Lebih Konsisten
-
Clear, ClearLast, Undo, Redo semua sinkron dengan
undoStack&redoStack. -
History hanya simpan 3 hasil terakhir dan langsung update tampilan.
-
![]() |
| Support keyboard, tombol undo dan redo, history dan tombol kemudahan untuk hapus satu karakter. |
1. Eksperimen Input Tidak Biasa
Saya mencoba memasukkan beberapa input yang berpotensi menyebabkan error:
-
10 ÷ 0
-
++5
-
5 ×
-
5..2
-
Kosong lalu tekan "="
Infinity di layar. Tidak user-friendly. User awam mungkin bingung dengan kata "Infinity".+) yang dipakai. Sudah ditangani dengan baik, tidak menyebabkan crash.5 ×. Bisa bikin user bingung kenapa tidak ada output.- Menghasilkan 5..2 → NaN (hasil tidak valid). Sistem tetap mencoba menghitung, tapi hasilnya error.- Menampilkan layar kosong. Tidak ada pesan error. Bisa bikin user bingung.3. Saran Perbaikan
Agar pengalaman pengguna lebih baik, saya mengusulkan:
-
Handling Pembagian Nol
Jika input mengandung÷ 0, tampilkan pesan"Error: Pembagian dengan nol tidak valid"di layar. -
Validasi Input Sebelum Hitung
-
Jika input kosong → tampilkan
"Input kosong"daripada tidak melakukan apa-apa. -
Jika input diakhiri operator → hapus operator terakhir sebelum menghitung.
-
-
Validasi Format Angka
-
Deteksi angka dengan dua titik desimal (
5..2) → munculkan pesan"Format angka tidak valid".
-
-
Reset Setelah Error
Setelah menampilkan pesan error, kalkulator otomatis siap menerima input baru (tidak perlu dihapus manual). -
Visual Feedback
Bisa ditambahkan highlight merah pada box input saat error, sehingga user langsung sadar ada kesalahan.




Komentar
Posting Komentar