it-swarm.asia

Apakah lebih baik mencegah tindakan terlarang atau menampilkan pesan kesalahan / penjelasan?

Ada banyak contoh, jadi saya akan memilih yang spesifik untuk memfokuskan pertanyaan.

Katakanlah pengguna dapat memiliki karakteristik (atau izin) tertentu:
Admin, Virtual, Eksternal, Keuangan, dll.

Untuk memperumit masalah, pengguna juga memiliki lisensi yang berbeda - Premium, Biasa, Terbatas, dll.

Anda mungkin dapat melihat ke mana arahnya:
Katakanlah pengguna dengan lisensi terbatas tidak dapat menjadi Admin atau memiliki izin keuangan.

Kemungkinan:

  • Admin pergi ke profil, katakanlah Zack dan melihat dia tidak dapat mengizinkannya untuk memiliki izin keuangan.
    Masalahnya adalah tidak jelas bagi admin mengapa demikian (info lisensi dan izin tidak ditampilkan di lokasi yang sama dan bahkan jika itu terjadi, admin harus mengetahui aturan sistem dari "tidak ada izin finansial untuk pengguna terbatas")
  • Admin melihat semua izin (mari kita asumsikan dilaksanakan melalui kotak centang) diaktifkan dan hanya ketika mengklik mendapat pesan kesalahan yang menginformasikan mengapa operasi ditolak.
    Sekarang alasannya jelas, tetapi admin harus "membuang" klik untuk mengetahuinya.

Apakah ada cara untuk mencegah tindakan dan menjelaskan mengapa? Apakah kontrol yang dinonaktifkan dengan tooltip berfungsi? Ada ide yang lebih baik?

Untuk menyebutkan secara singkat contoh lain - katakanlah Anda memiliki grafik interaktif dan Anda dapat memindahkan sebagian besar titik pada grafik, tetapi beberapa harus stasioner. Anda bisa menggambar mereka secara berbeda untuk menunjukkan mereka tidak dapat dipindahkan (tanpa menjelaskan alasannya), atau Anda dapat membiarkan pengguna mencoba menyeretnya dan kemudian menampilkan pesan kesalahan.

27
Dan Barak

Bergantung pada aplikasinya, saya sering tidak menampilkan bagian halaman yang tidak dapat diakses oleh pengguna. Sepertinya Anda memiliki pengguna yang mengubah hak pengguna lain, jadi metode ini mungkin tidak berfungsi. Saya akan merekomendasikan menampilkan pesan kesalahan setiap kali Anda menampilkan elemen input yang dinonaktifkan. Pengguna dapat menjadi frustrasi ketika mereka tidak dapat melakukan tindakan yang mereka harapkan dapat dilakukan. Jika itu hanya dinonaktifkan, mereka mungkin tidak akan mengerti mengapa dan hanya akan mengeluarkannya di program. Demikian juga, Anda ingin memastikan pesannya sesederhana mungkin dan langsung pada intinya. Pesan kesalahan panjang seringkali diabaikan.

12
LoganGoesPlaces

Sebelum Anda sepenuhnya menyembunyikan bagian dari UI untuk fitur yang tidak dapat diakses oleh pengguna, pertimbangkan:

  1. Akankah pengguna tahu tentang fitur itu?
  2. Apakah mereka akan menghabiskan banyak waktu untuk berburu?
  3. Apakah Anda lebih baik menyimpannya dalam keadaan "cacat" bersama dengan tooltip atau indikator lain sehingga mereka dapat mengetahui mengapa itu tidak tersedia?

Ini contoh sederhana. Misalkan aplikasi Anda menyertakan opsi untuk mencetak. Ketika tidak ada printer yang tersedia, haruskah Anda sepenuhnya menyembunyikan perintah menu cetak? Apakah ini akan menyebabkan kebingungan dan waktu yang terbuang sia-sia ketika pengguna menelusuri semua menu dan akhirnya menghubungi tim dukungan teknis Anda mencoba menemukan perintah "cetak"? Akankah tim dukungan teknis Anda bahkan memahami bahwa pengguna ini tidak melihat perintah "cetak"? Apakah akan ada efek samping yang tidak diinginkan jika, misalnya, printer terpasang tetapi dimatikan untuk menghemat daya?

