จะทำอย่างไรถ้าเพื่อนร่วมงานกำลังแก้ไขรหัสของคุณเพื่อเปลี่ยนรูปลักษณ์?


16

คุณควรทำอย่างไรถ้าเพื่อนร่วมงานกำลังแก้ไขรหัสของคุณ

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


9
ฉันคิดว่าคุณมีปัญหากับสิ่งนี้ ถ้าเป็นเช่นนั้นทำไม มันทำให้โค้ดแย่ลงหรือไม่?
Zaz

3
@ Josh: ใช่ในความเป็นจริงมันทำให้โค้ดแย่ลงเพราะมันยากที่จะดูแลโดยโปรแกรมเมอร์คนอื่น ๆ กว่าคนที่เขียนมัน
Robert Koritnik

4
ให้เขาทำงานมากขึ้นเพื่อทำ
Oscar Cabrero

4
@ Robert - ฉันคิดว่าคุณพลาดจุดของ @ Josh การเปลี่ยนลักษณะที่ปรากฏของรหัสอาจทำให้การดูแลรักษาง่ายขึ้น ... โดยเฉพาะถ้ารูปแบบเริ่มต้นไม่ดีพอ
สตีเฟ่นซี

4
เป็นรหัสของคุณจริง ๆหรือเป็นของทีมหรือไม่
Eric King

คำตอบ:


28

พูดคุยกับพวกเขาเกี่ยวกับเรื่องนี้ เข้าสู่การสนทนากับทัศนคติของ "พวกเขาไม่ได้ทำสิ่งนี้เพื่อรบกวนฉันหรือเพราะพวกเขามีรูปแบบของความผิดปกติครอบงำ - บังคับ; พวกเขากำลังพยายามทำให้รหัสของฉันดีขึ้น"

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

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

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

แต่คุณจะไม่มีทางรู้ถ้าคุณถาม


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

@ Matt: จุดที่ยอดเยี่ยม
BlairHippo

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

5
โอ้ฉันไม่ได้บอกเพื่อนร่วมงานของทอม ISN'T OCD ที่ไม่เป็นระเบียบพร้อมกับขอบเขตที่ไม่ดี ฉันแค่บอกว่าจะเข้าสู่การสนทนากับความคิดของ "สิ่งที่ผิดกับคุณ?!" ไม่ใช่วิธีที่ดีในการสนทนาที่มีประสิทธิผล :-)
BlairHippo

1
@Chris ไม่จำเป็นต้องกังวลเกี่ยวกับเหตุผลฉันมักจะ Ctrl + K + D!
Nathan Taylor

16

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

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

หากสิ่งอื่นล้มเหลวให้เปลี่ยนการเช็คอินกลับคืน ;)

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


9

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

หากคุณไม่ได้ใช้มาตรฐานการเข้ารหัสอาร์กิวเมนต์ทั้งหมดของสิ่งที่ถือเป็น 'รหัสที่ดี' จะกลายเป็นเรื่องส่วนตัวเกินไป ดังนั้นทำไมคุณควรใช้มาตรฐานการเข้ารหัส :)


8

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

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

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

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


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

6

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


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

ฉันจะทำให้เป็นอาวุธ
JeffO

5

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


5

Visual Studio ของ IDE มีตัวเลือกที่เรียกFormat Documentว่าจะจัดรูปแบบโค้ดตามกฎที่ผู้ใช้ตั้งไว้ใน IDE อาจเป็นเพื่อนร่วมงานของคุณที่ใช้สิ่งนี้ (ไม่ว่าจะโดยอัตโนมัติโดยไม่ทราบหรือโดยการพิจารณาใบสมัคร) บางที IDE ของพวกเขาใช้ช่องว่างแทนแท็บหรือในทางกลับกันและสิ่งเหล่านี้จะถูกนำไปใช้โดยอัตโนมัติโดยที่ไม่รู้ตัว แต่คุณต้องคุยกับพวกเขาเพื่อหาคำตอบ

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


1
"(อย่างไรก็ตามฉันจะไม่ฟอร์แมตใหม่ถ้ามันเรียบร้อย แต่ไม่ใช่ความชอบของฉัน)" - กฎที่สำคัญมากที่ต้องติดตาม +1
Zaz

แนวทางการพัฒนาของเรามีแนวโน้มที่จะทำให้รูปแบบโค้ดมากขึ้นในมุม 'แนะนำ' ฉันจัดรูปแบบโค้ดตามคำแนะนำในระดับไฟล์โดยอัตโนมัติหากพบว่าอ่านยาก
Joeri Sebrechts

3

หากเขาเปลี่ยนเพื่อให้เป็นไปตามมาตรฐานการเข้ารหัสของทีมคุณควรปฏิบัติตามมาตรฐานในครั้งต่อไป

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

