การเปลี่ยนสไตล์การเขียนโค้ดในโครงการโอเพ่นซอร์สนั้นไม่เป็นไปตามที่ควรหรือไม่


38

เมื่อเร็ว ๆ นี้ผมมาในจำนวนของโอเพนซอร์สทับทิม (หรือส่วนใหญ่ของมันเป็นทับทิม) โครงการบน GitHubว่าเมื่อตรวจสอบด้วยเครื่องมือวิเคราะห์รหัสเช่นRubocopสร้างจำนวนมากของการกระทำผิด

ตอนนี้ความผิดส่วนใหญ่เหล่านี้รวมถึงการใช้เครื่องหมายอัญประกาศคู่แทนการอ้างอิงเดี่ยว (เมื่อไม่มีการแก้ไข) ไม่ปฏิบัติตามกฎ 2 ช่องว่างต่อกฎระดับมากกว่ากฎความยาวบรรทัด 80 อักขระหรือใช้{และ}สำหรับบล็อกหลายบรรทัด

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

แม้ว่าจะมีขนาดเล็กและง่ายต่อการแก้ไขมันเหมาะสมหรือไม่ที่จะเปลี่ยนรูปแบบการเข้ารหัสของโครงการโอเพ่นซอร์สโดยการแก้ไขความผิดและทำการร้องขอแบบดึง ฉันยอมรับว่าบางโครงการเช่น Rails ไม่ยอมรับการเปลี่ยนแปลงเครื่องสำอางและบางอันก็ใหญ่เกินกว่าที่จะ "แก้ไข" ทั้งหมดในครั้งเดียว (ตัวอย่างเช่น Rails สร้างความผิดมากกว่า 80,000 ครั้งเมื่อ Rubocop ทำงาน - ไม่ว่าพวกเขาจะมีการเข้ารหัสขนาดเล็กอนุสัญญาที่ควรปฏิบัติตามเมื่อมีส่วนร่วม) ท้ายที่สุดแล้วRuby Style Guideมีเหตุผลร่วมกับเครื่องมือเช่น Rubocop

ผู้คนชื่นชมความสอดคล้องดังนั้นการเปลี่ยนแปลงประเภทนี้เป็นการทำสิ่งที่ดีสำหรับชุมชน Ruby โดยทั่วไปใช่ไหม

[ผู้แต่งคู่มือ Ruby Style] ไม่ได้เกิดขึ้นกับกฎทั้งหมด - พวกเขาส่วนใหญ่มาจากอาชีพที่กว้างขวางของฉันในฐานะวิศวกรซอฟต์แวร์มืออาชีพข้อเสนอแนะและคำแนะนำจากสมาชิกของชุมชน Ruby และหลากหลาย ทรัพยากรการเขียนโปรแกรม Ruby ที่ได้รับการยอมรับอย่างสูงเช่น "Programming Ruby 1.9" และ "The Ruby Programming Language" ~ ที่มา: คู่มือสไตล์ทับทิม

การทำตามสไตล์การเขียนรหัสชุมชนและการปฏิบัติที่ดีที่สุดนั้นไม่สนับสนุนการปฏิบัติที่ไม่ดีใช่หรือไม่


3
คำถามที่คล้ายกัน: ฉันควรสร้างคลาส F จากสภาพภูมิอากาศของรหัสอีกครั้งหรือไม่ แต่ให้ความสำคัญกับสถาปัตยกรรมมากกว่า
amon


5
ปัญหาสไตล์เหล่านี้มากมายเสียงที่ออกมาค่อนข้างเล็กน้อย
JL235


4
@MathewFoscarini ไม่สิ่งที่พวกเขาถามคือ "ถ้าฉันซื้อปืนเรดาร์ฉันสามารถตัดสินใจว่ากฎหมายการขับขี่ในท้องถิ่นคืออะไร?"
จอนฮันนา

คำตอบ:


65

ถามผู้ดูแล

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

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

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


34
ผู้ดูแลหลายคนไม่ชอบการเปลี่ยนแปลงขนาดใหญ่ที่ไม่จำเป็นอย่างเคร่งครัดเพราะพวกเขามักจะสร้างความขัดแย้งผสานที่ไม่จำเป็นอย่างเคร่งครัดเช่นกัน
Jan Hudec

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

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

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

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

48

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

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

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


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

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

25

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

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

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

