ศึกษาเกี่ยวกับความกว้างของรหัสที่ดีที่สุด?


131

หากคุณเปิดใช้งาน "มุมมองระยะขอบขวา" ใน IDE ที่คุณเลือกเป็นไปได้ว่าจะมีค่าเริ่มต้นเป็น 80 อักขระ ฉันมักจะเปลี่ยนเป็น 120 โดยไม่มีเหตุผลอื่นนอกจากมาตรฐานที่ บริษัท ฉันอยู่เมื่อไม่กี่ปีก่อนและไม่มี บริษัท อื่นที่บอกให้ฉันทำมันแตกต่าง

คำถามของฉันคือมีการศึกษาใดบ้างที่แสดงตัวอักษร 80 ตัวว่าเป็นความกว้างสูงสุดที่เหมาะสมที่สุดสำหรับการอ่านโค้ดหรือค่านี้เป็นเพียง "นั่นคือวิธีที่มันเป็นมาตลอด" และไม่มีใครรู้ว่าทำไมมันถึงเป็นเช่นนั้น? และความกว้างของบรรทัดรหัสควรเป็นส่วนหนึ่งของมาตรฐานการเข้ารหัสของคุณหรือไม่


1
ในขณะที่ฉันไม่ทราบการศึกษาใด ๆ คุณจะพบความคิดเห็นมากมายเป็นคำตอบสำหรับคำถามนี้: * มีเหตุผลที่ถูกต้องสำหรับการบังคับใช้ความกว้างสูงสุด 80 อักขระในไฟล์รหัสวันนี้หรือไม่
Adam Bellaire

