ทำไม Python pep-8 จึงแนะนำให้มีการเว้นวรรคในแท็บอย่างมาก


146

ฉันเห็นใน Stack Overflow และPEP 8ว่าการแนะนำคือการใช้ช่องว่างเฉพาะสำหรับการเยื้องในโปรแกรม Python ฉันสามารถเข้าใจถึงความจำเป็นในการเยื้องอย่างสม่ำเสมอและฉันรู้สึกถึงความเจ็บปวดนั้น

มีเหตุผลพื้นฐานสำหรับช่องว่างที่ต้องการหรือไม่ ฉันคิดว่าแท็บนั้นใช้งานง่ายกว่ามาก


7
อ่านการอภิปราย PEP เพื่อทราบ
e-Satisfaction

106
การเยื้องระดับ 1 คือ ... 1. เป็นเรื่องไร้เหตุผลที่จะต้องยอมรับการใช้ช่องว่าง N เมื่อคุณสามารถใช้แท็บเดียวได้ ซึ่งโดยวิธีการมีความหมายตรงที่จะทำอย่างนั้น ย่อหน้า ครั้งหนึ่ง 1 ระดับของการเยื้อง = 1 อักขระเดียวคือ 1 แท็บเดียว และมันก็มีประโยชน์มากกว่าเพราะ coder แต่ละตัวอาจเลือกวิธีการมองภาพอย่างอิสระ ใช้ช่องว่างเป็นใบ้ฉันไม่เคยเห็นข้อโต้แย้งเดียวสำหรับมันซึ่งไม่ใช่เรื่องโง่
o0 '

31
@BlueBomber และทำไมคุณไม่บังคับคนให้มีขนาดตัวอักษรและชุดสีที่คุณชอบในขณะที่คุณอยู่ที่มัน? ยังคงโง่
o0 '

10
@ BlueBomber ไม่ไม่มันเหมือนกันในระดับที่ไร้สาระ
o0 '

9
@ BlueBomber ความแตกต่างคืออะไร? คุณกำลังลดระดับอิสระในการกำหนดค่าสภาพแวดล้อมของนักพัฒนารายอื่นโดยไม่ได้รับผลประโยชน์ใด ๆ หากคุณต้องการเป็นเผด็จการและบังคับให้ทุกคนดูรหัสด้วยการเยื้องที่สอดคล้องกับช่องว่าง 2 หรือ 4 หรือ 29 คุณยังสามารถทำได้ด้วยแท็บ เพียงขอให้ผู้ใต้บังคับบัญชาของคุณตั้งค่า IDE ให้แสดงแท็บตามจำนวนช่องว่างที่คุณต้องการ หากคุณไม่มีอำนาจในการทำเช่นนี้คุณควรปล่อยให้พวกเขาตัดสินใจด้วยตนเองว่าหน่วยการเยื้องกว้างสบายตา
ซาด Saeeduddin

คำตอบ:


111

คำตอบที่ได้รับมีใน PEP [ed: ข้อความนี้ได้รับการแก้ไขในปี 2013 ] ฉันพูด:

ที่นิยมมากที่สุดวิธีการเยื้องงูใหญ่ที่มีช่องว่างเท่านั้น

คุณต้องการเหตุผลพื้นฐานอะไรอีก

ในการทำให้มันโผงผางน้อยลง: พิจารณาขอบเขตของ PEP ตามที่ระบุไว้ในวรรคแรก:

เอกสารนี้มีข้อกำหนดการเข้ารหัสสำหรับรหัส Python ที่ประกอบด้วยไลบรารี่มาตรฐานในการแจกแจง Python หลัก

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

เนื่องจากการตัดสินใจระหว่างช่องว่างและแท็บสำหรับโปรแกรมเมอร์แต่ละคนคือ a) เรื่องของรสนิยมและ b) จัดการได้อย่างง่ายดายด้วยวิธีการทางเทคนิค (บรรณาธิการสคริปต์แปลง ฯลฯ ) มีวิธีที่ชัดเจนในการยุติการสนทนาทั้งหมด: เลือกหนึ่งรายการ .

กุยโดเป็นคนที่เลือก เขาไม่จำเป็นต้องให้เหตุผล แต่เขาก็ยังทำตามข้อมูลเชิงประจักษ์

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

แต่ถ้าฉันอาจให้คำแนะนำกับคุณหนึ่งอย่าง: อย่า mix'em ;-) [ed: การผสมแท็บและการเว้นวรรคไม่มีตัวเลือกอีกต่อไป]


11
ตกลง ความสอดคล้องมีความสำคัญมากกว่าแท็บกับช่องว่าง X และช่องว่าง Y
Mike Clark

10
ทำให้ฉันสงสัย ... ทำไมไลบรารีมาตรฐานจึงมีชื่อเมธอด mixCase มากมาย?
Kyle Wild

6
@dorkitude: a) ไม่มีใครสมบูรณ์แบบ b) เหตุผลทางประวัติศาสตร์

8
แล้วทำไมโปรแกรมเมอร์หลายคนถึงเลือกใช้ช่องว่างก่อน PEP-8 นั่นคือสิ่งที่ฉันอยากรู้ ข้อดีของแท็บนั้นชัดเจนสำหรับฉัน แต่ไม่ใช่ที่ว่าง
einnocent


