มันเป็นไปได้หรือไม่ที่จะฟอร์แมตโค้ดนักพัฒนาซอฟต์แวร์อื่นในขณะที่แก้ไข / เพิ่มโมดูล?


13

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

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

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


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

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

1
หากคุณกำลังเข้ารหัสใน c # ให้ติดกับ StyleCop หากเป็นภาษาอื่น ๆ ให้ลองเลือกเครื่องมือที่ดีไม่เอนเอียง
งาน

5
นี่คือ "ฉันกำลังเปลี่ยนรูปแบบ ... เพราะฉันคิดว่ามันควรจะแตกต่าง" หรือว่า "ฉันกำลังเปลี่ยนรูปแบบ ... ตรงกับมาตรฐาน " ... คำถามที่แตกต่างกันอย่างมาก
WernerCD

1
@Thorbjorn ฉันจะไม่พิจารณาสาขาที่แก้ไขการจัดรูปแบบในทุกไฟล์ 1 ไฟล์ต่อการกระทำฆ่าประวัติ อย่างไรก็ตามการแก้ไขในระหว่างการคอมมิชชันเดียวกันนั้นแย่มาก (ฉันเดาว่าพวกเขาสามารถใช้บางสิ่งบางอย่างเช่นgit addเลือกทำบางสิ่งบางอย่างแต่ฉันเดาว่าคนส่วนใหญ่ใช้สิ่งที่เทียบเท่าsvn commitหรือgit commit -a)
ทางเลือก

คำตอบ:


19

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


10
ประโยคแรกที่นี่สำคัญ ตรวจสอบให้แน่ใจว่าคุณปฏิบัติตามมาตรฐานที่ตกลงกันไว้จริง ๆ แล้วไม่ใช่แค่ทำการเปลี่ยนแปลงเพราะคุณชอบพวกเขา
โธมัสโอเวนส์

5

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

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

แก้ไข: ในบริบทของคำถามนี้การจัดรูปแบบตามมาตรฐานมีความเหมาะสม ในกรณีที่ไม่มีมาตรฐานฉันขอแนะนำให้สนับสนุนมาตรฐานและไม่ทำการฟอร์แมตใหม่จนกว่าจะมีมาตรฐานสำหรับรูปแบบ การจัดรูปแบบใหม่ตามรสนิยม / มาตรฐานส่วนบุคคลไม่ควรกระทำด้วยรหัสที่เป็นของโครงการ


2
+1 สำหรับ "ตรวจสอบรหัสก่อนทำการเปลี่ยนแปลงคุณสมบัติของคุณ"
bdoughan

1
+1 อีกครั้งสำหรับ "ตรวจสอบการจัดรูปแบบการเปลี่ยนแปลงก่อนที่จะทำการเปลี่ยนแปลงคุณสมบัติของคุณ" และ "เป็นการดีที่จะเรียกใช้การทดสอบการยืนยันหลังจากการฟอร์แมตใหม่" โดยหลักการแล้วเราควรรันการทดสอบการตรวจสอบก่อนการเช็คอินแต่ละครั้ง
leed25d

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

@Matthiew M: จริง แต่ส่วนใหญ่พวกเขาจะทำก่อนเพื่อปรับปรุงการบำรุงรักษาก่อนการบำรุงรักษา นักพัฒนาบางคนมีเวลาทำหลังจากความจริง นอกจากนี้หากรหัสต้องได้รับการอัพเกรดให้ผ่านการทดสอบการเช็คอินอัตโนมัติจะต้องทำการฟอร์แมตใหม่ก่อนเพื่อรักษาการแยกของแพทช์ด้านความงามและการใช้งานได้
BillThor

3

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


OP ถามเกี่ยวกับการฟอร์แมตไม่ใช่การรีแฟคเตอร์
quant_dev

ฉันรู้ว่า; ผมไม่บอกว่าผมพิจารณาว่ายังรวมถึงการจัดรูปแบบ :)
เวย์น Molina

2

ฉันทำสิ่งนี้ตลอดเวลา รหัสเก่าควรจะอยู่ในมาตรฐานเดียวกันกับรหัสใหม่และถ้าคุณไม่แก้ไขในขณะที่คุณกำลังทำงานอยู่จะไม่มีใครทำ ฉันคิดว่าสิ่งนี้มีความสำคัญภายใต้กฎลูกเสือ


2

ฉันคิดว่านี่เป็นวิธีปฏิบัติที่ดีและเป็นส่วนที่จำเป็นในการบำรุงรักษาโค้ด

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


1
+1 สำหรับการกระทำที่แยกต่างหาก พยายามที่จะคิดออกว่าการเปลี่ยนแปลงรหัสใดในการกระทำเมื่อรหัสได้รับการจัดรูปแบบในเวลาเดียวกันคือ PITA เครื่องมือ diff ของคุณไม่มีประโยชน์หากทุกบรรทัดในไฟล์มีการเปลี่ยนแปลง
เดฟเคอร์บี

2

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


1

ใช่. โปรด "แก้ไข" รหัสตามที่เห็นสมควร เช่นเดียวกับโปรแกรมเมอร์อย่างจริงจังบอกไว้ในหนังสือของพวกเขาThe Pragmatic Programmerไม่มีหน้าต่างแตก หากรหัสไม่ถึงเกณฑ์ฉันถือว่ามันเป็นหน้าต่างที่เสียหาย


1

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

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

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


1

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

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

ฉันทำงานในโครงการหนึ่งครั้งกับผู้พัฒนาที่เป็นเจ้าของมาก ในช่วงหลายปีที่ผ่านมาฉันได้พัฒนาวิธีการจัดรูปแบบของโค้ดที่ฉันรู้สึกว่าอ่านง่ายลดความผิดพลาดโดยนัยและการจัดทำเอกสารด้วยตนเองน้อยลง ในทางกลับกันผู้ชายคนนี้ชอบใช้คุณสมบัติโดยนัยทั้งหมดที่มีเส้นยาวซึ่งกว้าง 300 ตัวอักษรดังนั้นคุณต้องมีจอภาพขนาด 30 นิ้วให้อ่านเพราะเขาเชื่อว่าการนับบรรทัดนั้นสำคัญกว่าการอ่านได้เขาใช้เวลาครึ่งวัน พัดผ่านรหัสของฉันเปลี่ยนเป็น "มาตรฐานที่ต้องการ" ของเขา ... ในขณะที่ฉันยังคงพัฒนาในแบบคู่ขนานฉันมาในเช้าวันรุ่งขึ้นเพื่อหางานที่มีมูลค่าสองวันในรูปแบบที่ยุ่งเหยิงของเขามันหยาบคายและเสียเวลา

ตอนนี้ถ้านักพัฒนาหายไปและคุณมี "รูปแบบที่ดีกว่า" ไปเลย


0

ทำการฟอร์แมตโค้ดทุกครั้งถ้า IDE ของคุณสามารถทำได้

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

ตัวอย่างเช่นใน eclipse คุณสามารถรันตัวจัดรูปแบบก่อนและจัดการการนำเข้าสำหรับฐานรหัสทั้งหมด จากนั้นอย่าลืม ctrl + alt + f ก่อนที่คุณจะบันทึก

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