3
ไม่มีการศึกษาที่ฉันรู้ แต่คุณอาจพบว่ามันน่าสนใจที่จะดูมาตรฐานการเข้ารหัสโครงการที่แตกต่างกัน ตัวอย่างเช่นของ Google มี 80 ตัวอักษร ( code.google.com/p/google-styleguide ) ที่ WebKit (ala Apple หรือไม่) ไม่มีข้อ จำกัด AFAIK ( webkit.org/coding/coding-style.html ) ปรากฏ Mozilla เพื่อเป็น 80 ( developer.mozilla.org/En/Mozilla_Coding_Style_Guide#Line_length )
G-Man

มันเหมือนกับเหตุผลที่เราสะกดว่า "Bureaucrat" ในแบบที่เราทำ เพราะนานมาแล้วมีคนกำหนดมาตรฐานด้วยเหตุผลที่อาจหรืออาจไม่สมเหตุสมผลในเวลานั้น สำหรับการสะกดคำนั้นเป็นเรื่องที่น่าสงสัยอย่างมากกับละตินสำหรับรหัสขนาดของการ์ดเจาะกระดาษ จากนั้นวิธีหนึ่งมีการระบุว่า "ถูกต้อง" และระบบราชการอนุได้รับการบังคับใช้มาตรฐานนับตั้งแต่
Tuntable

คำตอบ:


116

จริงๆแล้วสิ่งที่ 80 คอลัมน์นำหน้า DOS มานาน มันมาจากการเจาะการ์ดซึ่งเป็นอุปกรณ์ 80 คอลัมน์

และเพื่อตอบคำถามของ OP นั้น "การศึกษา" หนึ่งเรื่องได้เกิดขึ้นประมาณ 600 ปีแล้ว - หนังสือที่ตีพิมพ์ สิ่งเหล่านี้มีวิวัฒนาการมานานหลายศตวรรษโดยคำนึงถึงความสามารถในการอ่านเร็วที่สุดจนถึงจุดที่เราอยู่ในขณะนี้ที่ความยาวบรรทัดโดยเฉลี่ยสำหรับข้อความอยู่ที่ประมาณ 60 ตัวอักษร ดังนั้นเพื่อความสะดวกในการอ่าน


85
ฉันไม่เชื่อว่าคุณสามารถเปรียบเทียบการอ่านภาษาธรรมชาติกับการอ่านภาษาโปรแกรมในแง่ของการใช้งาน
Frug

25
@Frug - จริง ๆ แล้วคุณสามารถทำได้ เหตุผลสำหรับความกว้าง 65 ตัวอักษรนั้นไม่สามารถอ่านได้เพราะเส้นใหญ่ไม่สามารถอ่านได้ แต่มันเป็นส่วนโค้งที่แคบเกินไปเมื่อดวงตาเคลื่อนไปยังบรรทัดถัดไป คุณสามารถหลีกเลี่ยงสิ่งนี้ได้โดยการเพิ่มความสูงของเส้น แต่นั่นทำให้การใช้ระยะห่างแบบบล็อกยากขึ้นในการสื่อความหมายดังนั้นอาจเป็นเรื่องที่ควรหลีกเลี่ยงใน IDE
Jimmy Breck-McKye

32
@Jim - ภาษาธรรมชาติของฉันไม่มีคำที่มี 30 ตัวอักษร (ไม่ใช่ที่ฉันใช้อยู่แล้ว) และแยกวิเคราะห์แตกต่างจากภาษาโปรแกรมอย่างสิ้นเชิง คุณมักจะสามารถจัดกลุ่มบรรทัดของรหัสแยกออกจากส่วนที่เหลือไม่ว่าจะเป็นเงื่อนไขแบบยาวหรือการรวมกันของวิธีการและชั้นเรียนแบบยาว รวมสิ่งนี้เข้ากับการเยื้องและการเปรียบเทียบระหว่างสองภาษาจะไร้สาระ ฉันไม่สงสัยเลยว่าใครก็ตามที่เรียนการอ่านทางวิทยาศาสตร์และความยาวบรรทัดจะคัดค้านการล้างของคุณมากกว่าความแตกต่าง
Frug

10
@Fugug - ฉันไม่เห็นจริง ๆ ว่าการคัดค้านของคุณเกี่ยวข้องกับการอ้างสิทธิ์ใด ๆ ที่ฉันทำ แต่ฉันเห็นได้ว่าการเยื้องนั้นหักโมเดลที่ฉันเสนอ อย่าเรียกฉันว่า 'จิม'
Jimmy Breck-McKye

17
โดยทั่วไปแล้วหนังสือจะอยู่ใกล้กับดวงตามากกว่าจอแสดงผลซึ่งหมายความว่าอนุญาตให้ตัวอักษรต่อบรรทัดน้อยลงหากผู้อ่านสามารถอ่านหนังสือได้โดยไม่ต้องขยับคอ โดยทั่วไปแล้วหน้าจอจะไม่วางที่ระยะทางของหนังสือซึ่งหมายความว่าสามารถใช้อักขระต่อบรรทัดได้มากขึ้นในขณะที่อยู่ในขอบเขตของมุมสายตาสูงสุด นอกจากนี้โค้ดไม่ได้อ่านมากเท่ากับที่อ่านแล้วทำให้ความกว้างนี้มีความสำคัญน้อยลง I (YMMV) สามารถติดตามบรรทัดที่มีรหัส 120 ตัวอักษรบนหน้าจอแล็ปท็อปของฉันได้ แต่นี่กว้างเกินไปสำหรับบัฟเฟอร์ emacs 2 ตัวบนแล็ปท็อปขนาด 15 นิ้วของฉัน
Obscaenvs

104

มีความเมตตาต่อโปรแกรมเมอร์ที่ต้องบำรุงรักษาซอฟต์แวร์ของคุณในภายหลังและยึดได้สูงสุด 80 ตัวอักษร

เหตุผลที่ชอบ 80:

  • อ่านได้ด้วยตัวอักษรขนาดใหญ่บนแล็ปท็อป

  • เว้นพื้นที่สำหรับการวางสองรุ่นเคียงข้างกันสำหรับการเปรียบเทียบ

  • เว้นพื้นที่สำหรับมุมมองการนำทางใน IDE

  • พิมพ์โดยไม่ทำลายเส้นโดยพลการ (เช่นเดียวกับอีเมลเว็บเพจ ... )

  • จำกัดความซับซ้อนในหนึ่งบรรทัด

  • จำกัด การเยื้องซึ่งจะจำกัดความซับซ้อนของวิธีการ / ฟังก์ชัน

ใช่ควรเป็นส่วนหนึ่งของมาตรฐานการเข้ารหัส


10
นี่เป็นเหตุผลที่ดีในการรักษาความกว้างของบรรทัดไว้ที่ 80 อักขระหรือน้อยกว่า ฉันประหลาดใจจริงๆ (ผิดหวัง) ที่คำตอบของคุณซึ่งคิดออกมาอย่างถูกต้องและชัดเจนนั้นไม่ได้รับคะแนนมากขึ้น ในรายการนี้ฉันจะเพิ่ม: (1) การเลื่อนในแนวนอนไม่ใช่เรื่องสนุก (2) คุณสามารถเพิ่มความหนาแน่นของรหัสที่คุณกำลังทำอยู่ได้อย่างมากโดยการดูรหัสนั้นในหลาย colums ธุรกิจอสังหาริมทรัพย์จำนวนมากต้องสูญเปล่าเมื่อคุณมีไม่กี่บรรทัดที่ขยายไปทางขวาเมื่อสายอื่น ๆ ส่วนใหญ่ทำไม่ได้
Donnie Cameron

4
ตกลง แต่จะเกิดอะไรขึ้นเมื่อมีรหัสบล็อกที่มีการเยื้องน้อย ที่เกิดขึ้นกับฉันและ 80 ตัวอักษรไม่สนุกเลย
EKanadily

14
Limits the complexity in one lineฉันไม่แน่ใจว่าทำไมการกระจายความซับซ้อนข้ามหลายบรรทัดจึงดีกว่า มันเพิ่มแรงใจให้กับกองจิตของคุณมากขึ้น
Jonathan

4
นี่เป็นหัวข้อที่เก่ามาก แต่คุณยังเห็นด้วยในตอนนี้ว่านักพัฒนาซอฟต์แวร์จำนวนมากใช้จอภาพ 27 นิ้ว :-) ฉันหมายถึงถ้าการมองเห็นเป็นปัญหาหน้าจอที่ใหญ่ขึ้นสามารถช่วยได้ 8 ปีที่แล้วเรายังคงทำงานกับจอภาพ 17 หรือ 20 นิ้วและบางส่วนในความละเอียด 4: 3 แม้
Mathijs Segers