95

ดูเหมือนว่าทุกคนจะเอนเอียงไปทางช่องว่างอย่างมาก ฉันใช้แท็บโดยเฉพาะ ฉันรู้ดีว่าทำไม

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

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

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

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

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

การผสมแท็บและช่องว่างเป็นเรื่องที่ไม่มีข้อโต้แย้งใด ๆ นั่นเป็นระเบียบและไม่สามารถทำงานได้


26
หากต้องการเพิ่มเข้าไปให้ดูที่แป้นพิมพ์สัญลักษณ์ TAB ของแป้นนั้นแสดงให้เห็นถึงการเยื้องอย่างชัดเจนซึ่งเป็นจุดประสงค์ที่เยื้องของคีย์ไม่ใช่ SPACE PEP8 แนะนำให้ใช้ช่องว่างเป็นข้อผิดพลาด IMHO แต่เป็นเพียงข้อเสนอแนะ - en.wikipedia.org/wiki/Tab_character#Tab_characters
Daniel Sokolowski

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

12
@Zingham ไม่มีใครสามารถใช้แท็บได้โดยเฉพาะ: แท็บและช่องว่างมักใช้ร่วมกันและสิ่งนี้นำไปสู่ความไม่สอดคล้องกัน ฉันและอีกหลายพันคนใช้มันอย่างสม่ำเสมอทุกวัน แท็บสำหรับการเยื้อง, ช่องว่างสำหรับการจัดตำแหน่ง คุณคิดว่าส่วนไหนของแนวคิดนี้ยากที่จะเข้าใจและทำไมคุณถึงเชื่อว่าเป็นไปไม่ได้ที่จะใช้มันอย่างสม่ำเสมอ?
antred

1
ปัญหาที่เกิดขึ้นจริงกับแท็บคือคุณไม่สามารถรับการเยื้องกับตัวละครที่แนะนำโดย PEP8 เดียวกันภายใต้ความคิดเห็น "# จัดชิดกับตัวคั่นเปิด" นั่นเป็นเหตุผลเดียวที่ทำให้ชอบช่องว่าง: เพื่อให้การเยื้องถูกต้อง!
user541905

2
คำถามคือ"ทำไม Python pep-8 ขอแนะนำช่องว่างมากกว่าแท็บสำหรับเยื้อง?" . คำตอบนี้ไม่เคยพูดถึงอะไรเกี่ยวกับ PEP8 ||| แทนการพยายามที่จะตอบคำถาม ... คำตอบนี้มาเจอกับผมเป็นหนึ่งวางตัวขนาดใหญ่ส่วนใหญ่มีความคิดเห็นแบบชิ้น มี 276 คำที่ใช้พูดว่า "แท็บดีกว่าเว้นวรรคและนี่คือเหตุผล ... "
เทรเวอร์บอยด์สมิ ธ

43

โดยส่วนตัวฉันไม่เห็นด้วยกับช่องว่างบนแท็บ สำหรับฉันแล้วแท็บเป็นตัวละคร / กลไกเลย์เอาต์ของเอกสารในขณะที่ช่องว่างสำหรับเนื้อหาหรือการแยกระหว่างคำสั่งในกรณีของรหัส

ฉันต้องเห็นด้วยกับความคิดเห็นของจิมว่าแท็บไม่ได้เป็นปัญหาจริงๆคือเป็นคนและวิธีที่พวกเขาต้องการผสมแท็บและช่องว่าง

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


3
ฉันพยายามบังคับให้ตัวเองใช้ช่องว่างเช่นกัน แต่แท็บที่ชาญฉลาด (อย่างน้อย Eclipse + PyDev) จะชนะโดยเฉพาะถ้าคุณเปิดใช้งานการแสดงตัวอักษรที่มองไม่เห็น และฉันสามารถตั้งค่าแท็บให้เป็น 4, 8, 6 ช่องว่างทางสายตาได้อย่างง่ายดาย ดังนั้นในรหัสของฉันอย่างน้อยฉันให้ความสำคัญกับความชอบส่วนตัวและยึดติดกับช่องว่างถ้านั่นคือการประชุมที่จัดตั้งขึ้นในฐานรหัสที่มีอยู่
Daniel Sokolowski

2
ไม่เป็นไรตราบใดที่คุณไม่ได้เข้ารหัสในทีม เมื่อคุณอยู่ในทีมคุณเห็นด้วยกับการประชุมและทำตามนั้น
Soviut

1
@Soviut ที่ดูเหมือนว่าส่วนใหญ่ต้องการคิดให้ฉัน ในทุกทีมที่ฉันเคยเข้าร่วมปาร์ตี้อย่างเป็นทางการคือ "ใช้ช่องว่าง" ความจริงก็คือแทบทุกไฟล์เป็นระเบียบทั้งหมดของทั้งแท็บและช่องว่างและแม้แต่ในไฟล์ที่ใช้ช่องว่างหรือแท็บเพียงแท็บอย่างสม่ำเสมอการเยื้องก็ยังคงอยู่ทุกที่
antred