มันน่าแปลกใจที่ประเภทจูเนียร์สับสนความคิดเห็นที่เป็นจริง


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

13

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

หากโครงการไม่สำคัญพอสำหรับคุณในการรักษาสาขาของคุณเองมันก็ไม่คุ้มค่าที่จะทำความสะอาดตั้งแต่แรก

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

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

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

การแยกการผสานและการแก้ไขดูเหมือนจะเป็นทางออกเดียว


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

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

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

2
@RafalChmiel ทุกสิ่งที่คุณระบุว่าเป็นเพียงความคิดเห็นของคุณ หากเป็นรหัสที่ไม่เหมาะสมที่ดูเหมือนตัววัวให้เขียนความกลัวของคุณเป็นปัญหา หากผู้เขียนต่อสู้กับการดึงเช่นนั้นเช็ดน้ำตาด้วยเนื้อเยื่อ
ปฏิกิริยา

10

นำมาจากเว็บไซต์Rubocop (เน้นที่เหมือง):

สิ่งหนึ่งที่ทำให้ฉันรำคาญในฐานะผู้พัฒนา Ruby - นักพัฒนา Python มีรูปแบบการเขียนโปรแกรมที่ยอดเยี่ยม (PEP-8) และเราไม่เคยมีคู่มืออย่างเป็นทางการบันทึกรูปแบบการเข้ารหัส Ruby และแนวทางปฏิบัติที่ดีที่สุด

โปรดเข้าใจ:

ไม่มีคู่มือแนะนำ Ruby Style อย่างเป็นทางการ

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

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

คุณไม่สามารถแนะนำไกด์สไตล์ได้ใช่ไหม

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

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

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


3

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

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

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

คุณควรระวังในบางสิ่ง:

  • บางคนนับถือศาสนาเกี่ยวกับสไตล์ หากเห็นได้ชัดว่าพวกเขาไม่ต้องการขยับเขยื่อนก็ไม่ต้องกังวล

  • นี่คือปัญหาใหญ่ bikeshed ทุกคนและพี่ชายมีความคิดเห็นเกี่ยวกับสิ่งเหล่านี้ การรวมคำขอดึงเช่นนั้นอาจเป็นเรื่องยากเพราะสิ่งนี้

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

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


2

ฉันเคยเป็นใหญ่ในการมีคู่มือสไตล์ที่ดี แต่ให้สถานะของกิจการใน Ruby "ฉันย้ายไป"

โดยทั่วไปฉันอาศัยอยู่กับสิ่งที่ฉันทำงานด้วยและทำตามอนุสัญญาทั่วไปที่ฉันได้เรียนรู้จากงานหลายอย่าง

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

ตัวอย่างของแต่ละสไตล์ (ในความคิดของฉัน):

เป็นที่ยอมรับทั่วโลกสำหรับทับทิม:

  • ช่องว่างไม่ได้แท็บ
  • เยื้องสองช่องว่าง
  • method_names_use_underscores
  • ค่าคงที่เริ่มต้นด้วย Caps

ยอมรับโดยทั่วไป:

  • อย่าใช้วงเล็บหากไม่จำเป็น
  • ใช้{ }สำหรับหนึ่งบรรทัดบล็อคและdo endสำหรับบล็อกหลายบรรทัด
  • CONSTANTS_ARE_IN_ALL_CAPS
  • ใช้งบกริยา ( cond ? true : false) เหนือif thenถ้าการแสดงออกที่เหมาะกับ 1 บรรทัด

การตั้งค่าส่วนตัว:

  • ความยาวบรรทัด 120 บรรทัดอักขระ
  • whenคำสั่งcase มีการย่อหน้า 2 จากคำสั่ง case
  • ใช้เครื่องหมายคำพูดเดี่ยวยกเว้นว่าจำเป็นต้องมีสองเท่า

ไม่มีข้อตกลง:

  • งบกรณี
  • ความยาวสาย

ปฏิบัติที่ดีที่สุด:

  • วิธีการขนาดเล็ก <= 5 บรรทัดถ้าเป็นไปได้
  • คลาสขนาดเล็ก <= 100 บรรทัดถ้าเป็นไปได้
  • หลีกเลี่ยงค่าคงที่
  • รหัสมีการทดสอบ

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


1

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

ในระยะสั้นไม่!

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

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

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


1

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


1

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

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

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


-1

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

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


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