ในความเป็นจริงคำถามนี้เป็นข้อควรระวังที่จะต้องดำเนินการเพื่อเพิ่มประสบการณ์การใช้งานที่มีคุณภาพและลดการโทรสนับสนุนที่หลีกเลี่ยงได้
ในความเป็นจริงคำถามนี้เป็นข้อควรระวังที่จะต้องดำเนินการเพื่อเพิ่มประสบการณ์การใช้งานที่มีคุณภาพและลดการโทรสนับสนุนที่หลีกเลี่ยงได้
คำตอบ:
การขาดการตรวจสอบอินพุตที่เหมาะสมนั้นเป็นหนึ่งในสิ่งเหล่านั้นซึ่งมีแนวโน้มที่จะนำไปสู่ผู้ใช้ที่ทำสิ่ง "ไม่ดี" อย่างรวดเร็วกับแอปพลิเคชันของคุณเมื่อโปรแกรมเมอร์ควรได้รับการจัดการอย่างแท้จริง
ฉันเคยเห็นแอปรุ่นเก่าที่ผู้ใช้ได้รับการฝึกอบรมไปที่:
a-z0-9,
email
ฟิลด์มิฉะนั้นการส่งเมลที่ตามมาไปยังผู้ใช้นั้นจะใช้สิ่งที่อยู่ในฟิลด์และจะล้มเหลวhttp://
ใส่" " ไว้ก่อนที่อยู่เว็บฯลฯ
ปัญหาทั้งหมดข้างต้นเป็นปัญหาที่นักพัฒนาแอปพลิเคชันควรได้รับการจัดการ เมื่อการตรวจสอบอินพุตของคุณเป็นหลัก "ตรวจสอบให้แน่ใจว่าผู้ใช้รู้ว่ารูปแบบฟิลด์นี้ควรอยู่ในรูปแบบใดและไว้วางใจสิ่งที่พวกเขาป้อนถูกต้อง" จากนั้นสิ่งที่คาดไม่ถึงจะถูกผูกไว้เพื่อหาทางในแอป นอกเหนือจากผลกระทบด้านความปลอดภัยที่เห็นได้ชัดผู้ใช้ทำผิดพลาด ในฐานะโปรแกรมเมอร์เรามักจะผลิตผลิตภัณฑ์ที่ดีที่สุดของเราโดยการดัดไปข้างหลังเพื่อให้แน่ใจว่าผู้ใช้ไม่สามารถทำสิ่งผิดพลาดได้ไม่ว่าพวกเขาจะพยายามอย่างหนัก!
http://
จุดตรวจสอบ เป็นตัวอย่างที่ไม่นี้ในทางที่ไร้เดียงสาและผลที่ได้คือการที่คุณไม่สามารถแพคเกจโฮสต์บนโดเมนที่ใช้ASDF
https://
ฉันเคยได้รับการสนับสนุนลูกค้าเพราะแอพของฉันหายไป กลับกลายเป็นว่าพวกเขาเปิดแอปอื่นขึ้นมา
... ฉันตัดสินใจที่จะไม่รับรองว่าจะไม่เกิดขึ้นอีกเนื่องจากเป็นความไม่รู้ในคอมพิวเตอร์ของผู้ใช้ที่ทำให้เกิดปัญหาไม่ใช่แอป อะไรก็ตามที่ฉันสามารถทำได้เพื่อแก้ไขมันจะนำไปสู่ประสบการณ์การใช้งานที่ไม่ดีสำหรับผู้อื่น
เกือบทุกโปรแกรมที่ฉันเขียนถูกเรียกอย่างเคร่งครัดจากบรรทัดคำสั่ง ฉันยังได้เขียนสิ่งที่นักเล่นบางคนที่เริ่มต้นเป็นอินเทอร์เฟซ CLI และเติบโตอย่างรวดเร็วเป็นสิ่งที่เปลือกมากกว่าอะไร
ดังนั้นฉันสามารถพูดได้เฉพาะสิ่งที่ฉันรู้ ต่อไปนี้เป็นปัญหาทั่วไปเกี่ยวกับโปรแกรมบรรทัดคำสั่ง:
ทางเลือกมากเกินไป
หากคุณไม่ได้เขียนคอมไพเลอร์หรือผู้แก้ไขบรรทัดให้พยายาม จำกัด ตัวเลือกให้เต็มหน้าจอเดียวบนบัฟเฟอร์เฟรมขนาด 80x25 เมื่อ--help
หรือ/?
ผ่านไป มันสมบูรณ์ดีที่มีตัวเลือกมากกว่านั้น แต่แบ่งออกเป็นหมวดหมู่ย่อย ตัวอย่างเช่น
foo --help
foo --help option_name
ไม่มีตัวเลือกยาว
มันง่ายมากที่จะจำกว่าก็คือการจำfoo --attach_to [argument] --volatile --verbose
foo -a [arg] -v +V
สิ่งนี้ไม่สามารถทำได้เสมอไป แต่ในกรณีส่วนใหญ่
ไม่มีการตรวจสอบอินพุต
เกือบทุกแพลตฟอร์มมีหลายไลบรารีที่พยายามทดสอบและเป็นจริงเมื่อพูดถึงการแยกวิเคราะห์และตรวจสอบข้อโต้แย้ง เกือบทุกแพลตฟอร์มมี lexer ที่ผ่านการลองทดสอบและจริงซึ่งตรวจสอบความถูกต้องของข้อมูลจาก CLI ใช้หนึ่งอื่น ๆ หรือทั้งสองอย่าง หากโปรแกรมของคุณ segfaults หรือหารด้วยศูนย์เนื่องจากสิ่งที่ผู้ใช้ให้นั่นแสดงว่าน่าอาย
คุณอาจไม่ต้องการบางสิ่งที่ซับซ้อนเหมือน lexer บางทีคุณอาจโทเค็นสตริงได้ถ้าคุณต้องการสิ่งต่าง ๆ ตามลำดับด้วยบางสิ่งในบางสถานที่
ฉันได้รับรายงานข้อผิดพลาดทันทีที่คาดว่าจะมีจำนวนเต็มและมีคนพิมพ์f*** my life
คำพูด ฉันไม่ได้เขียนโปรแกรมนั้นฉันโชคร้ายที่ได้รับมรดก
ไม่มีปุ่ม 'verbocity'
อนุญาตให้ผู้ใช้ที่มีประสบการณ์สามารถค้นพบวิธีการกำจัดเสียงรบกวนจากโปรแกรมของคุณได้ง่ายกว่าที่คนส่วนใหญ่จะทน ฉันไม่สามารถบอกคุณได้กี่ครั้งที่ฉันต้องลุกขึ้นstrace
เพื่อตระหนักว่ามีอะไรบางอย่างที่ผิดพลาดเพราะมันทำงานบนสตรีมไฟล์ NULL
นอกจากนี้คุณยังสามารถปิดการยืนยันเพื่อปิดการใช้งานผ่าน NDEBUG หรือวิธีการอื่นที่ยังคงส่งผลให้บางสิ่งที่พิมพ์หรือบันทึกไว้เพื่อให้ผู้ใช้ค้นหา
การพูดถึงไฟล์บันทึกพยายามที่จะทำให้แน่ใจว่าทุกสิ่งที่คุณทำอยู่นั้นเหมาะสมกับคนอื่นที่ไม่ใช่คุณ (อย่างน้อยก็น้อย) หากการเริ่มต้นของทุกรายการเป็นวันที่ในระบบ UNIX คุณจะต้องหงุดหงิดกับคนที่ต้องการช่วยคุณสร้างข้อผิดพลาด
ไม่มี 'บัดดี้บั๊ก' ในโหมดแก้ไขข้อบกพร่อง
มีโปรแกรมมากมายที่นำเสนอสวิตช์ 'ดีบั๊ก' ที่มอบการพูดคุยเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นกับโปรแกรม แต่มีข้อเสนอน้อยมากดังต่อไปนี้:
หรือบางทีคุณอาจชอบฟังคนอ่านสิ่งต่อไปนี้ทางโทรศัพท์:
มันบอกว่าสภาพที่ไม่คาดคิดที่ศูนย์ eff oh สี่ศูนย์ oh .... ตกลง lemme อ่านที่กลับมาให้คุณ ...
ไฟล์การกำหนดค่าที่ซับซ้อนมากเกินไป
อย่าปรับความจำเป็นในการแยกวิเคราะห์การตั้งค่าเป็นข้ออ้างในการรับน้ำตาลปากต่อปากจำนวนมาก พยายามใช้รูปแบบที่ผู้คนรู้จักจริงแม้ว่าจะหมายถึงการทำงานพิเศษเมื่อแยกวิเคราะห์ ฉันพยายามใช้รูปแบบสไตล์ INI ทุกครั้งที่ทำได้ คุณจะประหลาดใจกับสิ่งที่คุณสามารถดึงออกมาได้ด้วยพจนานุกรมคีย์ -> ค่าอย่างง่าย
ไม่มีไฟล์กำหนดค่า
อย่าทำให้คนเขียนเชลล์สคริปหรือไฟล์แบตช์เพียงเพื่อใช้โปรแกรมของคุณเว้นแต่ว่ามันตั้งใจจะเป็นเครื่องมือสำหรับงานใดงานหนึ่ง ให้วิธีการชี้ไปที่ไฟล์ที่มีตัวเลือกตามปกติของฉันและให้ข้อโต้แย้งเพิ่มเติมเล็กน้อย
ไม่มีสัญญาณ 'พื้นเปียก'
หากคุณลักษณะบางอย่างอาจทำให้ผู้ใช้มีปัญหา (อาจเป็นเพราะมีผู้ใช้ขั้นสูง) ให้ทำเครื่องหมายอย่างชัดเจน นอกจากนี้หากมีคนใส่นิ้วมือหรือลืมบางสิ่งบางอย่างให้โปรแกรมพิมพ์ลิงค์ที่เป็นมิตรกับเอกสารออนไลน์ คุณอาจกำลังเผชิญกับคนที่ใช้โปรแกรมของคุณผ่านทาง KVM และไม่สามารถตัดและวางได้
เมื่อเป็นไปได้ (ตรงนี้กับการตรวจสอบการป้อนข้อมูล) ใช้ apporach ของ Google:
คุณหมายถึง foo --bar FILENME หรือคุณพิมพ์เฉพาะ foo --bar
เสนอวิธีออกจากคำแนะนำการทำลายล้าง
เป้าหมายคือเพื่อบอกผู้ใช้ว่าเหตุใดจึงไม่ทำงานและให้ผู้ใช้ลองอีกสองสามครั้งในขณะเดียวกันก็มั่นใจได้ว่าคุณไม่ได้ทำอะไรที่อาจทำลายล้างได้เว้นแต่จะปรากฏว่าผู้ใช้ต้องการให้คุณทำเช่นนั้น อนุญาตให้สวิตช์ที่ปิด 'จู้จี้' ตัวอย่างเช่น-Y
หรือ/Y
อนุญาตให้มีทางออกสำหรับคนที่มี 'นิ้วอ้วน'
ฉันอาจลืมตัวชี้ไม่กี่ ฉันจัดการกับปัญหานี้บ่อยครั้งเนื่องจากเป็นเรื่องยากมากที่จะสร้างส่วนต่อประสาน 'ระดับต่ำ' สำหรับบางสิ่งที่ใช้งานง่ายพอสำหรับคนส่วนใหญ่เพื่อหลีกเลี่ยงข้อผิดพลาด
"คุณแน่ใจหรือว่าต้องการลบไฟล์ / บันทึกนี้ใช่ / ไม่ใช่" คลิกใช่แล้วได้รับสายว่า "ผิดพลาด" คลิกปุ่มลบสีแดงและต้องการข้อมูลนั้นกลับ :)
ฉันไม่รู้สึกว่าการรับตัวแบ่ง / ตัวแก้ไขเฉพาะมีความสำคัญเท่ากับการตระหนักถึงสิ่งนี้:
หากผ่านการสำรวจพวกเขาทำลายบางสิ่งบางอย่างในฐานะโปรแกรมเมอร์มันเป็นงานของคุณที่จะเตือนพวกเขาถึงอันตรายหรือป้องกันไม่ให้เกิดขึ้นในสถานที่แรก ฉันจำไม่ได้ว่าตอนนี้ฉันเห็นที่ใด แต่ในใจฉันมักจะพยายาม " ทำให้สิ่งที่ถูกต้องเป็นเรื่องง่าย " สำหรับผู้ใช้ซอฟต์แวร์ของฉัน
หากคุณยืนยันตัวอย่าง:
ดูว่าจะเกิดอะไรขึ้น? :)
นี่คือสิ่งที่ฉันได้ยินในสัปดาห์นี้ ผู้ใช้ขอคุณสมบัติ "ส่งการแจ้งเตือนเมื่อมีเหตุการณ์เกิดขึ้น" ง่ายพอและนักพัฒนาเดินหน้าต่อไปและนำไปใช้ แน่นอนว่าคำถามแรกควรเป็น "สิ่งที่พยายามแก้ไขด้วยการแจ้งเตือนนี้" ฉันจะไม่เข้าไปในนั้น ไม่กี่วันต่อมาผู้ใช้หยุดโดยนักพัฒนาและถามว่า "ฉันได้รับการแจ้งเตือนนี้ฉันควรทำอย่างไรกับเรื่องนี้"
ฉันจำการ์ตูนของดิลเบิร์ตได้และแนะนำให้นักพัฒนา "เขียนแอพเพื่อหาว่าผู้ใช้ควรทำอย่างไรกับการแจ้งเตือนนั้น"
อย่างที่ mpeterson กล่าวผู้ใช้มีความสามารถในการแข่งขันสูงในด้านความเชี่ยวชาญ พวกเขาไม่คิดเหมือนนักพัฒนาซอฟต์แวร์หรือนักออกแบบ
ฉันไม่คิดว่าผู้ใช้จะโง่ พวกเขาไม่ต้องการใช้โปรแกรมของคุณหรือโปรแกรมใด ๆ เลย สิ่งที่พวกเขาต้องการคือการทำสิ่งต่างๆให้เสร็จ ช่วยเหลือพวกเขาและป้องกันอันตรายจากการเกิดขึ้นกับพวกเขาไปพร้อมกัน
การมีส่วนต่อประสานกับผู้ใช้ที่ดีและมอบประสบการณ์การเรียนรู้ที่เพียงพอจะช่วยป้องกันผู้ใช้จากการทำสิ่งที่ไม่ดี
ส่วนต่อประสานผู้ใช้ที่ดีควรไม่มีแรงเสียดทาน
แทนที่จะทิ้งกล่องโต้ตอบ (การดำเนินการที่มีราคาแพงและสิ่งที่ผู้ใช้เพิกเฉยหลังจากสักครู่) เพื่อยืนยันการลบทำการลบและเสนอวิธีการเลิกทำ
ส่วนติดต่อผู้ใช้ที่ดีควรค้นพบ
แม้ว่า ribbon ใน Microsoft Office จะได้รับสะเก็ดระเบิดจำนวนมากเพราะมันบังคับให้ผู้ใช้เก่าของ Word เปลี่ยนวิธีการของพวกเขาริบบิ้นเป็นตัวอย่างที่เปล่งประกายของวิธีที่คุณสามารถทำให้การค้นพบส่วนต่อประสาน (เช่นง่ายต่อการค้นพบ)
ส่วนต่อประสานผู้ใช้ที่ดีเช่นรหัสที่ดีควรอธิบายตนเองได้
ไม่มีใครอ่านคู่มือ คู่มือเดียวที่ฉันให้ผู้ใช้อ่านคืองานนำเสนอ PowerPoint ที่มีคำแนะนำแบบทีละขั้นตอนของซอฟต์แวร์ ฉันได้เห็นสิ่งเหล่านี้ทำด้วยเครื่องมือวิดีโอเช่น Camtasia แต่ PowerPoint นั้นดีกว่าเพราะคุณสามารถย้อนกลับไปข้างหน้าและข้างหน้าอย่างง่ายดาย
ผู้ใช้จะไม่ทำผิดพลาด ข้อผิดพลาดอยู่กับโปรแกรมเมอร์ที่ล้มเหลวในการสร้างส่วนต่อประสานที่ใช้งานได้
ดังนั้นทดสอบการใช้งานกับแต่ละรุ่น!