ใช่ แต่นั่นคือสิ่งที่ฉันหมายถึง ถึงฉันทามติบางข้อในที่สุดก็ถึงและบังคับใช้ อย่างที่คุณพูดมันมักจะ "แค่ใช้ช่องว่าง"
Soviut

นี่คือเหตุผลหลักที่ฉันชอบแท็บ มันสมเหตุสมผลที่จะมีตัวละครแยกต่างหากสำหรับการจัดวางและการกำหนดคำ
woojoo666

31

เหตุผลของการเว้นวรรคคือแท็บเป็นตัวเลือก ช่องว่างเป็นตัวหารที่ใช้กันน้อยที่สุดในเครื่องหมายวรรคตอน

เครื่องมือแก้ไขข้อความที่ดีทุกอันมี "แทนที่แท็บด้วยช่องว่าง" และหลาย ๆ คนใช้สิ่งนี้ แต่ไม่เสมอไป.

ในขณะที่โปรแกรมแก้ไขข้อความบางรายอาจแทนที่ช่องว่างด้วยแท็บสิ่งนี้หายากจริงๆ

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


15
ฉันจะไม่สาบานที่จะทำสิ่งที่ผิดเพียงเพราะคนอื่นจำนวนมาก (คนบรรณาธิการข้อความ ฯลฯ ) ก็เกิดขึ้นไม่ว่าจะเป็นวิธีที่ผิด ในปี 2015 เครื่องมือแก้ไขข้อความที่ไม่สามารถจัดการกับแท็บได้ดีอยู่ในถังขยะ
antred

2
"คุณไม่สามารถผิดกับช่องว่างคุณอาจผิดกับแท็บ" ฉันพบว่ามันไม่ถูกต้อง topsy-turvy 100% จากประสบการณ์ของฉัน: "คุณไม่สามารถผิดพลาดกับแท็บคุณอาจผิดพลาดกับช่องว่าง" ... โดยเฉพาะอย่างยิ่งเมื่อแบ่งปันรหัส
cmroanirgo

5
ในที่สุดก็มีคนพูดว่า: ใช้ช่องว่างเพราะมันเป็นตัวหารร่วมที่ต่ำที่สุด กฎเดียวกันทำให้เราต้องยึดถือ MBR, BIOS และรูปแบบกระดาษที่สำนักงานของรัฐ ยกเว้นว่าสิ่งเหล่านี้มีปัญหาทางความคิดในขณะที่แท็บเทียบกับช่องว่างเป็นปัญหาของผู้ใช้ที่โง่ 100%
Milind R

1
นี่ดูเหมือนจะเป็น Argumentum ad populum: อาร์กิวเมนต์ที่ผิดพลาดซึ่งสรุปว่าข้อเสนอนั้นเป็นเรื่องจริงเพราะคนส่วนใหญ่หรือคนส่วนใหญ่เชื่อ เนื่องจากตัวแก้ไขทุกตัวสามารถแทนที่แท็บด้วยช่องว่างดังนั้นช่องว่างคือตัวเลือกที่เหมาะสมคือการเข้าใจผิด !!
Djunzu

28

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

หากคุณยืนยันที่จะท้าทาย PEP 8 และใช้แท็บ - หรือแย่กว่านั้นการผสมแท็บและช่องว่าง - อย่างน้อยก็ให้รัน python ด้วยอาร์กิวเมนต์ '-tt' เสมอซึ่งทำให้การเยื้องไม่สอดคล้องกัน (บางครั้งก็เป็นแท็บ ระดับ) ข้อผิดพลาด นอกจากนี้หากเป็นไปได้ให้ตั้งโปรแกรมแก้ไขของคุณให้แสดงแท็บต่างกัน แต่จริงๆแล้ววิธีที่ดีที่สุดคือไม่ใช้แท็บช่วงเวลา


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

47
ไม่เหมือนกันไม่เป็นความจริงสำหรับช่องว่าง ผู้คนสามารถเห็นด้วยกับความกว้างของช่องว่าง
Rafał Dowgird

32
ช่องว่างเดียวอาจมีความกว้างเท่ากันเสมอ แต่การเยื้องกับช่องว่างอาจไม่ใช่ความกว้างเท่ากันเสมอไป ฉันล้มเหลวในการดูว่าการยอมรับการใช้แท็บทั้งช่องว่างและช่องว่างแตกต่างกันอย่างไรในการยอมรับการเยื้องกับช่องว่าง
Jim

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

70
และไม่ถ้าฉันใช้แท็บที่มีความกว้าง 8 นิ้วและคุณใช้แท็บที่มีความกว้าง 6 ตัวและเราแชร์รหัสมันก็จะไม่เกิดความสับสน มันเป็นเพียงแท็บเดียวสำหรับล่าม Python
จิม

22

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