Sebagai aturan umum, saya percaya bahwa dalam banyak kasus, terutama kasus di mana suatu opsi kadang-kadang tersedia, pengguna paling baik dilayani oleh opsi yang dinonaktifkan atau bahkan opsi yang diaktifkan yang memunculkan pesan kesalahan yang menjelaskan MENGAPA pilihannya bukan ( saat ini tersedia.

35
Joel Spolsky

Saya melihat dua pendekatan berbeda.

Jika tindakan dinonaktifkan karena keamanan Saya benar-benar akan mencoba untuk menghapusnya jika memungkinkan. Mudah dengan item menu atau sebagian besar tombol bilah alat.

Jika tindakan dinonaktifkan karena Anda memiliki versi perangkat lunak yang lebih murah, saya akan membiarkannya tetap ada tetapi dinonaktifkan. Ini membuat pengguna tahu "Anda bisa mendapatkan ini jika Anda membayar lebih banyak" sedangkan jika dihapus, mereka tidak akan tahu apa yang hilang. Saya melihat popup "Anda tidak dapat melakukan ini karena lisensi" menjadi UI yang buruk karena pengguna tidak dapat memastikan apakah mereka dapat melakukan suatu tindakan tanpa benar-benar mencoba melakukan tindakan tersebut.

8
shemnon

Pendekatan lain adalah tidak menunjukkan tindakan sama sekali.

Stack Exchange adalah contoh yang bagus untuk ini. Jika saya tidak memiliki hak "edit" untuk posting orang lain, saya tidak melihat tautan "edit" sama sekali. Ini berarti saya tidak mencoba mengkliknya dan bertanya-tanya mengapa itu tidak berhasil.

Ini mungkin tidak berfungsi dalam semua keadaan, tetapi dalam contoh Anda, opsi/tautan "admin" dan "finansial" tidak akan muncul untuk pengguna terbatas - bahkan di layar admin untuk pengguna tersebut. Jika pengguna diubah menjadi pengguna "Biasa" atau "Premium" maka opsi/tautan tersebut akan muncul.

Anda kemudian dapat mempertimbangkan untuk menampilkan jenis pengguna di suatu tempat semi menonjol sehingga administrator dapat diingatkan mengapa opsi/tautan tertentu tidak terlihat!

7
ChrisF

Seperti jawaban lain yang telah dinyatakan, jika pengguna tidak memiliki izin untuk melakukan suatu tindakan dalam sistem (seperti pada, tidak ada hak istimewa edit/admin), maka tindakan tersebut tidak boleh ditampilkan sama sekali.

Dalam kasus di mana tindakan dinonaktifkan karena keadaan aplikasi (tidak dapat mengedit file hanya baca, tidak dapat menyalin/menempel jika tidak ada teks yang dipilih, pengguna memiliki versi perangkat lunak versi percobaan yang tidak memiliki beberapa fitur, dll) Saya pribadi pikir tindakan harus ditampilkan, dengan indikasi visual bahwa tindakan saat ini tidak dapat dilakukan. Perhatikan bahwa saya tidak mengatakan "dinonaktifkan," karena jika pengguna mencoba tindakan itu, mereka harus dapat mengetahui mengapa hal itu tidak dapat dilakukan. Dengan cara ini pengguna dapat melihat bahwa tindakan dinonaktifkan, tetapi mereka juga bisa mendapatkan pesan yang menjelaskan alasannya.

Saya akan berhati-hati dengan kasus di mana pengguna memiliki versi percobaan/kurang berlisensi dari aplikasi yang tidak memiliki fitur. Misalnya, jika Anda memiliki aplikasi baca/tulis ISO yang tidak akan menyalin CD kecuali Anda membayarnya, maka Anda bisa memperlihatkan opsi "rip CD" tetapi tidak membiarkan pengguna melakukannya. Tetapi jika aplikasi Anda memiliki seluruh suite senilai fitur di versi yang lebih tinggi dari mereka (visual studio misalnya) kemudian menampilkan semua hal itu tetapi tidak memungkinkan mereka bisa membuat frustasi bagi pengguna. Saya tidak ingin membuka IDE dan melihat database, jaringan, UML terintegrasi, pengujian, profil, dll) ketika saya tahu bahwa semua yang saya lisensikan untuk dilakukan di dalamnya adalah menulis dan membangun proyek .

6
Carson Myers

Aturan praktis saya adalah: Jika suatu tindakan tidak tersedia untuk pengguna karena izin, itu tidak terlihat. Jika suatu tindakan tidak tersedia karena konteks sementara (tombol 'Simpan' ini tidak memiliki arti sampai pengguna memasukkan sesuatu untuk disimpan), maka tindakan itu dinonaktifkan.

"Izin" mencakup "pengguna admin vs pengguna biasa" dan "lisensi premium vs lisensi murahan". Elemen UI yang tidak dapat digunakan berantakan - bukan cara untuk mengiklankan fitur tambahan Anda.

Banyak jawaban yang tampaknya benar, hanya ingin menyimpulkan semuanya dengan salah satu heuristik Nielsen, yang menunjukkan hal ini. Ini menyatakan:

Pencegahan kesalahan Bahkan lebih baik daripada pesan kesalahan yang baik adalah desain yang hati-hati yang mencegah masalah terjadi di tempat pertama. Baik menghilangkan kondisi rawan kesalahan atau memeriksa mereka dan memberikan opsi konfirmasi kepada pengguna sebelum mereka melakukan tindakan.

