คำถามติดแท็ก coding-standards

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

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

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

16
แนวคิดเบื้องหลังการกำหนดสี่เหลี่ยมสองจุดคืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ไม่ใช่ว่ามันไม่เข้าท่า แต่มันก็ใช้งานได้อย่างน่าอึดอัดใจ 99% ของเวลา บ่อยครั้งในสี่เหลี่ยมกราฟิกสองมิติจะเริ่มต้นจัดเก็บและจัดการเป็นจุดคู่ ในภาษาใดไม่มี class Rect: p1, p2: point มันสมเหตุสมผลกว่าที่จะกำหนดรูปสี่เหลี่ยมผืนผ้าเป็นค่า x สองค่าและค่า y สองค่าดังนี้: class Rect xleft, xright: int ytop, ybottom: int ด้วยจุดสองจุดหากบางจุดในซอร์สโค้ดคุณต้องการใช้ประโยชน์จากค่า y ของอันดับต้นสุดคุณต้องบอกว่า rect.p1.y (hmmm หยุดและคิดว่ามันคือ p1 หรือ p2) แต่ ด้วยค่าสี่ค่าในฐานะสมาชิกข้อมูลธรรมดามันชัดเจนและตรงไปตรงมา: rect.ytop (ไม่ต้องคิด!) การใช้สองจุดหมายความว่าในการจัดการกับแนวตั้งคุณต้องยุ่งเหยิงในแนวนอน มีความสัมพันธ์ภายนอกระหว่างองค์ประกอบอิสระ แนวคิดสองจุดนี้เกิดขึ้นได้อย่างไรและทำไมมันถึงยังคงอยู่? มันมีประโยชน์มากกว่าพิกัด x และ …

5
ควรบังคับใช้มาตรฐานการเข้ารหัสโดยเซิร์ฟเวอร์รวมอย่างต่อเนื่องหรือไม่
ควรบังคับใช้มาตรฐาน / รูปแบบการเข้ารหัสโดยเซิร์ฟเวอร์รวมอย่างต่อเนื่องที่ใช้เครื่องมือวิเคราะห์แบบคงที่ (เช่น PMD, StyleCop / FxCop) และการสร้างล้มเหลวหากไม่ปฏิบัติตามมาตรฐาน? กฎประเภทใดที่ไม่ควรใช้ในการสร้างล้มเหลว

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

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

7
มีการใช้อักษรตัวพิมพ์ใหญ่ร่วมกันใน C ++ หรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันทำงานเป็นจำนวนมากใน Python และ Java และทั้งสองภาษานั้นมีหลักการทั่วไป (แม้ว่าจะไม่ใช่สากล) ว่าควรใช้ตัวพิมพ์ใหญ่ในตัวระบุอย่างไร: ใช้ทั้งPascalCaseชื่อคลาสและALL_CAPSค่าคงที่ "ทั่วโลก" แต่สำหรับตัวระบุอื่น ๆ มากรหัส Java ใช้ในขณะที่จำนวนมากของงูใหญ่ใช้รหัสmixedCase underscore_delimitersฉันรู้ว่าไม่มีภาษาหรือห้องสมุดบังคับใช้ตัวพิมพ์ใหญ่ แต่อย่างใด แต่ฉันพบว่าเมื่อฉันติดกับอนุสัญญามาตรฐานสำหรับภาษาที่ฉันใช้รหัสของฉันดูเหมือนจะอ่านได้มากขึ้น ตอนนี้ฉันเริ่มโครงการใน C ++ และฉันต้องการใช้แนวคิดเดียวกัน มีการประชุมสามัญสำหรับการโอนเป็นทุนที่ฉันควรรู้เกี่ยวกับอะไร?

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