อย่างไรก็ตาม IMHO มีเหตุผลเล็กน้อยที่จะสนับสนุนช่องว่างบนแท็บ:

  • เครื่องมือต่าง ๆ บางครั้งรหัสจะถูกแสดงนอกตัวแก้ไขของโปรแกรมเมอร์ เช่น. โพสต์ในกลุ่มข่าวหรือฟอรัม โดยทั่วไปช่องว่างทำได้ดีกว่าแท็บที่นี่ - ช่องว่างทุกแห่งจะมีรูปแบบที่ยุ่งเหยิงแท็บก็ทำได้เช่นกัน แต่ไม่ใช่ในทางกลับกัน

  • โปรแกรมเมอร์เห็นแหล่งต่างกัน นี่เป็นอัตนัย - ประโยชน์หลักของแท็บหรือเหตุผลในการหลีกเลี่ยงแท็บนั้นขึ้นอยู่กับด้านที่คุณอยู่ ในด้านบวกผู้พัฒนาสามารถดูแหล่งที่มีการเยื้องที่ต้องการของพวกเขาดังนั้นนักพัฒนาที่ต้องการให้มีการเยื้อง 2 ช่องว่างสามารถทำงานร่วมกับนักพัฒนา 8-space ในแหล่งเดียวกันและยังคงเห็นตามที่พวกเขาต้องการ ข้อเสียคือมีผลกระทบต่อเรื่องนี้ - บางคนชอบ 8-space เพราะให้ข้อเสนอแนะที่มองเห็นได้ชัดเจนว่าพวกเขาซ้อนกันลึกเกินไป - พวกเขาอาจเห็นรหัสตรวจสอบโดย 2-indenter ห่อในบรรณาธิการของพวกเขาอย่างต่อเนื่อง การให้นักพัฒนาซอฟต์แวร์ทุกคนเห็นโค้ดในลักษณะเดียวกันจะนำไปสู่ความยาวบรรทัดที่มั่นคงยิ่งขึ้นและเรื่องอื่น ๆ ด้วย

  • เยื้องสายอย่างต่อเนื่อง บางครั้งคุณต้องการเยื้องบรรทัดเพื่อระบุว่ามีการดำเนินการจากบรรทัดก่อนหน้า เช่น.

    def foo():
        x = some_function_with_lots_of_args(foo, bar, baz,
                                            xyzzy, blah)

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

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

นอกจากนี้ยังเป็นมูลค่าการอ่านนี้บทความโดยเจมี่ซาวินสกีเกี่ยวกับเรื่องนี้


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

3
@Soviut: หากคุณเยื้องกับช่องว่างการจัดตำแหน่งจะเลอะทันทีที่ดูด้วยขนาดแท็บอื่น วิธีเดียวที่จะเก็บรักษาไว้คือใช้แท็บไปยังระดับย่อหน้าและจากนั้นช่องว่างสำหรับส่วนที่เหลือ - เช่นผสมช่องว่างและแท็บซึ่งนำไปสู่ปัญหาของตัวเอง
46414 Brian

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

2
@Brian: ฉันไม่เห็นว่าสิ่งที่นำไปสู่ปัญหาใด ๆ มันเป็นวิธีที่ถูกต้องแท็บสำหรับการเยื้องและช่องว่างสำหรับการจัดตำแหน่ง มันไม่ได้อยู่ที่ทั้งหมดเช่นเดียวกับการผสมช่องว่างและแท็บสำหรับการเยื้อง
58

1
@CoreDumpError เอ่อไม่มันไม่แน่นอน ฉันรู้ว่าเพราะ Python 3 ไม่เคยบ่นเกี่ยวกับสคริปต์ใด ๆ ของฉันและฉันใช้แท็บสำหรับการเยื้อง / ช่องว่างเพื่อจัดตำแหน่งตลอดเวลาที่ถูกสาปแช่ง นอกจากนี้ PEP8 ไม่สามารถ "ห้าม" สิ่งใดได้เนื่องจากเป็นเพียงข้อเสนอแนะ (และเป็นข้อเสนอแนะที่ไม่เหมาะสมในความคิดของฉัน)
59

12

โปรดทราบว่าการใช้แท็บทำให้เกิดความสับสนในลักษณะอื่นของ PEP 8:

จำกัด ทุกบรรทัดสูงสุด 79 ตัวอักษร

สมมุติว่าคุณใช้ความกว้างแท็บที่ 2 และฉันใช้ความกว้างแท็บที่ 8 คุณเขียนโค้ดทั้งหมดของคุณเพื่อให้บรรทัดที่ยาวที่สุดของคุณยาวถึง 79 ตัวอักษรจากนั้นฉันก็เริ่มทำงานกับไฟล์ของคุณ ตอนนี้ฉันมีรหัสที่อ่านยากเพราะ (ตามสถานะ PEP):

การห่อเริ่มต้นในเครื่องมือส่วนใหญ่จะขัดขวางโครงสร้างการมองเห็นของรหัส

ถ้าเราใช้พื้นที่ทั้งหมด 4 ช่องมันก็เหมือนกันเสมอ ทุกคนที่มีตัวแก้ไขสามารถรองรับความกว้าง 80 ตัวอักษรสามารถอ่านรหัสได้อย่างสะดวกสบาย หมายเหตุ: ขีด จำกัด 80 ตัวอักษรเป็นสงครามศักดิ์สิทธิ์ในตัวของมันเองดังนั้นอย่าเริ่มที่นี่