Sumber: http://www.useit.com/papers/heuristic/heuristic_list.html

4
Nacho

Saya sangat suka jawaban shemnon . Saya akan memperpanjang kasus keduanya dan menerapkan perintah Nielsen yang direferensikan ign; jika pengguna memiliki lisensi yang lebih murah, saya akan menonaktifkan opsi dan mengganti objek seleksi dengan ikon yang lebih lanjut membuat jelas opsi dinonaktifkan negara.

Sesuatu seperti

  • O Opsi 1
  • O Opsi 2
  • alt text Opsi 3
  • O Opsi 4

Karena produk tambahan ini masih dalam pengembangan, saya juga akan menyertakan setidaknya pernyataan tingkat lisensi pengguna pada halaman yang sama. Dengan begitu, admin melihat bahwa tingkat lisensi pengguna sekaligus admin melihat variabel sistem yang secara langsung dipengaruhi oleh lisensi itu.

Keindahan perangkat lunak adalah yang harus Anda lakukan hanyalah memanggil informasi.

Sunting: Selain itu, saya mungkin menggunakan skema izin role-centric, di mana izin dapat ditetapkan untuk peran dan bukan pengguna individu. Hal ini sering mengurangi satu ton overhead dari kebutuhan untuk mengelola secara mikro izin pengguna individu.

  1. Admin membuka layar pengeditan peran.
  2. Admin mungkin memilih tombol radio untuk lisensi terendah yang perannya akan diterapkan.
  3. Izin yang tidak tersedia untuk peran yang dipilih dinonaktifkan dan "x" ed.
  4. Admin memilih izin dari opsi aktif yang tersisa.
  5. Kemudian, di layar manajemen pengguna atau profil pengguna, admin melihat daftar peran yang bisa dibuat pengguna berdasarkan lisensi, dan admin memilih satu atau banyak.
1
Matt

Secara umum, aturan praktis saya seperti ini (dan saya harus memiliki alasan yang baik untuk melanggarnya): Jika alasan di balik komponen yang dinonaktifkan mengalir dari konteks atau pemahaman itu harus mudah bagi pengguna karena alasan lain, maka pemblokiran adalah solusi yang lebih disukai. Lain, pengguna mungkin frustrasi mencoba mencari tahu mengapa seperti ini, dan lebih buruk lagi, mungkin tidak akan ingat alasan untuk itu (jika ia menemukan jawabannya) saat berikutnya ia menjumpainya.

1
Assimiz

Untuk menjawab pertanyaan spesifik Anda, Anda ingin menampilkan informasi yang cukup sehingga pengguna dapat memahami batasan sebelum mereka mengklik. Dalam contoh Anda, Anda harus mendaftarkan setiap pengguna dengan lisensi mereka sebagai bidang hanya baca yang terhubung secara visual (mis., Berdasarkan jarak) dengan kontrol untuk mengatur izin. Atau Anda dapat menggabungkan bidang lisensi secara dinamis dengan label untuk izin (mis., "Izin (dengan Lisensi Terbatas):").

Izin yang tidak berlaku mungkin harus dinonaktifkan, tidak diaktifkan dan tidak disembunyikan. Jika itu layak kekacauan, termasuk teks in-line, hover teks/tooltips, atau tautan untuk menjelaskan mengapa izin tidak diizinkan oleh lisensi (teks in-line dapat menggantikan kontrol yang dinonaktifkan jika daftar izin, misalnya "Admin , Keuangan tidak diizinkan untuk pengguna Terbatas ").

Aturan umum menggunakan penonaktifan jika pengguna dapat melakukan sesuatu di UI untuk mengaktifkan perintah. Dinonaktifkan berarti "Anda dapat melakukan perintah ini, tetapi tidak sekarang seperti ini." "Cara segala sesuatunya" meliputi pemilihan saat ini. Setiap kali Anda menggunakan penonaktifan, harus ada indikasi yang jelas sehingga pengguna mengerti mengapa perintah terkait dinonaktifkan untuk beberapa objek.

Gunakan kotak pesan alih-alih penonaktifan jika ada tidak mungkin untuk menjelaskan alasan penonaktifan tersebut kepada pengguna sebelumnya dengan asumsi mereka memiliki pengetahuan rata-rata tentang domain tersebut. Tip alat untuk kontrol yang dinonaktifkan adalah ide bagus, tetapi mungkin tidak memadai sendiri dalam semua kasus.