1
@MathijsSegers โดยไม่คำนึงถึงขนาดจอภาพหรือความละเอียดก็ยังคงสะดวกสบายมากขึ้นที่จะเก็บข้อความไว้ในระดับกลาง 30 องศาของการมองเห็นของคุณ เมื่อทำงานกับหน้าต่างหลายบานที่เปิดในหน้าจอแบบเคียงข้างกันฉันมักจะหันหัวมองจากที่หนึ่งไปอีกที่หนึ่ง บุคคลไม่ควรหันหัวของเขาหรือหมุนตาไปตลอดทางเพื่ออ่านจากปลายด้านหนึ่งไปอีกด้านหนึ่ง การหมุนตาหรือหัวอย่างรวดเร็วมากอาจทำให้เกิดอาการรู้สึกหมุนหากทำทุกวัน
อริซ

41

ฉันไม่ได้เรียน แต่จะเล่าประสบการณ์ของฉัน

ฉันพบว่าการเลื่อนในแนวนอนนั้นน่าเบื่อเมื่อต้องจัดการกับข้อความ ฉันดูสภาพแวดล้อมที่จะใช้รหัสและกำหนดมาตรฐานความกว้างตามบริบทนั้น

ตัวอย่างเช่นเมื่อฉันทำงานใน Emacs บน XWindows มันทำงานได้ดีที่มีหน้าต่าง Emacs 2 เครื่องเคียงข้างกันตลอดเวลา นั่น จำกัด ไว้ที่ 80 ตัวอักษรนั่นคือความยาวสูงสุดของฉัน

ถึงจุดหนึ่งฉันทำงานใน Visual Studio บนหน้าจอ 1920x1200 ฉันจะทำให้มันขยายใหญ่สุดด้วยหน้าต่างเครื่องมือทั้งหมดเชื่อมต่อลงด้านหนึ่ง มีที่ว่างเหลือพอสำหรับหน้าต่างตัวแก้ไขสองตัวแบบเคียงข้างกันที่ประมาณ 100 ตัวอักษร

