ความเรียบง่ายช่วยเพิ่มความสะดวกในการอ่านหรือไม่?
ผมจะบอกว่าอาจจะมีนิด ๆ หน่อย ๆ ของการโต้เถียงอย่างไม่
คุณสามารถส่งคลาสที่มีฟังก์ชันสมาชิก 200 รายการในส่วนต่อประสานสาธารณะและอาจเป็นส่วนต่อประสานสาธารณะสาธารณะที่อ่านง่ายที่สุด มันอาจจะเป็นความสุขเพียงแค่อ่านรหัสและเอกสารประกอบ อย่างไรก็ตามฉันจะไม่เรียกมันว่า "วิ" เพราะแม้จะมีการอ่านฉันจะต้องกังวลว่าฟังก์ชั่นทั้งหมดเหล่านี้ทำงานร่วมกันและอาจระวังกรณีขอบหากเกิดจากการใช้ผิดวิธี
ฉันต้องการคลาสที่มีฟังก์ชั่นสมาชิก 20 ฟังก์ชั่นที่ไม่ง่ายต่อการอ่านถึง 200 ที่เป็นเพราะ "ความสามารถในการอ่าน" นั้นไม่ใช่สิ่งที่สำคัญที่สุดสำหรับฉันในแง่ของการป้องกันข้อผิดพลาดของมนุษย์และปรับปรุงการบำรุงรักษาของรหัส เราสามารถเปลี่ยนได้คือ)
อย่างไรก็ตามนี่คือทั้งหมดที่จะขึ้นอยู่กับคำจำกัดความส่วนบุคคลของเราของ "ความเรียบง่าย" "การอ่าน" มักจะไม่แตกต่างกันว่าอย่างดุเดือดในหมู่พวกเราเว้นแต่คนที่มีความเชี่ยวชาญมากและความคล่องแคล่วที่พวกเขาพิจารณา regex ที่จะมาก "อ่าน" เช่นลืมที่เหลือของเราเพียงปุถุชน
ความง่าย
นานมาแล้วที่ฉันคิดว่า "simplicty" หมายถึง "ง่ายต่อการอ่านมากที่สุด" ดังนั้นฉันจะเขียนรหัส C พร้อมฟังก์ชั่นอำนวยความสะดวกมากมายพยายามปรับปรุงไวยากรณ์และทำให้การอ่านและเขียนง่ายที่สุดเท่าที่จะทำได้
ฉันออกแบบไลบรารีขนาดใหญ่ที่ร่ำรวยและสูงมากพยายามจำลองแบบฟังก์ชั่นสำหรับความคิดตามธรรมชาติของมนุษย์ทุกคน: ผู้ช่วยเหลือจากผู้ช่วยเหลือตามผู้ช่วยทั้งหมดนี้เพื่อกำหนดรหัสลูกค้าให้เป็นไวยากรณ์ที่อ่านง่ายขึ้น รหัสที่ฉันเขียนย้อนกลับไปนั้นอาจเป็น "ที่อ่านได้" มากที่สุด แต่ก็เป็น "ที่ไม่สามารถรักษาได้" และ "ซับซ้อน" ที่สุด
เสียงกระเพื่อม
แต่ฉันมีความหลงใหลสั้น ๆ กับ LISP ประมาณกลางทศวรรษที่ 90 (ผู้มาที่หลัง) มันเปลี่ยนความคิดทั้งหมดของฉัน "ความเรียบง่าย"
LISP ไม่ใช่ภาษาที่อ่านได้มากที่สุด หวังว่าไม่มีใครคิดว่าการแยก CDRs และ CARs ในขณะที่เรียกใช้ฟังก์ชั่นแบบเรียกซ้ำด้วยการโหลดวงเล็บซ้อนกันในวงเล็บนั้นเป็น "ที่อ่านได้" มาก
อย่างไรก็ตามหลังจากพยายามดิ้นรนเพื่อให้สมองของฉันล้อมรอบไวยากรณ์แปลก ๆ ของภาษาและวิธีการทำสิ่งที่เรียกซ้ำโดยสิ้นเชิงมันเปลี่ยนความคิดของฉันเกี่ยวกับความเรียบง่ายอย่างถาวร
สิ่งที่ฉันพบกับรหัสที่ฉันเขียนใน LISP คือฉันไม่ได้ทำผิดพลาดที่ละเอียดอ่อนอีกต่อไปแม้ว่าความยุ่งยากในการคิดแบบนั้นทำให้ฉันทำผิดพลาดมากขึ้นอย่างเห็นได้ชัด ฉันไม่ได้เข้าใจผิดว่าเกิดอะไรขึ้นกับฟังก์ชั่นการใช้งานและผลข้างเคียงที่ไม่คาดคิด ฉันแค่มีเวลาง่ายขึ้นโดยทั่วไปในการเปลี่ยนแปลงและเขียนโปรแกรมที่ถูกต้อง
หลังจาก LISP ความเรียบง่ายสำหรับฉันกลายเป็นเรื่องเกี่ยวกับความเรียบง่ายสมมาตรความยืดหยุ่นผลข้างเคียงที่น้อยลงฟังก์ชั่นที่น้อยลง แต่มีความยืดหยุ่นมากขึ้นซึ่งรวมเข้าด้วยกันในหลากหลายวิธี
ฉันมาชื่นชมความคิดที่ว่ารหัสที่น่าเชื่อถือที่สุดของทั้งหมดคือรหัสที่ไม่มีอยู่จริง ในขณะที่มันเป็นเพียงการวัดแบบหยาบ แต่ฉันก็มักจะเห็นความเป็นไปได้ของความไม่น่าเชื่อถือของโค้ดตามปริมาณของมัน การค้นหาความสะดวกสบายด้านการสร้างประโยคและความสะดวกในการอ่านนั้นมีแนวโน้มที่จะเพิ่มปริมาณนั้นด้วยปัจจัยขนาดใหญ่
minimalism
ด้วยความคิด LISP ที่ฝังอยู่ในตัวฉันทำให้ฉันชอบ API ที่เรียบง่ายที่สุด ฉันต้องการห้องสมุดที่มีฟังก์ชั่นที่ยืดหยุ่นน้อยลง แต่มีความน่าเชื่อถือและมีความยืดหยุ่นน้อยกว่าสะดวกกว่าและมีศักยภาพในการอ่านยากกว่าห้องสมุดที่มีผู้ช่วยที่ "สะดวก" และมีโค้ดที่ง่ายต่อการอ่าน ปัญหาที่มากขึ้นเกี่ยวกับความไม่น่าเชื่อถือและความประหลาดใจที่เกิดจากความเข้าใจผิดว่าหนึ่งในพันฟังก์ชั่นเหล่านี้ทำอะไร
ความปลอดภัย
สิ่งที่เกี่ยวกับ LISP ก็คือความปลอดภัย มันส่งเสริมผลข้างเคียงน้อยที่สุดและฟังก์ชั่นที่บริสุทธิ์และนั่นคือสิ่งที่ฉันไม่ได้เห็นว่าตัวเองทำผิดพลาดเล็กน้อยอีกต่อไปแม้ว่าความยากลำบากในการอ่านและการเขียนในภาษานั้นเพิ่มความผิดพลาดที่เห็นได้ชัดมากขึ้น
ฟังก์ชั่นที่บริสุทธิ์และสถานะที่ไม่เปลี่ยนรูปกลายเป็นสิ่งที่ดีกว่าสำหรับฉันเมื่อใดก็ตามที่ฉันสามารถจ่ายได้
sword = sharpen(sword)
... ตรงไปตรงมาน้อยกว่าและแยกออกจากความคิดของมนุษย์น้อยกว่า:
sharpen(sword)
VS การอ่าน ความง่าย
อีกครั้ง LISP ไม่ใช่ภาษา "อ่านง่าย" มากที่สุด มันสามารถบรรจุตรรกะจำนวนมากลงในส่วนเล็ก ๆ ของรหัส (อาจมากกว่าหนึ่งความคิดของมนุษย์ต่อบรรทัด) ฉันมักจะชอบความคิดของมนุษย์หนึ่งคนต่อบรรทัดสำหรับ "ความสามารถในการอ่าน" แต่มันไม่จำเป็นสำหรับ "ความเรียบง่าย"
ด้วยคำจำกัดความแบบ "เรียบง่าย" บางครั้ง "เรียบง่าย" อาจแข่งขันกับ "อ่าน" ได้บ้าง สิ่งนี้กำลังพิจารณาสิ่งต่าง ๆ เพิ่มเติมจากมุมมองการออกแบบอินเตอร์เฟส
อินเทอร์เฟซที่เรียบง่ายหมายความว่าคุณจำเป็นต้องเรียนรู้สิ่งต่าง ๆ ที่จะใช้น้อยลงและอาจมีความน่าเชื่อถือที่มากขึ้น เอกสารที่ครอบคลุมเกี่ยวกับเรื่องนี้อาจเหมาะกับหนังสือเล่มเล็ก ๆ มากกว่าหนังสือจำนวนมาก อย่างไรก็ตามมันอาจต้องใช้งานเสี้ยงฮึดฮัดแสดงความไม่พอใจและให้โค้ดที่อ่านได้น้อยลง
"ง่าย" สำหรับฉันปรับปรุงความสามารถของเราในการทำความเข้าใจการทำงานในระบบของเราในระดับกว้าง "สามารถอ่านได้" สำหรับฉันช่วยปรับปรุงความสามารถของเราในการเชื่อมต่อโค้ดขนาดเล็กแต่ละบรรทัดกับภาษาธรรมชาติและความคิดและอาจเพิ่มความเร็วในการทำความเข้าใจเกี่ยวกับสิ่งที่โค้ดหนึ่งบรรทัดทำได้โดยเฉพาะอย่างยิ่งถ้าเราไม่ชำนาญภาษา
Regex เป็นตัวอย่างของสิ่งที่ฉันพิจารณาว่า "ง่ายมาก" มัน "ง่ายเกินไปและอ่านไม่ได้" สำหรับรสนิยมส่วนตัวของฉัน มีการกระทำที่สมดุลสำหรับฉันระหว่างสุดขั้วเหล่านี้ แต่ regex มีคุณภาพเหมือน LISP ที่เรียบง่ายตามที่ฉันกำหนดไว้: ความเรียบง่ายสมมาตรสมมาตรความยืดหยุ่นอย่างไม่น่าเชื่อความน่าเชื่อถือ ฯลฯ ปัญหาสำหรับฉันกับ regex คือมันง่ายมาก กลายเป็นอ่านไม่ได้จนถึงจุดที่ฉันไม่คิดว่าฉันจะคล่องแคล่ว (สมองของฉันก็ไม่ทำงานอย่างนั้นและฉันอิจฉาคนที่สามารถเขียนรหัส regex ได้อย่างคล่องแคล่ว)
ดังนั้นความหมายของคำว่า "ความเรียบง่าย" ของฉันและมันก็เป็นอิสระจาก "การอ่าน" และบางครั้งอาจยุ่งเกี่ยวกับสิ่งอื่นที่นำไปสู่การกระทำที่สมดุลระหว่างห้องสมุดที่มีความสะดวกสบายมากขึ้น "syntactically" และอ่านได้ ไม่สะดวก "ไม่สามารถอ่านได้ แต่มีขนาดเล็กลง ฉันมักจะพบว่า "การอำนวยความสะดวกในการทำความเข้าใจ" ที่แท้จริงและลำดับความสำคัญ "การบำรุงรักษา" ที่แท้จริงเพื่อให้สอดคล้องกับสิ่งหลังด้วยความพึงพอใจอย่างมากต่อการใช้งานแบบเรียบง่ายแม้ในบางครั้งค่าใช้จ่ายต่อการอ่าน . YMMV