ต้องเลื่อนแนวนอนทำให้โค้ดอ่านน้อยลงหรือไม่?


12

เอาล่ะ ถือว่าเป็นการปฏิบัติที่ไม่ดีหรือไม่?

IMO มันอ่านได้น้อยลง ฉันเกลียดที่จะต้องเลื่อนไปทางขวาจากนั้นกลับซ้าย, ขวา, ซ้ายและอื่น ๆ มันทำให้ฉันเจ็บปวดมากขึ้นและทำให้ฉันสับสนในบางครั้ง

ตัวอย่างเช่นทุกครั้งที่ฉันเข้ารหัสสตริงยาว ๆ ฉันจะทำสิ่งต่อไปนี้ ...

bigLongSqlStatement = "select * from sometable st inner join anothertable at" +
"on st.id = at.id" +
"and so on..." +
"and so on..." +
"and so on..."

15
ใช่. (และไม่ลืมที่จะเยื้องบรรทัดที่หกรั่วไหล)
ฮาเวียร์

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

1
ฉันสามารถนำทางโค้ดในแนวตั้งและภายในบรรทัดด้วยความเร็วสูงด้วยปุ่มไม่กี่ปุ่มการเลื่อนในแนวนอนนั้นค่อนข้างน่ารำคาญเมื่อเปรียบเทียบกัน

คอลัมน์ที่กว้างเกินไปทำให้ทุกอย่างอ่านง่ายขึ้น ที่ได้รับการพิจารณาหลายต่อหลายครั้ง
David Thornley

2
ฉันเห็นด้วย. ปัญหาเพียงอย่างเดียวคือการทำให้ทุกคนเห็นด้วยกับความกว้างของการสร้างบรรณาธิการของคุณ ในโค้ดขนาดกว้างพิเศษฉันมักจะตั้งค่าการตัดถ้าฉันมีจำนวนมากเพื่ออ่าน
Karl Bielefeldt

คำตอบ:


19

ใช่แน่นอนมันทำในความหมายที่แท้จริงเช่นเดียวกับความรู้สึกทั่วไป

ฉันชอบทำโค้ดแบบเคียงข้างกันและบรรทัดที่กว้างเกินไปทำให้ยากขึ้น:

http://i.stack.imgur.com/fWVuz.jpg

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


11

ใช่ฉันคิดว่า 80 ตัวอักษรต่อบรรทัดเหมาะสมและใช้กันทั่วไป


6

มันเป็นคำถามที่สำคัญมากสำหรับฉัน! ฉันทำงาน 7 เดือนกับแล็ปท็อปขนาด 13 นิ้วที่มีเพื่อนร่วมงานที่มีหน้าจอเดสก์ท็อป 24 นิ้วและฉันพบว่าตัวเองใช้เวลาน้อยลงในการตัดทอนสิ่งที่อ่านได้

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

นั่นเป็นคำถาม 'อ่านง่าย' บริสุทธิ์

ตอนนี้สำหรับส่วน 'แนวปฏิบัติที่ดี' ฉันมักจะพบว่าบรรทัดที่ยาวเกินไปที่จะมีข้อบกพร่องคือมีบางส่วนที่ควรถูกแยกในตัวแปรชั่วคราวหรือถูกทำซ้ำเช่น (ObjectiveC ตัวอย่างทั่วไปในการเขียนโปรแกรม iPhone) :

CGPoint point = CGPointMake(someOtherView.frame.origin.x + someOtherView.frame.size.width, someOtherView.frame.origin.x + someOtherView.frame.size.height);

โปรดทราบว่าสิ่งนี้อาจกลายเป็นสิ่งที่น่าสนใจยิ่งขึ้นเมื่อทำงานกับเวกเตอร์ 3 มิติหรือเมทริกซ์

ตัวอย่างที่เขียนซ้ำ:

CGRect frame = someOtherView.frame;
CGPoint origin = frame.origin;
CGSize size = frame.size;
CGPoint point = CGPointMake(origin.x + size.width, origin.x + size.height);

ตอนนี้เป็นการปรับขนาดให้เหมาะสมบนหน้าจอที่เล็กลงง่ายต่อการดีบักโดยใช้ IDE หรือเขียนไปยังเอาต์พุตมาตรฐานและอาจเร็วกว่าขึ้นอยู่กับต้นทุนของการเรียกใช้เมธอด / คุณสมบัติ แน่นอนว่านี่เป็นตัวอย่างที่ถูกบังคับจริง ๆ ตัวอย่างของโลกแห่งความเป็นจริงนั้นซับซ้อนกว่า ...


4

ไม่เสมอ.

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

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

ต้องบอกทุกอย่างว่าแน่นอนว่าฉันไม่ต้องการเลื่อนแนวนอนบ่อยนัก แต่ฉันพบปัญหาน้อยลงในวันที่จอภาพแบบไวด์สกรีนเหล่านี้