โปรแกรมแก้ไขที่ไม่ใช่ sucky ใด ๆ ควรมีตัวเลือกให้ใช้ช่องว่างราวกับว่าเป็นแท็บ (ทั้งการแทรกและการลบ) ดังนั้นจึงไม่ควรเป็นอาร์กิวเมนต์ที่ถูกต้อง


7

คำตอบสำหรับคำถามคือ: PEP-8 ต้องการให้คำแนะนำและตัดสินใจว่าเนื่องจากช่องว่างเป็นที่นิยมมากขึ้นจึงจะแนะนำช่องว่างมากกว่าแท็บ


หมายเหตุเกี่ยวกับ PEP-8

PEP-8 บอกว่า'ใช้ 4 ช่องว่างต่อระดับการเยื้อง'
มันชัดเจนว่านี่คือคำแนะนำมาตรฐาน

'สำหรับรหัสเก่าจริง ๆ ที่คุณไม่ต้องการทำให้สับสนคุณสามารถใช้ 8-space tabs ต่อไปได้'
เป็นที่ชัดเจนว่ามีสถานการณ์บางอย่างที่สามารถใช้แท็บได้

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

'วิธีที่ได้รับความนิยมมากที่สุดในการย่อหน้า Python คือการเว้นวรรคเท่านั้น วิธีที่ได้รับความนิยมมากที่สุดอันดับสองคือแท็บเท่านั้น '
สิ่งนี้ระบุอย่างชัดเจนว่ามีการใช้งานทั้งคู่ เพื่อให้ชัดเจนยิ่งขึ้น: คุณไม่ควรผสมช่องว่างและแท็บในไฟล์เดียวกัน

'สำหรับโครงการใหม่ขอแนะนำให้ใช้ช่องว่างเท่านั้นเหนือแท็บ'
นี่เป็นคำแนะนำที่ชัดเจนและเป็นคำสั่งที่ดี แต่ไม่ใช่ข้อห้ามของแท็บ


ฉันไม่พบคำตอบที่ดีสำหรับคำถามของฉันเองใน PEP-8 ฉันใช้แท็บซึ่งฉันใช้ในอดีตเป็นภาษาอื่น Python ยอมรับแหล่งที่มาด้วยการใช้งานแท็บแบบเอกสิทธิ์ ดีพอสำหรับฉัน

ฉันคิดว่าฉันจะต้องไปทำงานกับพื้นที่ ในโปรแกรมแก้ไขของฉันฉันกำหนดค่าประเภทไฟล์เพื่อใช้ช่องว่างเฉพาะและดังนั้นจึงมีการแทรกช่องว่าง 4 ถ้าฉันกดแท็บ ถ้าฉันกด tab หลายครั้งฉันต้องลบช่องว่าง! โอ๊ย! ลบแท็บได้มากถึงสี่เท่า! โปรแกรมแก้ไขของฉันไม่สามารถบอกได้ว่าฉันใช้ช่องว่าง 4 รายการสำหรับการเยื้อง

ไม่สามารถบอกให้ Python พิจารณาแท็บเป็นช่องว่างเมื่อเยื้องการอ่าน หากเราสามารถเห็นด้วยกับ 4 ช่องว่างต่อการเยื้องและ 4 ช่องว่างต่อแท็บและอนุญาตให้ Python ยอมรับสิ่งนี้ก็จะไม่มีปัญหา
เราควรหาวิธีแก้ปัญหาแบบ win-win


1
คุณใช้โปรแกรมแก้ไขอะไร ส่วนใหญ่ที่ฉันเคยใช้มีตัวเลือกที่จะอุทิศให้กับ backspace (emacs ทำงานในลักษณะนี้) โดยไม่คำนึงถึงการใช้งานของการเยื้อง
Brian

คุณพูดถูก - ฉันไม่เห็นตัวเลือกที่จะอุทิศให้กับ backspace แต่คุณสามารถจัดการกับมันโดยใช้ shift-tab หรือลดการเยื้อง (ctrl-shift-i เป็นค่าเริ่มต้น) แทน
Brian

ฉันแค่ลอง PyScripter ซึ่งดูเหมือนว่าโหลดได้ดีกว่าเมื่อใช้ช่องว่างเมื่อคุณกด tab และลบออกเป็น 4 เมื่อคุณกด backspace
quamrana

28
"ฉันต้องลบช่องว่าง! Arrgh! สี่ครั้งมากที่สุดเท่าที่ลบแท็บ!" - นี่คือเหตุผลเดียวที่ฉันใช้แท็บสำหรับทุกสิ่งและทำไมฉันคิดว่าคนที่ใช้ช่องว่างนั้นเสียสติ :) ฉันไม่เคยมีปัญหายกเว้นเมื่อฉันวางบางอย่างจากเว็บที่ใช้ช่องว่าง จากนั้นแก้ไขหาการแทนที่ที่ง่าย
Aphex

3

