Python Coding มาตรฐานเทียบกับผลิตภาพ


18

ฉันทำงานให้กับองค์กรด้านมนุษยธรรมขนาดใหญ่โดยใช้ซอฟต์แวร์สร้างโครงการที่สามารถช่วยชีวิตผู้คนได้ในกรณีฉุกเฉินโดยเร่งการแจกจ่ายอาหาร องค์กรพัฒนาเอกชนหลายแห่งต้องการซอฟต์แวร์ของเราอย่างยิ่งยวด

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

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

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

สิ่งนี้เริ่มทำให้เหนียว ตอนนี้ฉันกำลังพยายามแก้ไขสคริปต์ต่างๆ, autopep8, pep8ify และ PythonTidy เพื่อพยายามจับคู่อนุสัญญา นอกจากนี้เรายังเรียกใช้ pep8 เทียบกับซอร์สโค้ด แต่มีการแก้ไขโดยนัยมากมายสำหรับมาตรฐานของเราซึ่งยากที่จะติดตามพวกเขาทั้งหมด นักพัฒนานำง่ายๆเลือกข้อบกพร่องที่สคริปต์ pep8 ไม่ได้รับและตะโกนใส่เราในการประชุมสแตนด์อัพครั้งต่อไป ทุกสัปดาห์จะมีการเพิ่มมาตรฐานการเข้ารหัสใหม่ซึ่งบังคับให้เราเขียนรหัสที่มีอยู่, ใช้งาน, ที่ทดสอบอยู่ ขอบคุณสวรรค์ที่เรายังมีการทดสอบอยู่ (ฉันหวนคืนบางข้อผูกพันและแก้ไขสิ่งที่เขาลบออกไป)

ในขณะที่มีแรงกดดันเพิ่มขึ้นเพื่อให้ตรงตามกำหนดเวลา

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

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


4
โปรดจำไว้ว่ามาตรฐานการเข้ารหัสมีวัตถุประสงค์เพื่อเพิ่มผลผลิตในระยะยาว สิ่งนี้มาพร้อมกับต้นทุนการผลิตในระยะสั้นหากโครงการที่มีอยู่ไม่ปฏิบัติตามมาตรฐานใด ๆ เป็นเวลานาน
Arseni Mourzenko

1
เพียงตั้งโปรแกรม Eclipse และ PyDev เพื่อทำการฟอร์แมตโค้ดของคุณตามมาตรฐานการเข้ารหัส มันเป็นเรื่องของการกรอกกล่องโต้ตอบสองสามกล่อง
user16764

1
@DemianBrecht - ร่วมมือประพันธ์มาตรฐานการเข้ารหัสซึ่งจะมีการกำหนดและตกลงโดย coders ทั้งหมดเป็นสิ่งที่ดีและสามารถปรับปรุงประสิทธิภาพการผลิตในระยะยาว มาตรฐานการเข้ารหัสแบบเผด็จการที่กำหนดจากด้านบนโดยไม่มีการบายอินจากทีมเป็นเรื่องใหญ่เสียเวลาและสามารถลงโทษโครงการเพื่อความซบเซาหรือแม้แต่การถดถอยตามตัวอย่างที่นักพัฒนาลีดเรียกว่าทิ้งการทดสอบเพราะรหัสใหม่ มาตรฐานใหม่ล้มเหลวในการทดสอบเหล่านั้น สุจริต WTF ไหม?
บูธมาร์ค

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

1
@ Dessert Brecht: ฉันแน่ใจว่าประเด็นพื้นฐานในคำถามนี้ไม่ใช่มาตรฐานการเข้ารหัสเช่นนี้ แต่ความจริงที่ว่าปัญหาเกี่ยวกับเครื่องสำอางที่มีรหัสมีความสำคัญสูงกว่าโดยทั่วไปแล้วสิ่งอื่นในโครงการที่ล่าช้าและมีความสำคัญสูง .
Buhb

คำตอบ:


27

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

  • ให้คำวิจารณ์ที่สร้างสรรค์เกี่ยวกับความคิดของพวกเขา แต่เมื่อการตัดสินใจไม่ได้ส่งเสียงครวญครางอย่างต่อเนื่อง
  • ทำทุกสิ่งที่ทำได้เพื่อทำให้การเขียนง่ายขึ้น
  • หยุดเครียด วันครบกำหนดที่ไม่ได้รับนั้นเป็นปัญหาของฝ่ายบริหารไม่ใช่ของคุณ ทำอย่างดีที่สุด แต่อย่ารับผิดชอบต่อการตัดสินใจที่ไม่ดีของพวกเขา
  • ถ้าคุณรู้บางสิ่งที่อาจช่วยได้ให้บอกพวกเขา การเอ่ยถึง standups ของคุณทำให้ดูเหมือนว่าคุณกำลังพยายามทำตัวคล่องแคล่ว แต่ที่เหลือไม่ได้ฟังดูวุ่นวายมากนัก ดูว่าคุณสามารถส่งมอบฟังก์ชันการทำงานที่ จำกัด ก่อนหน้านี้ได้หรือไม่แทนที่จะพยายามทำตามกำหนดเวลาใหญ่ ๆ สร้างเรื่องราวของผู้ใช้สำหรับการเขียนซ้ำเพื่อให้ชัดเจนว่าพวกเขาส่งผลกระทบต่อ Backlog อย่างไร
  • เริ่มมองหางานอื่น อย่างจริงจัง. บริษัท ในรัฐดังกล่าวอยู่ไม่ไกลจากการเริ่มต้นยิงประชาชน
  • รับ "บอกคุณแล้ว" พิมพ์เสื้อยืด :-)

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

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

7

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

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


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

4

ฉันผิดหรือไม่ที่จะตั้งคำถามกับการปฏิบัติตามมาตรฐานการเข้ารหัส?

มันขึ้นอยู่กับกลุ่ม โดยส่วนตัวแล้วฉันคิดว่าทุกสิ่งควรถูกสอบสวน บางคนถามว่าจะดูถูก; ที่ฉันไม่ไว้วางใจพวกเขา

มีใครอีกบ้างที่ประสบสถานการณ์คล้ายกันและพวกเขาประสบความสำเร็จได้อย่างไร?

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

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


3

มาตรฐานเป็นสิ่งที่ไม่ควรนำมาวางในโครงการล่าช้าพร้อมกำหนดเวลาสิ้นสุด เป็นสิ่งที่ควรวางไว้ในช่วงต้นของโครงการหรือเมื่อมีเวลาวางไว้ในตารางโครงการ (ควรโพสต์เรือเริ่มต้น) สำหรับ (อาจ) refactor รหัสผิดขนาดใหญ่

หากสิ่งนี้เกิดขึ้นจริงในสายโครงการมันเป็นความผิดพลาดที่เกิดจากผู้นำของคุณ (IMHO)

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

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

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


1

คำถามของคุณคือ '' ฉันผิดไปหรือเปล่าที่จะตั้งคำถามกับการปฏิบัติตามมาตรฐานการเข้ารหัส? ' http://c0x.coding-guidelines.com/Introduction.pdf (สำหรับภาษาการเขียนโปรแกรม C) มีการศึกษาอ้างอิงเกี่ยวกับคุณค่าของแนวทางการเข้ารหัส ดูส่วนที่ 9 เริ่มต้นในหน้า 39

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

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

ดูเหมือนว่าทั้งสองข้างจะมีอารมณ์ความรู้สึกมากมาย - พยายามพูดคุยอย่างมีเหตุผล


1

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

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

พยายามผลักดันการอภิปรายไปในทิศทางของการพยายามหาหนทางที่จะบรรลุเป้าหมายร่วมของคุณ ส่งมอบซอฟต์แวร์ที่ทำงานและบำรุงรักษาได้ทันที

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

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


-2

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

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


-3

ซอฟต์แวร์ที่สามารถช่วยชีวิตคนในกรณีฉุกเฉินโดยเร่งการแจกจ่ายอาหาร

ฉันเชื่อในมาตรฐานการเข้ารหัสที่ดี แต่ฉันเชื่อว่าการช่วยชีวิตมีความสำคัญมากกว่า

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

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


1
จะเกิดอะไรขึ้นหลังการจัดส่ง สอดคล้องกับมาตรฐานการเข้ารหัสโดยไม่ทำลายฟังก์ชั่น? มีการทดสอบหรือไม่
Martijn Pieters

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