2
ฉันไม่รู้ว่าบิตของโปรแกรมบางตัวมีความสำคัญมากกว่าบิตอื่น ๆ ฉันจะพยายามปรับปรุงประสิทธิภาพการผลิตของฉันด้วยวิธีนี้: เข้ารหัสเฉพาะบิตที่สำคัญเท่านั้น
mouviciel

1
@mouviciel ไม่ใช่ว่าทางด้านซ้ายของรหัสมีความสำคัญมากกว่า แต่ความหมายทางด้านซ้ายของรหัสนั้นมีความสำคัญมากกว่าในการทำความเข้าใจว่าบรรทัดของโค้ดทำอะไรมากกว่าด้านขวา เมื่อคุณสแกนโค้ดคุณมักจะอ่านเพียงแค่จุดเริ่มต้นของบรรทัดเพื่อทำความเข้าใจว่ามันทำอะไรก่อนที่จะย้ายไปยังบรรทัดถัดไป
Chris Knight

1
สำหรับฉันข้อโต้แย้งที่ส่งไปยังเมธอดมีความสำคัญเท่ากับชื่อเมธอด การปล่อยให้ข้อมูลนำไปสู่การเดาว่าโค้ดทำอะไรได้มากกว่าเข้าใจ
mouviciel

1

ใช่.

เคล็ดลับบังเอิญ หากคุณกำลังใช้ภาษาที่มีสตริงหลายบรรทัด (ภาษาสคริปต์เกือบทุกภาษามี) และรวมถึง SQL แบบยาวมันช่วยให้คุณสามารถอ่าน SQL ในสตริงหลายบรรทัดได้โดยใช้กฎการจัดรูปแบบที่สอดคล้องกันสำหรับ SQL ดูhttp://bentilly.blogspot.com/2011/02/sql-formatting-style.htmlสำหรับสไตล์การจัดรูปแบบที่ฉันใช้


1

ไม่เลย

ฉันมีบรรณาธิการ ไม่เพียง แต่มีการตัดบรรทัดเท่านั้น แต่ยังมีการเยื้องการตัดบรรทัดซึ่ง (หากหน้าจอมีความกว้าง 100 ตัวอักษร) จะทำให้เกิด

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

เพื่อปรากฏเป็น

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut 
    labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
    laboris nisi ut aliquip ex ea commodo consequat.

หรือตั้งค่าระดับการเยื้องใด ๆ เป็นค่าเริ่มต้นสำหรับภาษาปัจจุบัน

เส้นที่กว้างกว่าหน้าจอของฉันไม่ทำให้โค้ดอ่านน้อยลงเมื่อเทียบกับโค้ดบรรทัดที่ตัดบรรทัดด้วยตนเอง

แก้ไข: ooooh ฉันรู้คำตอบนี้จะไม่เป็นที่นิยม :)


2
ดีสำหรับคุณ. แต่คุณจะทำอย่างไรถ้าคุณต้องเปลี่ยนไปใช้เครื่องมือแก้ไขที่ไม่มีคุณสมบัตินี้

1
@dunsmoreb: ทำไมคุณถึงเปลี่ยนมาใช้ตัวแก้ไขที่ล้าสมัยจนไม่สนับสนุนการตัดคำ (เว้นแต่คุณจะทำงานกับซอร์สโค้ดที่เขียนเมื่อสามสิบปีที่แล้วและทำงานบนแพลตฟอร์มเดิมที่คุณไม่มีทางเลือกที่ถูกต้อง บรรณาธิการ)?
Arseni Mourzenko

MainMa ฉันหมายถึงคุณสมบัติการเยื้องบรรทัดของคุณ

@dunsmoreb: เป็นธรรมแม้เพียงแค่ตัดคำมากมายที่ดีพอถ้าสายยาวเป็นพิเศษ
อมรา

7
เพียงเพราะตัวแก้ไขของคุณสามารถตัดบรรทัดไม่ได้หมายความว่ามันจะปิดล้อมที่ที่เหมาะสมที่สุดสำหรับการอ่าน
Craige

0

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

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

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

ตัวระบุที่มีจุดหลายจุดที่ต้องการเส้นขนาดใหญ่บ่งบอกถึงเทคนิคการเข้ารหัสที่ควรแก้ไข


0

ล้อ Mouses ทำให้การเลื่อนในแนวตั้งเป็นเรื่องง่าย ... การเลื่อนในแนวนอนนั้นแพงเกินไปเมื่อเปรียบเทียบ


0

หลีกเลี่ยงการเลื่อนแนวนอน

~ แนวทางการปฏิสัมพันธ์กับผู้ใช้ Windows Pg 112

ใช่.

คนอังกฤษอ่านจากซ้ายไปขวาทำให้เกิดการเลื่อนอย่างต่อเนื่อง = Nonproductive

ด้วยเหตุนี้ฉันจึงเปิดใช้งานการตัดคำด้วยสัญลักษณ์บรรทัดภาพใน IDE ของฉันเสมอ

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