ฉันใช้แท็บในรหัสของฉันเสมอ ที่กล่าวว่าฉันเพิ่งพบเหตุผลที่จะใช้ช่องว่าง: เมื่อพัฒนาบนแท็บเล็ตอินเทอร์เน็ต Nokia N900 ของฉันตอนนี้ฉันมีแป้นพิมพ์ที่ไม่มีแท็บคีย์ สิ่งนี้บังคับให้ฉันต้องคัดลอกและวางแท็บหรือเขียนรหัสของฉันใหม่ด้วยช่องว่าง ฉันพบปัญหาเดียวกันกับโทรศัพท์อื่น จริงอยู่นี่ไม่ใช่การใช้งานแบบมาตรฐานของ Python แต่เป็นสิ่งที่ต้องคำนึงถึง


2

JWZ บอกว่าดีที่สุด :

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

... ความคิดเห็นของฉันคือวิธีที่ดีที่สุดในการแก้ปัญหาด้านเทคนิคคือการกำหนดว่าอักขระ ASCII # 9 TAB ไม่เคยปรากฏในไฟล์ดิสก์: ตั้งโปรแกรมแก้ไขของคุณเพื่อขยาย TABs ให้มีจำนวนช่องว่างที่เหมาะสมก่อนที่จะเขียนบรรทัดลงดิสก์ ..

... นี่ถือว่าคุณไม่เคยใช้แท็บในสถานที่ที่สำคัญจริง ๆ เช่นในค่าคงที่สตริงหรืออักขระ แต่ฉันไม่เคยทำเช่นนั้น: เมื่อมันสำคัญว่ามันเป็นแท็บฉันมักจะใช้ '\ t' แทน


10
ฉันจะทำตรงกันข้าม: แท็บมีความหมายเชิงความหมายสำหรับการเยื้องจึงเป็นความรู้สึกที่ดีกว่าที่จะจัดเก็บแท็บและแสดงช่องว่าง ผู้ใช้สามารถเลือกรูปแบบการจัดรูปแบบและตัวแก้ไขจะขยายแท็บตามลำดับ
AkiRoss

1
คุณยังคงมีปัญหาเกี่ยวกับแท็บและช่องว่างแบบผสมรวมถึงผู้เขียนหนึ่งคนที่ใช้ 1 คอลัมน์ต่อแท็บและเยื้อง 4+ ครั้งซึ่งจะดูบ้าคลั่งในตัวแก้ไขข้อความที่ตั้งค่าให้แสดงอักขระแท็บแต่ละตัวกว้าง 4 คอลัมน์ แท็บสำหรับการเยื้องทำให้เหมาะสมที่สุดในโปรแกรมแก้ไขข้อความความกว้างตัวแปรเช่นโปรแกรมประมวลผลคำโดยใช้แบบอักษรที่เว้นระยะตามสัดส่วน ไม่มากนักด้วยโปรแกรมแก้ไขข้อความความกว้างคงที่
Mark Cidade

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

ฉันไม่เห็นว่ามันจะเข้าใจได้อย่างไร
Mark Cidade

1

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

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

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


8
และเนื่องจากตัวแก้ไขทุกตัวอาจเลือกชุดรูปแบบสีของคุณคิดว่าพวกเขาควรอาณัติด้วยชุดรูปแบบสีที่จะใช้?
o0 '

8
ใช่ แต่ไม่สอดคล้องกันนี้จริง ๆ ทำให้รู้สึกเพิ่มเติมหรือไม่ เพราะมันเป็นเพียงเรื่องของการตั้งค่าภาพ ถ้าฉันชอบเยื้อง "มอง" ที่ใหญ่ขึ้นในตัวแก้ไขฉันสามารถตั้งค่าแท็บของฉันให้เป็น 8 ช่องว่างได้ถ้าฉันต้องการน้อยกว่าฉันสามารถตั้งค่าเป็น 2 ได้ด้วยวิธีนี้โค้ดโดยไม่ต้องเปลี่ยนรูปแบบจริง ๆ สังเกตมัน
dennmat

8
ฉันเห็นด้วยกับ dennmat- หากฉันต้องการให้มีช่องว่าง 2 ภาพและกุยโดมองเห็นช่องว่าง 4 ช่องทางเลือกที่สมเหตุสมผลคือการใช้การเยื้องของแท็บ
Sepero

0

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


2
สิ่งนี้ผิด: สิ่งนี้จะเกิดขึ้นเฉพาะเมื่อคุณผสมแท็บและช่องว่างและคุณจะแก้ปัญหาด้วยการบังคับให้ทุกคนใช้แท็บแทนช่องว่าง
o0 '

0

คุณสามารถมีเค้กของคุณและกินเพื่อ ตั้งค่าเครื่องมือแก้ไขของคุณเพื่อขยายแท็บลงในช่องว่างโดยอัตโนมัติ

(นั่นจะเป็น:set expandtabกลุ่ม)


0

ฉันเดาว่าตัวแก้ไขข้อความ linux ส่วนใหญ่จะใช้ค่าเริ่มต้นที่ดูใหญ่มากโดยค่าเริ่มต้น ฉันไม่สามารถนึกถึงเหตุผลที่ดีอื่น ๆ ในการใช้ช่องว่างบนแท็บ


-1