Gunakan persembunyian jika pengguna tidak pernah memiliki akses ke perintah tidak peduli apa yang mereka lakukan di UI mengingat posisi mereka saat ini di organisasi. Misalnya, tindakan yang tidak diotorisasi oleh pengguna yang diberikan izinnya hanya tidak muncul. Itu berantakan dan frustasi untuk menggunakan kotak menonaktifkan atau pesan untuk kasus ini. Sejauh menyangkut pengguna, tindakan yang tidak mereka miliki haknya bukan pekerjaan mereka (jika tidak, mereka memiliki akses), dan kontrol terkait seharusnya tidak ada di UI mereka. Manual dokumentasi atau prosedur organisasi dapat memberi tahu pengguna bagaimana tindakan tersebut dilakukan (misalnya, "Supervisor Anda membuat akun pelanggan baru untuk Anda" atau "Anda memerlukan izin Finansial untuk mengedit akun; lihat administrator Anda tentang prosedur untuk mendapatkan persetujuan untuk meningkatkan izin Anda. ").

Saya telah memberikan detail di Mengontrol Kontrol Anda .

1
Michael Zuschlag

Beberapa poin di atas bagus, dan saya tidak ingin mengulanginya lagi, tapi ...

Dalam hal ini, saya akan memiliki semua opsi yang tersedia terlihat. Opsi yang tidak berlaku dalam aturan Anda, harus dinonaktifkan (berwarna abu-abu). Sudah menjadi rahasia umum bagi pengguna antarmuka apa pun untuk mengenali bahwa jika ada sesuatu yang berwarna abu-abu, biasanya itu berarti itu tidak berlaku untuk semacam aturan yang terjadi.

Tip alat bertepatan dengan tombol yang dinonaktifkan dengan sempurna. Dalam beberapa kasus khusus yang lebih canggih seperti milik Anda di atas dengan lisensi, jika pengguna tanpa lisensi yang tepat melihat area yang memerlukan lisensi lebih tinggi, sepenuhnya mengubah seni tombol menjadi sesuatu seperti "Tingkatkan Sekarang!" alih-alih memutarnya, akan lebih baik beriklan untuk produk, dan menjelaskan maksudnya.

Jika pengguna admin melihatnya, mereka jelas akan melihat bahwa opsi keuangan berwarna abu-abu, dengan ujung alat menjelaskan alasannya.

Saya tidak sepenuhnya tahu konteks masalah Anda, bahkan mungkin tidak ada produk yang terlibat. Tetapi berdasarkan apa yang saya pahami, itulah reaksi saya terhadapnya.

1
user708

Windows UXGuide memiliki sedikit sumber daya yang dapat membantu Anda memutuskan apakah akan menampilkan kesalahan atau mencegah input yang tidak valid. Khususnya ada bagian yang membuat pernyataan di bawah ini tentang ui.

Jangan memberikan pesan kesalahan saat pengguna tidak cenderung melakukan tindakan atau mengubah perilaku mereka sebagai hasil dari pesan tersebut. Jika tidak ada tindakan yang dapat dilakukan pengguna, atau jika masalahnya tidak signifikan, tekan pesan kesalahan.

Juga diskusi ini mengingatkan saya sedikit tentang apa yang Karl Shifflett di posting blog berjudul "Fort Knox Business Objects (yes/no)" di mana ia menimbang pro dan kontra apakah akan mengizinkan objek bisnis masuk ke dalamnya keadaan tidak valid atau tidak dan bagaimana keputusan ini memengaruhi interaksi pengguna.

Secara pribadi, saya cenderung untuk mencegah pengguna membuat entri yang tidak valid atau menonaktifkan kontrol yang melakukan tindakan seperti tombol sebagian besar waktu tetapi untuk beberapa kontrol yang melibatkan entri teks yang kompleks saya cenderung menunjukkan peringatan sebaris yang kurang menonjol daripada kotak pesan tetapi masih mendapatkan titik seberang.

0
jpierson

Lakukan Keduanya: Backend dan UI

Ini seharusnya bukan situasi atau situasi. Jawaban lain mencantumkan alasan bagus yang tercantum untuk menunjukkan opsi yang tidak tersedia, dan alasan bagus untuk tidak menunjukkannya. Tapi masalahnya, Anda harus menanganinya dengan benar di backend. Anda masih perlu memeriksa input dan izin pengguna dengan benar, meskipun Anda berpikir bahwa satu-satunya input yang dapat mereka berikan adalah yang tepat.

Ini berlaku dua kali lipat dengan aplikasi berbasis web mana pun, di mana pengguna dapat secara artifisial mengaktifkan kontrol/opsi/input yang dinonaktifkan. Jangan biarkan Firebug mengalahkan kemampuan aplikasi Anda untuk mengontrol apa yang bisa saya lakukan. Dan dalam kasus di mana mereka mencoba menggunakan opsi yang seharusnya tidak tersedia, pastikan Anda mencatat acara tersebut.

0
Jeffrey Blake