8
แนวทางการตั้งชื่อการประชุมมีมูลค่าการดูแลเกี่ยวกับ?
ฉันตั้งชื่อตัวแปรของฉันโดยใช้ระเบียบ. Net: camelCase สำหรับตัวแปรและฟิลด์ (ฉันมักจะใช้ _camelCase สำหรับฟิลด์ส่วนตัวในคลาส) PascalCase สำหรับเมธอดคุณสมบัติและคลาส ที่เดียวที่ฉันเบี่ยงเบนคือค่าคงที่และ Enums ที่ฉันชอบสไตล์ Java SCREAMING_CAPS codebase ของ บริษัท ของฉันเกลื่อนไปด้วยรูปแบบสัญกรณ์หลอกของฮังการีจาก VB6 และ VBScript หากไม่ใช่ภาษาฮังการีเต็มเป่าเช่น s หรือ str สำหรับ Strings ฉันหรือ int สำหรับ Ints d สำหรับทศนิยม (หรือบางครั้งสองครั้ง) o หรือ obj สำหรับวัตถุชนิดใด ๆ ฉันประจบประแจงเมื่อใดก็ตามที่ฉันเห็นรูปแบบรหัสที่ใช้ในรหัสของคนอื่น (แม้แต่ในรหัสกรีนฟิลด์ไม่ใช่แค่ cruft ดั้งเดิม) และฉันปฏิเสธที่จะใช้สไตล์นั้น ฉันได้นำมาตรฐานในการตั้งชื่อ. Net มาใช้ในอดีตและมันก็เพิกเฉยคนที่เขียนในสัญกรณ์ฮังการียังคงทำเช่นนั้นพวกเราที่ไม่ชอบให้ฉันใช้สไตล์ของตัวเองต่อไป ฉันกลัวนิดหน่อยว่าถ้าเราทำมาตรฐาน (ซึ่งฉันพยายามผลักดันไปเรื่อย ๆ …

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

6
การจัดแนวตั้ง: ใช่หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ตัวอย่างเช่นจัดแนวไม่ใช่แนวตั้ง: Name: Hamt Version: 0.1.0 Cabal-Version: >= 1.2 License: BSD3 Author: Jason Baker หรือจัดแนวตั้ง: Name: Hamt Version: 0.1.0 Cabal-Version: >= 1.2 License: BSD3 Author: Jason Baker คุณชอบแบบไหนและทำไม

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

2
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะสร้างบล็อคของรหัส?
ใน C ++ มันเป็นวิธีปฏิบัติที่ไม่ถูกต้องหรือไม่ในการสร้างบล็อกของโค้ดภายในฟังก์ชั่นบางอย่างเช่นต่อไปนี้: bool f() { { double test = 0; test = // some other variable outside this function, for example. if (test == // some value) return true; } { double test = 0; test = // some variable outside this function, different from the last one. …

3
ตัวชี้ที่ไม่ใช่ตัวเลือกเทียบกับการอ้างอิงที่ไม่ใช่แบบ const ใน C ++
ในคุณสมบัติ C ++ อื่น ๆ , อาร์กิวเมนต์อ้างอิงของคู่มือสไตล์ Google C ++ , ฉันอ่านว่าต้องไม่ใช้การอ้างอิงที่ไม่ใช่ const พารามิเตอร์ทั้งหมดที่ส่งผ่านโดยการอ้างอิงจะต้องระบุว่า const เป็นที่ชัดเจนว่าการดูการเรียกใช้ฟังก์ชันที่ใช้การอ้างอิงเป็นอาร์กิวเมนต์ทำให้ผู้เขียนโปรแกรม C สับสน แต่ C และ C ++ เป็นภาษาที่แตกต่างกันในขณะนี้ หากจำเป็นต้องใช้พารามิเตอร์เอาต์พุตโดยใช้ตัวชี้สำหรับพารามิเตอร์เอาต์พุตที่ต้องการอาจทำให้ฟังก์ชันการทำงานทั้งหมดถูกข้ามไปซึ่งทำให้การใช้งานฟังก์ชั่นมีความซับซ้อนมากขึ้น (เพิ่มความซับซ้อนของวงจรและความลึกของฟังก์ชัน) ฉันต้องการสร้างรหัส C ++ ให้เข้าใจและบำรุงรักษาได้ง่ายที่สุดดังนั้นโดยทั่วไปฉันสนใจที่จะอ่านคู่มือการเขียนโค้ดสไตล์ แต่เพื่อปรับแนวทางปฏิบัติที่ดีที่สุดในทีมฉันคิดว่าความเข้าใจเหตุผลเบื้องหลังองค์ประกอบของแนวทางนำเสนอเป็นปัจจัยสำคัญ การอ้างอิงที่ไม่ใช่ const นั้นแย่จริง ๆ หรือไม่? การห้ามเฉพาะ Google เท่านั้นหรือเป็นกฎที่ยอมรับกันโดยทั่วไปหรือไม่ อะไรคือเหตุผลของความพยายามพิเศษสำหรับการใช้พารามิเตอร์เอาต์พุตเป็นพอยน์เตอร์?

6
แบบแผนการตั้งชื่อ Javascript
ฉันมาจากพื้นหลัง Java และฉันใหม่กับ JavaScript ฉันสังเกตเห็นวิธีการจาวาสคริปต์หลายวิธีโดยใช้ชื่อพารามิเตอร์อักขระเดียวเช่นในตัวอย่างต่อไปนี้ doSomething(a,b,c) ฉันไม่ชอบ แต่นักพัฒนา JavaScript คนอื่นเชื่อฉันว่าสิ่งนี้ทำเพื่อลดขนาดไฟล์โดยสังเกตว่าไฟล์ JavaScript จะต้องถูกถ่ายโอนไปยังเบราว์เซอร์ จากนั้นฉันก็พบว่าตัวเองกำลังพูดคุยกับนักพัฒนาคนอื่น เขาแสดงให้ฉันเห็นวิธีที่ Firefox จะตัดทอนชื่อตัวแปรเพื่อโหลดหน้าเว็บเร็วขึ้น นี่เป็นวิธีปฏิบัติมาตรฐานสำหรับเว็บเบราว์เซอร์หรือไม่? การตั้งชื่อการแปลงแนวปฏิบัติที่ดีที่สุดที่ควรปฏิบัติเมื่อโปรแกรมใน JavaScript คืออะไร? ความยาวของตัวระบุสำคัญหรือไม่และถ้าเป็นเช่นนั้น

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