นอกจากเหตุผลอื่น ๆ ที่มีชื่ออยู่แล้ว (ความสอดคล้องไม่เคยผสมช่องว่างและแท็บอื่น ๆ ) ฉันเชื่อว่ามีเหตุผลอีกสองสามข้อในการประชุมช่องว่าง 4 ข้อที่ควรทราบ สิ่งเหล่านี้ใช้กับ Python เท่านั้น (และอาจเป็นภาษาอื่นที่การเยื้องมีความหมาย) แท็บอาจดีกว่าในภาษาอื่น ๆ ขึ้นอยู่กับความชอบส่วนบุคคล

  1. หากบรรณาธิการไม่แสดงแท็บ (ซึ่งเกิดขึ้นขึ้นอยู่กับการกำหนดค่าในไม่กี่) ผู้เขียนคนอื่นอาจคิดว่ารหัสของคุณใช้ช่องว่าง 4, b / c เกือบทุกรหัสงูหลามที่เป็นสาธารณะใช้ได้; หากตัวแก้ไขเดียวกันนั้นมีความกว้างแท็บเท่ากับ 4 สิ่งที่น่ารังเกียจอาจเกิดขึ้นได้ - อย่างน้อยคนจนจะเสียเวลากับปัญหาการเยื้องซึ่งจะง่ายมากที่จะหลีกเลี่ยงโดยการยึดติดกับการประชุม ดังนั้นสำหรับฉันเหตุผลอันดับหนึ่งคือการหลีกเลี่ยงข้อบกพร่องด้วยความมั่นคง

  2. การ Reframing คำถามที่ดีกว่าแท็บหรือช่องว่างควรถามว่าข้อดีของแท็บคืออะไร ฉันเห็นโพสต์มากมายชื่นชมแท็บ แต่มีข้อโต้แย้งที่น่าสนใจสำหรับพวกเขา; บรรณาธิการที่ดีเช่น emacs, vi (m), kate, ... ทำการเยื้องที่เหมาะสมขึ้นอยู่กับความหมายของรหัสของคุณ - แม้ไม่มีแท็บ โปรแกรมแก้ไขเดียวกันสามารถกำหนดค่าให้รวมเข้ากับ backspace ได้อย่างง่ายดาย

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

  4. การใช้ช่องว่างสำหรับการเยื้องช่วยให้ "เทคนิคเลย์เอาต์" ที่อาจช่วยให้เข้าใจรหัสได้ง่ายขึ้น ตัวอย่างบางส่วนของสิ่งเหล่านี้แสดงอยู่ใน PEP8; เช่น.

    foo = long_function_name(var_one, var_two,
                             var_three, var_four)
    
    # the same for lists
    a_long_list = [1,
                   2,
                   # ...
                   79]
    
    # or dictionaries
    a_dict = {"a_key": "a_value",
              "another_key": "another_value"}

    แน่นอนข้างต้นสามารถเขียนเป็นอย่างดี

    foo = long_function_name(
        var_one, var_two,
        var_three, var_four)
    
    # the same for lists
    a_long_list = [
        1,
        2,
        # ...
        79]
    
    # or dictionaries
    a_dict = {
        "a_key": "a_value",
        "another_key": "another_value"}

    อย่างไรก็ตามหลังใช้รหัสบรรทัดเพิ่มเติมและบางครั้งบรรทัดน้อยกว่าจะแย้งว่าจะดีกว่า (b / c คุณได้รับเพิ่มเติมบนหน้าจอเดียว) แต่ถ้าคุณชอบการจัดแนวช่องว่าง (ควรได้รับการช่วยเหลือจากโปรแกรมแก้ไขที่ดี) ให้ความรู้สึกอิสระใน Python มากกว่าแท็บ [อืมฉันเดาว่าผู้แก้ไขบางคนอนุญาตให้คุณทำแท็บ w / แท็บเดียวกัน) - แต่ด้วยการเว้นวรรคพวกเขาทั้งหมดทำ ... ]

  5. กลับมาสู่ข้อโต้แย้งเดียวกับที่ทุกคนทำ - PEP 8 สั่งให้เว้นวรรค (ตกลงแนะนำอย่างยิ่ง) หากมาที่โครงการที่ใช้แท็บเท่านั้นแน่นอนว่าคุณมีทางเลือกน้อย แต่เนื่องจากการก่อตั้ง PEP 8 อนุสัญญาโปรแกรมเมอร์ Python เกือบทั้งหมดจึงคุ้นเคยกับรูปแบบนี้ สิ่งนี้ทำให้ง่ายขึ้นมากที่จะหาฉันทามติเกี่ยวกับรูปแบบที่เป็นที่ยอมรับโดยโปรแกรมเมอร์ส่วนใหญ่ ... และการที่คนเห็นด้วยกับสไตล์อาจจะยากมาก

  6. เครื่องมือที่ช่วยในการบังคับใช้สไตล์มักจะรับรู้ถึง PEP 8 โดยไม่ต้องใช้ความพยายามเป็นพิเศษ นั่นไม่ใช่เหตุผลที่ดี แต่เป็นเรื่องดีที่มีสิ่งต่าง ๆ ออกมานอกกรอบ


-3

