มีประเด็นคลาสสิกอย่างแท็บกับสเปซอยู่แล้ว แต่ครั้งนี้เป็นคำถามเกี่ยวกับการใส่ช่องว่างครับ
ยกตัวอย่างเช่น สมมติว่ามีโค้ดแบบตัวอย่างด้านล่าง
ก็จะมีทั้งแบบที่เขียนให้ from กับเครื่องหมายเท่ากับอยู่ในคอลัมน์เดียวกัน และแบบที่ไม่จัดให้ตรงกัน
// Case A.
import potato from 'potato';
import sweetpotato from 'sweetpotato';
const red = 0xff0000;
const orange = 0xff8000;
// Case B.
import potato from 'potato';
import sweetpotato from 'sweetpotato';
const red = 0xff0000;
const orange = 0xff8000;
ชอบแบบไหนในสองกรณีนี้ ฝากคอมเมนต์กันหน่อยครับ
ที่สำคัญคือผมสงสัยว่าจริง ๆ แล้วสไตล์แบบนี้มีชื่อเรียกเฉพาะไหม
- ชอบ A
- ชอบ B
- ชอบ X แต่ที่บริษัทใช้ Y (...)
10 ความคิดเห็น
ผมชอบแบบ B และที่บริษัทก็ใช้แบบ B ครับ
ส่วนใหญ่ชอบแบบ A มากกว่า
แต่บางครั้ง เวลาต้องกำหนดค่าคงที่และตัวแปรมากกว่า 10 บรรทัด ก็จะใช้อยู่บ้างเป็นครั้งคราว
ฉันเลือก A ค่ะ ถ้า B ไม่ได้ถูกกำหนดเป็นคอนเวนชันไว้ เวลาทำงานร่วมกันมันจะไม่ค่อยสะดวกสำหรับฉันน่ะค่ะ
ฉันชอบ A มากกว่า
คุณชอบสไตล์แบบไหน?
บางครั้งผมก็เห็นโค้ดที่คนอื่นเขียนด้วยแบบ B แล้วทุกครั้งก็รู้สึกประทับใจเพราะมันดูอ่านง่ายมาก แต่ถ้าเขียนด้วย B แล้ว formatter กับ linter จะโวยวายกันหนักมาก เลยแทบไม่เคยเขียนด้วย B เลยสักครั้งเดียว แถมยังขี้เกียจเขียนนิดหน่อยด้วยครับ
บางครั้งก็ใช้สไตล์ B แต่จะเขียนโค้ดให้ตรงกับตำแหน่ง tab stop
ข้อเสียคือ diff มักลามไปยังบรรทัดอื่นโดยไม่จำเป็น เลยไม่ค่อยชอบเท่าไรครับ
แน่นอนว่าดู diff แบบ ignore white space ก็ได้ แต่คงไปบังคับให้คนทำงานคนอื่นหรือคนรีวิวโค้ดทำแบบนั้นด้วยไม่ได้..
ส่วนใหญ่แล้วผมชอบแบบ A มากกว่า
มีอยู่เพียงครั้งเดียวตอนที่ผมเขียนโค้ดแล้วรู้สึกว่ากรณีแบบ B ดีกว่า นั่นคือโค้ดที่ต้องเชื่อมต่อกับ DLL ภายนอก ซึ่งผมใช้วิธีแบบ B เพื่อให้อ่านง่ายขึ้นในส่วนที่กำหนดค่าคงที่ต่าง ๆ สำหรับใช้งานกับ DLL นั้น
แน่นอนว่าอีกเหตุผลที่ทำให้เลือกวิธีแบบ B ได้ก็เพราะโค้ดสำหรับเชื่อมต่อนี้แทบไม่มีอะไรต้องเปลี่ยนแปลง เขียนครั้งเดียวแล้วแทบไม่ได้แตะอีกเลย
ถ้าเป็นโค้ดที่เปลี่ยนบ่อย ผมก็คงจะยึดวิธีแบบ A เป็นหลัก
ฉันชอบการจัดเรียงอัตโนมัติด้วย formatter ตามแต่ละภาษา!
(ปกติจะเป็น A แต่เหมือนว่า
gofmtของ Go จะจัดให้เป็น B ครับ)แบบ A!
สไตล์ B ถ้าไม่มี formatter แยกต่างหากจะดูแลจัดการค่อนข้างลำบาก แล้วการจัดแนวก็อาจเพี้ยนได้ขึ้นอยู่กับฟอนต์ด้วย...