ฉันยังพบว่าเส้นที่ยาวที่สุดมาจากสายวิธีการที่มีรายการพารามิเตอร์ยาว นี่คือบางครั้งกลิ่นรหัส : อาจจะเป็นวิธีการที่ควรจะrefactored

หากคุณและโปรแกรมเมอร์ของคุณมีหน้าจอความละเอียดสูงและสายตาที่คมชัดโดยทั้งหมดใช้ตัวอักษรขนาดเล็กและเส้นยาว ในทางกลับกันคุณอาจต้องการเส้นสั้น


1
บวกหนึ่งสำหรับ "ดวงตาแหลม" เพราะจริง ๆ แล้วสิ่งที่เกิดขึ้นกับฉัน
EKanadily

26

ปกติฉันใช้ 120-150 เว้นแต่ บริษัท จะอธิบายเป็นอย่างอื่น อย่างไรก็ตามมันขึ้นอยู่กับประเภทของรหัสด้วย:

  • ฉัน (เกือบ) ไม่เคยใช้หลายคำสั่งในหนึ่งบรรทัด
  • ฉันใช้เส้นยาวเท่านั้น (> 12) เฉพาะเมื่อเส้นที่มีลักษณะคล้ายกันสามารถจัดเรียงและไม่ขาด
  • ฉันมักจะใช้ช่องว่าง / วงเล็บปีกกาเพียงพอ ฯลฯ
  • ฉันชอบชื่อตัวแปรที่ยาวกว่าด้านบนชื่อที่สั้นกว่า

เมื่อไม่กี่ปีที่ผ่านมาฉัน จำกัด ไว้ที่ 100 แต่ตอนนี้ปกติใช้ widescreens และจอภาพความละเอียดสูง 120 สามารถเห็นได้บนแล็ปท็อป

การเปรียบเทียบหน้าจอกับหนังสือนั้นไม่ค่อยดีนักเนื่องจากหนังสือมีพื้นที่แนวตั้งมากกว่าและหน้าจอมีพื้นที่แนวนอนมากกว่า ฉันพยายามที่จะรักษาฟังก์ชั่นสูงสุดเสมอ หน้าจอหนึ่งที่มองเห็นได้ยาว


6
120-150 ตัวอักษรต่อบรรทัดทำงานอย่างไรกับการเปิดหลาย ๆ หน้าต่างแบบเคียงข้างกัน คุณเปิดหน้าต่างตัวแก้ไขรหัสไว้หลายตัวพร้อมกันหรือไม่ - บนจอ 30 '' ของฉันฉันสามารถมี 3 windows เคียงข้างกันถ้าฉัน จำกัด บรรทัดของฉันถึง 97 ตัวอักษร / บรรทัด
KajMagnus

1
ฉันเขียนโค้ดบนจอแสดงผลขนาดใหญ่และฉันก็ชอบจำนวนที่มากขึ้นด้วย ฉันตั้งเป้าไว้ที่ 110-130 หนึ่งในเป้าหมายหลักของฉันคือการอ่านและแยกงบออกเป็น 2-3 บรรทัดบางครั้งฉันก็อ่านน้อยลง บางครั้งฉันก็จะไปที่ 500-1,000 เพื่อซ่อนขยะที่ฉันไม่ต้องการเห็นเช่นความคิดเห็นรหัสการปิดการใช้งานและค่าฮาร์ดโค้ดบางอย่าง ฉันคิดว่ามันขึ้นอยู่กับโปรแกรมเมอร์ด้วย หาก coders ส่วนใหญ่ทำงานที่ 80 ดังนั้นวิธีที่ดีที่สุดในการทำงานกับรหัสที่ใช้ร่วมกัน
Sunsetquest

10

บางทีตัวละคร 80 ตัวก็เป็นจุดที่ดีในการหลีกเลี่ยงกลุ่มผู้ทะเลาะกัน

object.getFoo().getBar().getFooBar().get ...

ถ้าคุณ จำกัด ไว้ที่ 80 ตัวอักษรบางทีใครบางคนอาจ จำกัด วงตัวแปรเหล่านี้และตรวจสอบค่า null ฯลฯ แต่โปรแกรมเมอร์ส่วนใหญ่อาจปล่อยให้มันห่อในแถวถัดไป ฉันไม่รู้