... ทีมของคุณมีชุดมาตรฐานการจัดรูปแบบโค้ดที่ทุกคนใช้ใช่ไหม


2

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

แน่นอนว่านี่คือ งานที่เกิดขึ้นครั้งคราวเนื่องจากมันทำลายฟังก์ชันการทำงาน "โทษ" ใน SVN

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


2

การประชุมรหัสเป็นคำตอบ คุณควรมีที่ทำงาน ถ้าคุณไม่เริ่มตอนนี้ (จุดเริ่มต้นที่ดีคือคู่มือสไตล์ google ) เมื่อมีการเขียนกฎ (หรืออย่างน้อยที่รู้จักกันทั่วไป) กฎคำตอบสำหรับคำถามของคุณจะไม่สำคัญ


1

ฉันรู้สึกว่าคุณคิดว่าเป็นเรื่องน่ารังเกียจที่จะทำเช่นนั้น ... ? ตัวอย่างเช่นฉันเองจะแก้ไขรหัสนี้ทันที

int myFunction( ) {

    int i ;
  return  0;

}

ที่จะกลายเป็น

int myFunction() {
    int i;
    return 0;
}

ดังนั้น ... ฉันควรถูกลงโทษเนื่องจากการกระทำของฉัน? ในชีวิตจริงฉันมีบันทึก SVN มากมายอ่าน 'การจัดรูปแบบ' ;-)


0

ใช้เครื่องมือตรวจสอบสไตล์

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

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


ฉันต้องลงคะแนนนี้ StyleCop คือการนำความคิดที่ดีไปใช้ 1) มันทำงานหลังจาก build ซึ่งทำให้เป็นตัวฆ่าเวลาที่สำคัญในโครงการขนาดใหญ่ 2) มันเป็นกฎเริ่มต้นที่ขัดแย้งกับค่าเริ่มต้นของ VS ในบางกรณี 3) กฎบางอย่างไม่มีการใช้งานอย่างหมดจด มันบ่นเกี่ยวกับ "//" โดยไม่ต้องเว้นวรรคต่อท้ายแล้วบอกให้คุณใช้ "////" อีกครั้งหลังจากบิลด์ นั่นเป็นส่วนที่แย่ที่สุด มันจะไม่เลวร้าย แต่ส่วนสร้างหลังจากฆ่าคุณจริง ๆ ในโครงการขนาดใหญ่ที่มีเวลาสร้างนาน
MIA

ฉันจะไม่เห็นด้วยกับคุณในหลาย ๆ ด้านที่คุณได้ชี้ให้เห็น คุณสามารถกำหนดวิธีการทำงานของการตรวจสอบสไตล์ ฉันยังใช้กฎของตัวเองที่ให้การจัดรูปแบบที่ฉันต้องการ เกี่ยวกับความเร็วฉันบอกไม่ได้ว่ามันยอดเยี่ยม แต่ในเครื่องที่ดีมันควรจะทำงานได้ดี ลองนึกถึงความเร็วของ C ++ copiler ในตอนต้นของยุค 90 ที่คุณสามารถไปชงชาในเวลาเดียวกัน ในขณะที่งานสร้างของคุณล้มเหลว !!!!!! ;)
Robert Koritnik

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

+1 สิ่งนี้ไม่เกี่ยวกับ StyleCop อย่างชัดเจน .. (StyleCop หรือคล้ายกัน ) และนั่นเป็นความคิดที่ดีมาก กำหนดชุดของกฎกำหนดค่าเครื่องมือที่คุณเลือกและใช้กับมันตลอดไป
Bruno Schäpper

วันนี้เรามี Grunt อึก ฯลฯ ที่สามารถทำตามขั้นตอนนี้เหมือน StyleCop ทำในอดีต
Robert Koritnik

0

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

ทำไม?

มีสองเหตุผลหลักในการ refactor:

  1. เพื่อปรับปรุงรหัส / การออกแบบก่อนที่จะสร้างสิ่งที่ดีที่สุด: มันยากที่จะเกิดขึ้นกับรหัสที่ดีในการพยายามครั้งแรก ความพยายามครั้งแรกที่จะใช้การออกแบบเริ่มต้นใด ๆ จะแสดงให้เราเห็นว่าเราตีความผิดหรือลืมตรรกะบางอย่าง

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

เมื่อไหร่?

  1. ยิ่งเร็วเท่าไหร่ก็ยิ่งดีเท่านั้น

  2. เร็วขึ้นและมีความเสี่ยงน้อยกว่าในการปรับเปลี่ยนรหัสผ่าน refactored เร็ว ๆ นี้แทนที่จะรอ refactor เพื่อให้โค้ดใกล้จะเสร็จสมบูรณ์

อะไร?

  1. รหัสทั้งหมดและการออกแบบทั้งหมดเป็นตัวเลือกสำหรับการปรับโครงสร้างใหม่

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

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

ไชโย

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