ปัญหาสากลที่มีแท็บคือพวกเขาสามารถแสดงแตกต่างกันในสภาพแวดล้อมที่แตกต่างกัน
ในตัวแก้ไขที่กำหนดแท็บอาจเป็น 8 ช่องว่างหรืออาจเป็น 2
ในตัวแก้ไขบางตัวคุณสามารถควบคุมสิ่งนี้ได้ในขณะที่ตัวอื่น ๆ ที่คุณไม่สามารถทำได้

ปัญหาอื่นที่มีแท็บคือวิธีแสดงแท็บเหล่านั้นในเอาต์พุตที่พิมพ์ออกมา ฉันเชื่อว่าเครื่องพิมพ์ส่วนใหญ่ตีความแท็บเป็น 8 ช่องว่าง

ด้วยช่องว่างไม่ต้องสงสัยเลย ทุกอย่างจะเข้าแถวตามที่ผู้เขียนต้องการ


14
อีกคนหนึ่งที่เข้าใจผิดแท็บโดยพื้นฐาน ... รับเครื่องพิมพ์ดีดเชิงกลและเล่นกับมันซักพัก! 1 แท็บไม่เท่ากับ 8 ช่องว่าง! มันเท่ากับup_to_8_spaces ! otoh: ด้วยแบบอักษรที่มีสัดส่วนแท็บเป็นวิธีเดียวที่จะรับประกันการจัดตำแหน่ง

3
"ในเครื่องมือแก้ไขที่กำหนดแท็บอาจเป็น 8 ช่องว่างหรืออาจเป็น 2" ถ้าฉันชอบ 4-space และเพื่อนของฉันชอบ 8-space หรือ 2-space หรือ 3-space หรือ ฯลฯ จากนั้นเราก็สามารถเห็นด้วยกับแท็บได้เพราะ (เป็นตัวละครที่เน้นการเยื้อง ,) บรรณาธิการรู้ว่ามันคืออะไรและสามารถแสดงมันได้ ตาม ฉันเห็นโค้ดที่มีการเยื้องกว้าง 4 สเปซคุณเห็นมันด้วยการเยื้องกว้าง 8 สเปซเพื่อนแปลก ๆ ของเราใช้ช่องว่าง 3 ช่องของเขาและทุกอย่างก็เจ๋ง สถานการณ์ (โดยเฉพาะอย่างยิ่งใน Python!) ซึ่งความกว้างของแท็บเองนั้นจะมีความหมายที่หาได้ยากซึ่งแม้แต่ผู้เสนอพื้นที่ก็ยังไม่สามารถนำมาขึ้นได้
JamesTheAwesomeDude

-4

ในการอภิปรายระหว่างJim และ Thomas Woutersในความคิดเห็น

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

ฉันเห็นด้วยกับ Jim ในเรื่องนั้น - แท็บไม่ได้ชั่วร้ายในตัวเอง แต่มีปัญหา ...

ด้วยช่องว่างฉันสามารถควบคุมว่า"MY OWN CODE" มีลักษณะอย่างไรในตัวแก้ไขทุกคนในโลก ถ้าฉันใช้ช่องว่าง 4 ช่องแล้วไม่ว่าคุณจะเปิดตัวแก้ไขโค้ดอะไรมันก็จะมีระยะห่างจากระยะขอบซ้ายเท่ากัน ด้วยแท็บฉันอยู่ที่ความเมตตาของการตั้งค่าความกว้างของแท็บสำหรับตัวแก้ไข - แม้สำหรับรหัสของฉันเอง และฉันไม่ชอบสิ่งนั้น

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

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


6
คุณ“ อยู่ในความเมตตาของการตั้งค่าความกว้างแท็บสำหรับเครื่องมือแก้ไข” หรือไม่? หากตัวแก้ไขไม่อนุญาตให้คุณตั้งค่าความกว้างของแท็บที่คุณต้องการคุณอาจกำลังใช้ notepad.exe
user137369

4
@zigg นั้นไม่เกี่ยวข้องกับการโต้แย้งอย่างแน่นอนเนื่องจากเขา (เธอ?) กำลังพูดถึงเฉพาะเกี่ยวกับรหัสของเขา / เธอเอง (ข้อมูลนั้นเป็นตัวหนาแม้กระทั่งเป็นตัวเอียงและตัวพิมพ์ใหญ่ทั้งหมด) การอภิปรายไม่เกี่ยวข้องกับรหัสที่เกี่ยวข้อง
user137369

1
ผู้แก้ไขไม่ใช่เครื่องมือเดียวในการดูโค้ด นอกจากนี้ยังมี diffs, tracebacks, Github และหน้าเว็บอื่น ๆ และอื่น ๆ ที่จะเลือกความกว้างแท็บบางส่วนออกจากการควบคุมของคุณ (อาจ 8)
RemcoGerlich

ฉันเห็นประเด็นของคุณ คุณสามารถควบคุมวิธีการที่ทุกคนเห็นรหัสของคุณ (เกี่ยวกับการเยื้อง) ขั้นตอนต่อไปของคุณคือการควบคุมประเภทตัวอักษรและสีที่ทุกคนจะใช้เพื่อดูรหัสของคุณ หลังจากนั้นคุณก็พร้อมที่จะครองโลกแล้วไม่ใช่แค่บรรณาธิการโค้ด !!
Djunzu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.