นอกจากนั้น 80 ตัวอักษรก็เยี่ยมยอดเมื่อพูดถึงสีฟ้า สิ่งนี้ควรเข้าสู่มาตรฐานการเข้ารหัสอย่างไม่เหมาะสม


5
FYI วิธีการผูกมัดมากเกินไปเช่นนี้เป็นที่รู้จักกันเป็นซากรถไฟต่อต้านรูปแบบ
Dennis

4

โดยไม่คำนึงถึงข้อ จำกัด ของฮาร์ดแวร์และความแตกต่างใด ๆ ในวิธีที่เราอ่านโค้ดกับภาษาธรรมชาติฉันเห็นเหตุผลหลักสามประการในการ จำกัด บรรทัดไว้ที่ประมาณ 80 ตัวอักษร

  1. ดวงตาของมนุษย์อยู่รอบไม่ได้จริงๆแคบลงและกว้างและมากที่สุดของการแก้ปัญหาของพวกเขาอยู่ตรงกลาง เมื่ออ่านหลายชั่วโมงในแต่ละครั้งจะสะดวกสบายมากขึ้นในการกวาดสายตาในส่วนโค้งสั้น ๆ โดยใช้แถบเลื่อนหนึ่งแถบตามต้องการ ฉันไม่รู้การศึกษาอย่างเป็นทางการเฉพาะเกี่ยวกับความชัดเจนของรหัส แต่จากการสังเกตของฉันเองด้วยจอมอนิเตอร์ขนาด 2 ฟุตโดยมีขนาดตัวอักษรเป็นแบบอักษรโมโนโพสต์ 10 พอยต์ 100 ตัวอักษรใช้พื้นที่ประมาณ 1/3 ของแนวนอน ของการมองเห็นหรือประมาณ 60 องศา ( ด้านนอกของ 30 องศาหรือที่ความละเอียดตาทั้งหมดของเราอยู่ที่ )
  2. คนส่วนใหญ่ใช้จอมอนิเตอร์ขนาดใหญ่ในที่ทำงานเพื่อให้สามารถมองเห็นสิ่งต่าง ๆ ได้โดยไม่ต้องคลิกไปมาไม่ใช่เพื่อที่พวกเขาจะได้เห็นสิ่งหนึ่งที่ยิ่งใหญ่จริงๆ
  3. เส้นที่สั้นกว่ามีความซับซ้อนน้อยกว่าซึ่งหวังว่าจะเป็นการบังคับให้นักพัฒนาเลิกทำโค้ดของตนให้เป็นหน่วยย่อยได้มากขึ้น

3

ฉันจำได้อย่างชัดเจนว่าอ่านที่ไหนสักแห่ง (ฉันคิดว่ามันเป็นในAgile Documentation ) เพื่อความสะดวกในการอ่านที่ดีที่สุดความกว้างของเอกสารควรเป็นตัวอักษรประมาณสองตัวหรือประมาณ 60-70 ตัวอักษร ฉันคิดว่าความกว้างของเส้นเทอร์มินัลเก่ามาจากกฎการพิมพ์เก่า


3

ตัวเลือกระยะขอบด้านขวามีจุดประสงค์เพื่อแสดงความกว้างของหน้ากระดาษหากคุณต้องการพิมพ์รหัสและโพสต์ก่อนหน้านี้บอกว่าตั้งไว้ที่ 80 เพราะนั่นคือสิ่งที่ความยาวของบรรทัดในอดีตเป็น GUI ก่อนย้อนหลัง บัตร

ฉันได้เห็นคำแนะนำในบล็อกบางรายการเมื่อเร็ว ๆ นี้ (จำไม่ได้ว่าบล็อกอะไร) เพื่อเพิ่มขนาดตัวอักษร IDE ของคุณเพื่อปรับปรุงคุณภาพของรหัสตรรกะที่อยู่เบื้องหลังก็คือถ้ารหัสน้อยพอดีกับหน้าจอคุณจะเขียนเส้นสั้นลงและ ฟังก์ชั่น shouter

