การใช้คำฟุ่มเฟื่อยเป็นแนวโน้มที่จะใช้ข้อความจำนวนมากและ Terseness การใช้ข้อความน้อยมาก ...
การใช้คำฟุ่มเฟื่อยไม่ดีเพราะ:
- มันแนะนำโอกาสเพิ่มเติมสำหรับข้อผิดพลาดในการพิมพ์
- มันทำให้การอ่านโค้ดบนหน้าจอหรือกระดาษทำได้ยากขึ้นและ / หรือป้อนบน punchcard
- นี่จะเป็นการเพิ่มเวลาดีบัก
- ทำให้เข้าใจโค้ดสำหรับการอัพเกรด / บำรุงรักษาได้ยากขึ้น
- ซึ่งอาจนำไปสู่การทำสำเนารหัสโดยไม่ตั้งใจ
- มันเพิ่มโอกาสของข้อผิดพลาดทางไวยากรณ์บ้าง
- มันลดความยืดหยุ่นในการเขียนโค้ดซึ่งในภาษา verbose ส่วนใหญ่มีโครงสร้างสูงและไม่มีวิธีการพูดที่เหมือนกันหลายวิธี
- มันเพิ่มการเข้ารหัสและเวลาการรวบรวม
- มันสามารถใช้พื้นที่เก็บข้อมูลเพิ่มเติม
การใช้คำฟุ่มเฟื่อยในระดับหนึ่งเป็นสิ่งจำเป็นสำหรับความชัดเจน ...
ระดับของ Verbosity ที่น้อยที่สุดนั้นดีเพราะ:
- มันง่ายสำหรับมนุษย์ที่จะอ่านและแนบค่าความหมายกับรหัสสัญลักษณ์ล้วนๆ
- ในการตั้งชื่อตัวแปรและฟังก์ชั่นทำให้ง่ายต่อการดีบักพอร์ตและบำรุงรักษาโค้ด
- ในการดำเนินงานภาษาระดับพื้นฐานและคำหลักของภาษาที่ซับซ้อนจะนำไปสู่การมอบหมายการทำงาน / คำหลักที่ไม่ถูกต้องน้อยลง
ตัวอย่างที่ยอดเยี่ยมบางคำสั่งที่สั้นเกินไปสำหรับคนจำนวนมากรวมถึง standbys พื้นฐานของval(x$)
, str$(x)
และchr$(x)
... คืนค่าจำนวนจากการแทนค่าสตริง, ส่งคืนสตริงสำหรับตัวเลขและส่งคืนอักขระเดี่ยวที่มีค่า ascii x เป็นสตริง
หรือตัวชี้ C / C ++ และโดยผู้อ้างอิง&
และ*
เปรียบเทียบกับbyref
คำหลักพื้นฐาน ใน C / C ++ ฉันสามารถมีตัวแปร X และส่งต่อตัวชี้ไปยังตัวแปรนั้น แต่ฉันต้องจำว่าตัวชี้คืออะไรและตัวไหนคือ "ใช้ตัวชี้เป็นตัวแปรที่ชี้ไปที่"; โดยพื้นฐานแล้วฉันแค่ส่งการอ้างอิงด้วยคำสำคัญ byref ในการเรียกใช้ฟังก์ชันซึ่งชัดเจนมากขึ้น แต่ยืดหยุ่นน้อยกว่า:
def fn Foo(x byref as float) foo= (x += x+1)
...
Foo(x)
ในรหัสนี้เนื้อหาของ x จะถูกปรับเปลี่ยนเนื่องจากแฟล็ก byref รสชาติบางอย่างอนุญาตให้มีการพูดคุยแบบไม่ผ่านสายขณะที่บางคนอาจให้คำจำกัดความ
คำฟุ่มเฟื่อยเป็นสิ่งสำคัญสำหรับโปรแกรมเมอร์ชั่วคราวเพื่อให้สามารถใช้สัญลักษณ์ได้ง่ายขึ้น; พื้นฐานหรือหลามเป็นมนุษย์อ่านได้มากขึ้นและ verbose มากกว่า C / C ++ และมีประโยชน์มากขึ้นสำหรับโปรแกรมเมอร์ทั่วไป; terseness ของ C / C ++ ทำให้ดีขึ้นมากสำหรับโปรแกรมเมอร์ที่มีประสบการณ์มากขึ้นซึ่งต้องการเห็นโค้ดเพิ่มเติมและโค้ดที่ซับซ้อนมากขึ้นในหน้าจอเดียว แต่ต้องเรียนรู้หลักการโครงสร้างสัญลักษณ์ต่างๆ ณ สิ้นสุดคือ APL ซึ่งเกือบจะเป็นมนุษย์ที่อ่านไม่ได้อย่างสมบูรณ์
ปัญหาที่เกี่ยวข้องอย่างใกล้ชิดคือความชัดเจน - รหัสสั้นมักจะไม่ชัดเจนและรหัส verbose มากเกินไป (เช่นใน AppleScript) อาจไม่ชัดเจนเท่ากัน ความคุ้นเคยกับภาษาที่กำหนดจะเพิ่มความชัดเจนของ terse code ในภาษานั้น - ผู้เริ่มต้นแบบดิบการเผชิญหน้ากับรหัส C ++ นั้นมีแนวโน้มที่จะสามารถแยกวิเคราะห์เฉพาะสูตรและแม้แต่รหัส BASIC หรือ Python ที่ใช้งานได้มากเกินไป งงงวยโดยทั่วไปโดยไม่ต้องขอความช่วยเหลือจากพจนานุกรมภาษา สิ่งที่ฉันพบน้อยที่สุดโดยไม่ทำให้งงโดยเจตนาคือแจ้ง 7 ...
ในสมัยก่อน
การพิจารณาที่สำคัญอีกอย่างหนึ่งในอดีต แต่สิ่งที่ไม่สำคัญสำหรับ coder งานอดิเรกอีกต่อไปคือการใช้งานและพื้นที่เก็บข้อมูล (มันยังคงมีความสำคัญในระดับสูง) โปรดทราบว่าหลาย ๆ ภาษาถูกตีความโดยเฉพาะอย่างยิ่งรสชาติพื้นฐานและอีกหลายภาษาได้รวบรวมเวลาใช้งานรหัสพื้นที่มีความสำคัญโดยเฉพาะอย่างยิ่งเมื่อดิสก์มีขนาด 128KiB เท่านั้น
มีหลายวิธีแก้ปัญหา - โทเค็นไลเซชันเป็นเรื่องธรรมดามากในเบสิก คำหลักแต่ละภาษาถูกลดขนาดเป็น 1 หรือ 2 ไบต์ใน 128 ตัวบนหรือพื้นที่อักขระควบคุม โทเค็นไลเซชั่นนำไปสู่การรวบรวม bytecode (ตามที่แจ้งและ Z-Machine)
การรวบรวมและการลิงก์ไฟล์อ็อบเจ็กต์หลายรายการยังใช้เพื่อ จำกัด พื้นที่ ส่วนรหัสปาสคาล 100KiB อาจรวบรวมเพียง 5KiB; ด้วยการเชื่อมโยงไฟล์ที่คอมไพล์หลายไฟล์เราสามารถสร้างแอปพลิเคชั่นขนาดใหญ่ได้โดยไม่ต้องเข้าถึงไดรฟ์รูปแบบขนาดใหญ่ (จำได้ว่า 10MiB มีขนาดใหญ่อย่างน่าประหลาดใจ
ภาษาที่สั้นกว่านี้มีโค้ดมากกว่าหนึ่งอันในทั้งดิสก์และหน่วยความจำและทำให้คอมไพล์ชิ้นใหญ่ขึ้นในแต่ละครั้ง โปรดทราบ: "minicomputers" ของต้นปี 1970 อาจมี ram 64KiB เท่านั้น (Honeywell 800 มีการติดตั้งพื้นฐานของธนาคาร 4 แห่งแต่ละแห่งมี 208 คำจาก 8B แต่ละแห่ง) APL และภาษาสัญลักษณ์ที่คล้ายคลึงกันเข้าหา 1B ต่อการเรียนการสอนบวกตัวถูกดำเนินการเมื่อเทียบกับ 3B-10B ที่มีขนาดใหญ่กว่าต่อคำสั่งรวมทั้งตัวถูกดำเนินการ (มันเป็นฝันร้ายที่ต้องพิมพ์ลงบน punchcards โดยเฉพาะอย่างยิ่งเมื่อสัญลักษณ์เป็นตัวอักษรบนตัวพิมพ์บอลและ cardpunch จำนวนมากไม่มีสัญลักษณ์บนแป้น ... )
นอกจากนี้โปรดทราบว่าการ์ดไม่สามารถลบได้ ... และมีการป้อนโปรแกรมจำนวนมากบนการ์ด ในขณะที่ไม่ได้มีราคาแพงทีละตัว แต่ยิ่งรหัสของคุณบีบอัดอยู่บนการ์ดมากเท่าไหร่คุณก็ยิ่งต้องการน้อยลงเท่านั้นและยิ่งโปรแกรมมีขนาดใหญ่ขึ้น นี่เป็นส่วนหนึ่งของเหตุผลที่ BASIC มีการเชื่อมคำสั่งหลายคำสั่งต่อบรรทัดในรสชาติส่วนใหญ่ - ได้รับการแนะนำให้รู้จักกับการบันทึกบนการ์ดเจาะ (หรือว่าข้อความการเขียนโปรแกรม Vax Basic ของฉัน) ในขณะที่ฉันไม่ได้ตั้งโปรแกรมสำหรับเครื่องอ่านบัตรฉันได้ทำการเจาะการ์ดสำหรับ Honeywell 800 ในภาษา FORTRAN, BASIC, APL และภาษาสัญลักษณ์อื่น ๆ อีกสองสามภาษา