มีวิธีในการสนับสนุนรูปแบบการเข้ารหัสที่แตกต่างกันในทีมพัฒนาหรือไม่


13

ปัญหา: นักพัฒนาสองคน => สามความคิดเห็นต่อการเยื้อง, การจัดฟันในบรรทัดใหม่หรือไม่ ฯลฯ

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

ดังนั้นคำถามคือ: มีวิธีให้โปรแกรมเมอร์แต่ละคนใช้สไตล์ของตนเอง แต่มีฐานรหัสทั่วไปภายในพื้นที่เก็บข้อมูลหรือไม่ ฉันคิดว่าบาง git / svn / ปลั๊กอินใด ๆ ซึ่งการเปลี่ยนแปลงระหว่างสไตล์ส่วนตัวและทั่วไปในการชำระเงินและกระทำ ดูเหมือนว่าฉันว่าส่วนที่ยุ่งยากในวิธีนี้คือการสนับสนุนความแตกต่างที่ถูกต้องระหว่างเวอร์ชันของไฟล์


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

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

8
บางทีอาจต้องมีการกล่าวถึงสิ่งอื่นที่พบได้บ่อยมาก: มีปัญหาจริงกับความแตกต่างของรูปแบบโค้ดหรือไม่? อย่าแก้ไขสิ่งที่ไม่แตก!
Joris Timmermans

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

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

คำตอบ:


20

ไม่คุณจะต้องสร้างมาตรฐาน หากคุณมีการเปลี่ยนแปลงสมาชิกในทีม B (ไม่ว่าจะเป็นเครื่องมือ IDE อัตโนมัติหรือด้วยตนเอง) จำนวนทั้งหมดของสมาชิกในทีมรหัส A ที่เขียนไว้จะถูกส่งไปและจะเป็นการเปลี่ยนแปลง

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

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


11

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


2
+1 ให้พวกเขาเลือกหนึ่งอัน แต่ทำให้พวกมันใช้ได้
ผ่อนผัน Herreman

ฉันต้องการจัดรูปแบบเป็นส่วนหนึ่งของมาตรฐานของภาษาการเขียนโปรแกรมเช่นนั้นโปรแกรมไม่เพียง "ถูกต้อง" หรือ "ไม่ถูกต้อง" แต่มีสถานะที่สามเช่นกัน "ถูกต้องและมีรูปแบบที่ดี"
JesperE

4
มันคือ (มากหรือน้อย) ในกรณีของไพ ธ อนโดยที่การเยื้องเป็นความหมายของภาษา
ผ่อนผัน Herreman

2
ไปไม่ได้อย่างเคร่งครัดบังคับใช้ดังกล่าว แต่มาพร้อมกับในตัวรหัสที่มา go fmtformater, ดูgolangtutorials.blogspot.fr/2011/06/…
Clement Herreman

1
@JesperE ที่จะดำเนินการในหลามกับPEP8และเครื่องมือที่สอดคล้องกันในชื่อ inventively pep8
Phihag

8

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

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

2
ฉันจะเพิ่มนักพัฒนามืออาชีพที่มักจะรวมสไตล์ของกันและกันอยู่ดี พวกเขาจะมีการสนทนาสั้น ๆ อย่างไม่เป็นทางการในบางประเด็นและมาถึงข้อตกลง
Joris Timmermans

ใช้งานได้ดีโดยมีข้อแม้ว่าการใช้การจัดรูปแบบรหัสอัตโนมัติจะต้องถูกเก็บไว้ให้น้อยที่สุด (หากไม่ถูกห้าม)
grahamparks

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

ฉันคิดว่าคำตอบนี้อาจพลาดส่วน "การจัดรูปแบบอัตโนมัติ" ของคำถามหรือไม่
Joris Timmermans

ความหลากหลายของรูปแบบระหว่างไฟล์นั้นยากต่อการจัดการมากกว่าแค่การมีสไตล์ที่สอดคล้องกัน
Andy

4

คำตอบสั้น ๆ คือไม่

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

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

  1. รายการเลย์เอาต์เช่นการแท็บการเยื้องการใช้ {, (,
  2. ชื่อตัวแปรและฟังก์ชันเช่น CamelCase, สัญลักษณ์ของฮังการี
  3. การจัดการข้อยกเว้นวิธี / เวลา / สถานที่ที่จะดำเนินการ
  4. รหัสความคิดเห็น คุณอ้างอิงเอกสารการออกแบบหมายเลขข้อผิดพลาดและอื่น ๆ เสมอ

เอกสารมาตรฐานช่วยให้มั่นใจได้ว่ารหัสนั้นง่ายต่อการอ่านบำรุงรักษาและสอดคล้องในอนุสัญญา

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

โดยปกติเมื่อสร้างเอกสารมาตรฐานการเข้ารหัสฉันตรวจสอบมาตรฐานอุตสาหกรรมสำหรับภาษาที่ฉันใช้ (C, C #, SQL) ให้ใช้มาตรฐานที่เหมาะสมที่สุดเวียนไปที่นักพัฒนาอาวุโส / ผู้มีอิทธิพลมากที่สุดเพื่อแสดงความคิดเห็นรวมความคิดเห็นตามความเหมาะสม ปล่อยเอกสาร


1
ในทางปฏิบัติจริงร้านค้าหลายแห่งมีนักพัฒนาซอฟต์แวร์หนึ่งคนซึ่งโดยปกติแล้วจะเป็น Old Hand หรือ PrimaDonna ที่ดูเหมือนจะมีความสุขในการสร้าง Formatting Holy Wars ให้กับคนอื่น ๆ มืออาชีพ == อะไรก็ตามที่ฉันพูด สิ่งที่พวกคุณพูด == ไม่ใช่มืออาชีพ แล้วมันก็กลายเป็น devolves ฉันเคยเห็นมาตรฐานการเข้ารหัสซึ่งกำหนดสิ่งขั้นต้นเช่น "ใช้ตัวแปรทั่วโลกจำนวนมากไม่เคยสร้างคลาสใหม่หลีกเลี่ยงการเขียนโปรแกรมเชิงวัตถุในทุกค่าใช้จ่ายและไม่เปลี่ยนแปลงอะไรเลย" น่าเศร้าที่ไม่มีข้อ จำกัด ในสิ่งที่ผู้คนพยายามยัดเข้าไปในขอบเขตของสิ่งที่เรียกว่า "มาตรฐานการเข้ารหัส"
Warren P

4

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

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

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

นี่คือการอภิปรายที่คล้ายกันในกองมากเกิน


2
สังเกตคำตอบที่ได้รับการยอมรับในการอภิปรายที่เชื่อมโยงด้วย!
Joris Timmermans

1

การฟอร์แมตโค้ดอัตโนมัติแบบทางเดียวอาจเป็นวิธีแก้ปัญหาที่ใช้การได้หากคุณ:

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

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


1

อย่างที่คุณสามารถ มันคือทั้งหมดที่เกี่ยวกับการไม่เหงื่อออกของเล็ก ๆ น้อย ๆ

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

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

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

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