ในความคิดของฉันบรรทัดที่สั้นกว่าทำให้การอ่านโค้ดและการดีบักง่ายขึ้นดังนั้นฉันจึงพยายามทำให้เส้นสั้น ๆ ถ้าคุณต้องตั้งค่าขีด จำกัด เพื่อให้ตัวเองเขียนโค้ดได้ดีขึ้นจากนั้นเลือกสิ่งที่เหมาะกับคุณ - ถ้าคุณมีประสิทธิผลมากขึ้นด้วย บรรทัดที่ยาวกว่าสามารถเพิ่มขนาดหน้าและรหัสได้เฉพาะบนหน้าจอกว้าง


1

ในขณะที่บางคนได้ชี้ให้เห็นในคำตอบอื่น ๆ เหตุผลสำหรับการ จำกัด จำนวนอักขระ 80 ตัวนั้นเป็นส่วนหนึ่งในประวัติศาสตร์ (การ์ดเจาะหน้าจอขนาดเล็กเครื่องพิมพ์ ฯลฯ ) และบางส่วนทางชีวภาพ (เพื่อติดตามว่าคุณอยู่ในแนวไหน บรรทัดโดยไม่จำเป็นต้องหมุนหัว)

ที่กล่าวว่าโปรดจำไว้ว่าเรายังคงเป็นมนุษย์และเราสร้างเครื่องมือเพื่อแก้ไขข้อ จำกัด ของเราเอง ฉันเสนอให้คุณเพิกเฉยต่อการอภิปรายทั้งหมดเกี่ยวกับข้อ จำกัด ของตัวละครและเพียงแค่เขียนสิ่งที่สมเหตุสมผลโดยไม่คำนึงถึงความยาวของพวกเขาและใช้ IDE หรือโปรแกรมแก้ไขข้อความที่สามารถช่วยคุณติดตามบรรทัดได้อย่างถูกต้อง การใช้อาร์กิวเมนต์เดียวกันสำหรับการเยื้องในการอภิปรายแท็บเทียบกับช่องว่างเช่นเดียวกับความกว้างของการเยื้องที่ฉันควรเสนอให้คุณใช้เครื่องหมายการเยื้อง ตามที่พวกเขาพบว่าสะดวกสบายที่สุดสำหรับพวกเขา

การใช้จำนวนอักขระต่อบรรทัดคงที่จะทำให้ทุกคนแย่ลงยกเว้นกลุ่มเป้าหมาย ที่กล่าวว่าหากคุณจะไม่เปิดเผยรหัสเลย ถ้าอย่างนั้นก็ไม่มีเหตุผลที่จะต้องเริ่มการสนทนานี้ หากคุณต้องการแบ่งปันรหัสคุณควรปล่อยให้คนตัดสินใจว่าพวกเขาต้องการอะไรด้วยตัวเองแทนที่จะบังคับให้คุณ (หรือคนอื่น) มีอุดมการณ์


0

เพื่อความรู้ที่ดีที่สุดของฉันฉันใช้ตัวอักษร 80 เป็นมาตรฐานการเข้ารหัสเพื่อรักษาความเข้ากันได้กับเครื่องมือแก้ไขบรรทัดคำสั่ง (โดยทั่วไปความกว้างเทอร์มินัลเริ่มต้นคือ 80 อักขระ) ด้วย IDEs ที่ทันสมัยและความละเอียดหน้าจอขนาดใหญ่ 80 ตัวอักษรอาจจะไม่ "ดีที่สุด" แต่สำหรับนักพัฒนาหลายคนที่ต้องการความสามารถในการอ่านในเครื่องเทอร์มินัล ด้วยเหตุนี้จึงไม่น่าที่ความกว้าง 80 อักขระจะถูกแทนที่เป็นมาตรฐานโดยพฤตินัยสำหรับความกว้างของรหัสได้ทุกเวลาในไม่ช้า และเพื่อตอบคำถามสุดท้ายของคุณใช่ความกว้างของรหัสรวมถึงคุณลักษณะอื่น ๆ ที่จะส่งผลกระทบต่อความสามารถในการอ่านของรหัสของคุณควรระบุไว้ในมาตรฐานการเข้ารหัสของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.