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

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

3
รหัสแหล่งที่มาของฉันควรอยู่ใน UTF-8 หรือไม่
ฉันรู้สึกว่าบ่อยครั้งที่คุณไม่ได้เลือกรูปแบบของรหัสของคุณฉันหมายถึงเครื่องมือส่วนใหญ่ในอดีตตัดสินใจให้ฉัน หรือฉันไม่เคยแม้แต่จะคิดเกี่ยวกับมัน ฉันใช้ TextPad บน windows เมื่อวันก่อนและเมื่อฉันบันทึกไฟล์มันจะแจ้งให้ฉันทราบเกี่ยวกับ ASCII, UTF-8/16, Unicode และอื่น ๆ ... ฉันสมมติว่าเกือบทุกรหัสที่เขียนเป็น ASCII แต่ทำไมมันควรเป็น ASCII เราควรจะใช้ไฟล์ UTF-8 ตอนนี้สำหรับซอร์สโค้ดหรือไม่และทำไม? ฉันคิดว่านี่อาจเป็นประโยชน์กับทีมหลายภาษา มีมาตรฐานที่เกี่ยวข้องกับการตั้งชื่อตัวแปรฟังก์ชั่น / ฟังก์ชั่น ฯลฯ อย่างไร?

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

3
วิธีจัดการกับ Classes ที่มีชื่อเดียวกัน (แพ็คเกจที่ต่างกัน)
ฉันและทีม R&D ของฉันรักษา codebase ขนาดใหญ่ เราได้แบ่งตรรกะทางธุรกิจของเราออกเป็นหลายแพ็คเกจ บางแห่งที่มีชั้นเรียนที่มีชื่อเหมือน ในขณะที่คุณสามารถเดาได้ว่าชื่อนั้นขัดแย้งกันเมื่อมีการอ้างอิงทั้งสองคลาสในไฟล์ Java เดียวกัน ตัวอย่างเช่น: com.myapp.model (package) - Device (class) - ... com.myapp.data (package) - Device (class) - ... เราได้ถกเถียงกันว่าอะไรคือวิธีปฏิบัติที่ดีที่สุดในการรักษากรณีเหล่านี้และตัวเลือกต่อไปนี้เกิดขึ้น: ตัวเลือกที่ 1 การเปลี่ยนชื่อชั้นเรียนโดยเพิ่มคำนำหน้า ModelDevice DataDevice ตัวเลือกที่ 2 ใช้ชื่อเต็ม package + class เมื่อทั้งคู่ถูกอ้างอิง com.myapp.model.Device com.myapp.data.Device มีอะไรที่ถูกต้องมากขึ้นในแง่ของการจัดการรหัสและความยืดหยุ่น? ขณะนี้เรากำลังผสมทั้งแนวทางและเริ่มมีความไม่สอดคล้องกัน

2
เราจำเป็นต้องตรวจสอบการใช้งานโมดูลทั้งหมดหรือเพียงแค่ข้อโต้แย้งของวิธีการสาธารณะ?
ฉันได้ยินมาว่าขอแนะนำให้ตรวจสอบข้อโต้แย้งของวิธีการสาธารณะ: หนึ่งควรตรวจสอบโมฆะถ้าเขาไม่คาดหวังโมฆะ? เมธอดควรตรวจสอบความถูกต้องของพารามิเตอร์หรือไม่ MSDN - CA1062: ตรวจสอบข้อโต้แย้งของวิธีสาธารณะ (ฉันมีพื้นหลัง. NET แต่คำถามไม่เฉพาะ C #) แรงจูงใจสามารถเข้าใจได้ หากโมดูลจะถูกใช้ในทางที่ผิดเราต้องการที่จะโยนข้อยกเว้นทันทีแทนที่จะเป็นพฤติกรรมที่คาดเดาไม่ได้ สิ่งที่รบกวนจิตใจฉันคือข้อโต้แย้งที่ผิดไม่ใช่ข้อผิดพลาดเดียวที่สามารถทำได้ในขณะที่ใช้โมดูล นี่คือสถานการณ์ข้อผิดพลาดบางประการที่เราจำเป็นต้องเพิ่มตรรกะการตรวจสอบหากเราทำตามคำแนะนำและไม่ต้องการการเพิ่มระดับข้อผิดพลาด: สายเรียกเข้า - อาร์กิวเมนต์ที่ไม่คาดคิด สายเรียกเข้า - โมดูลอยู่ในสถานะไม่ถูกต้อง โทรภายนอก - ส่งคืนผลลัพธ์ที่ไม่คาดคิด การโทรภายนอก - ผลข้างเคียงที่ไม่คาดคิด (การป้อนสองครั้งในโมดูลการโทร, การแยกสถานะการอ้างอิงอื่น ๆ ) ฉันได้ลองคำนึงถึงเงื่อนไขเหล่านี้และเขียนโมดูลง่าย ๆ ด้วยวิธีการหนึ่ง (ขออภัยไม่ใช่ -C # guys): public sealed class Room { private readonly IDoorFactory _doorFactory; private bool …

5
เหตุใดจึงควรใช้ HashMap (ในฟังก์ชั่น) เพื่อกำหนดค่าที่จะส่งคืน (สำหรับคีย์) เมื่อโครงสร้าง if อื่นสามารถทำงานได้ในเวลาที่ดีกว่า
ขณะที่ฉันทำงานกับ บริษัท ใหญ่เมื่อไม่นานมานี้ฉันสังเกตเห็นว่าโปรแกรมเมอร์ที่นั่นปฏิบัติตามรูปแบบการเข้ารหัสนี้: สมมติว่าฉันมีฟังก์ชั่นที่ส่งกลับ 12 ถ้าอินพุตเป็น A, 21 ถ้าอินพุตเป็น B และ 45 ถ้าอินพุตเป็น C ดังนั้นฉันสามารถเขียนฟังก์ชั่นลายเซ็นเป็น: int foo(String s){ if(s.equals("A")) return 12; else if(s.equals("B")) return 21; else if(s.equals("C")) return 45; else throw new RuntimeException("Invalid input to function foo"); } แต่ในการตรวจสอบรหัสฉันถูกขอให้เปลี่ยนฟังก์ชั่นต่อไปนี้: int foo(String s){ HashMap<String, Integer> map = new HashMap<String, Integer>(); map.put("A", …

6
ทีมของฉันควรใช้มาตรฐานการเข้ารหัสที่ได้รับการยอมรับเป็นพื้นฐานของตัวเองหรือไม่?
ทีมวิจัยและพัฒนาที่ฉันอยู่ได้ตัดสินใจใช้มาตรฐานการเข้ารหัส เราเพิ่งก่อตั้งเมื่อไม่นานมานี้และมีรหัสน้อยเกินไปและเวลาการเข้ารหัสทั่วไปของเราเองที่จะยึดมาตรฐาน / เอกสารการประชุมว่าสิ่งใดที่มีการพัฒนาโดยทั่วไปในทีมของเราและจากตัวอย่างที่ดีจากรหัสของเราเองเป็นต้น ตอนนี้พวกเราทุกคนมีประสบการณ์จากสถานที่ทำงานที่ผ่านมา - แม้ว่าเราจะไม่มีใครพูดว่า "เราขอรับรองเอกสารฉบับนี้ที่นี่ฉันพบว่าเหมาะสำหรับงานที่เราทำที่นี่" (*) นอกจากนี้พวกเราบางคน (รวมถึงตัวฉันเอง) มีประสบการณ์จากสถานที่ที่ไม่มีมาตรฐานการเข้ารหัสอย่างเป็นทางการเท่านั้นหรือการเขียนในภาษาต่าง ๆ ในสภาพแวดล้อมที่แตกต่างกัน (สภาพแวดล้อมการผลิตที่มีแรงกดดันสูงทุกสัปดาห์ หนึ่งในตัวเลือกที่ฉันคิดอยู่ก็คือการนำเอกสารที่เป็นที่รู้จักและได้รับการยอมรับมาอย่างดีคัดลอกสิ่งที่เราไม่สนใจ / สนใจและทำการแก้ไขตามความต้องการของเรา นี่เป็นเรื่องธรรมดาไหม คุณเชื่อว่านี่เป็นความคิดที่ดีหรือไม่? ถ้าเป็นเช่นนั้นสิ่งที่จะเป็นมาตรฐานการเข้ารหัส 'พื้นฐาน' ที่เหมาะสม (อย่าบอกฉันว่าอะไรดีที่สุดฉันไม่ต้องการเริ่มต้นความขัดแย้งทางศาสนาที่นี่เพียงแค่ชี้ให้เห็นว่าอะไรจะครอบคลุมหรือ 'เป็นกลาง' พอที่จะสร้าง .) หมายเหตุ: เราคาดว่าจะทำงานกับ C, C ++, OpenCL, CUDA, Python เราเป็นทีมงานของ 4 คน + ผู้จัดการคาดว่าจะเติบโตประมาณ 5-6 ภายในหนึ่งปี ใน บริษัท ของเราทีมเกือบทั้งหมดเป็นอิสระและมักจะไม่โต้ตอบเลย (ไม่ใช่แม้กระทั่งโดยใช้รหัสของกันและกัน - งานอยู่ในโครงการที่แตกต่างกันโดยสิ้นเชิง); ดังนั้น - …

4
สิ่งที่มีความหมายโดย“ สิ่งที่ต้องทำวิธีการสร้าง Stub อัตโนมัติ”? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันใช้ eclipse สำหรับการเขียนโปรแกรม Android และทุกที่นี่และฉันเห็นคำสั่ง "สิ่งที่ต้องทำวิธีการสร้างอัตโนมัติต้นขั้ว" ฉันเข้าใจว่าวิธีเหล่านี้ถูกสร้างขึ้นโดยอัตโนมัติโดย eclipse เมื่อสร้างคลาสและกิจกรรมทริกเกอร์อื่น ๆ แต่ฉันไม่เข้าใจว่าจำเป็นต้องพูดถึงทุกที่ จำเป็นต้องพูดถึงสิ่งนี้ทุกที่ซ้ำแล้วซ้ำอีกหรือไม่

1
การตั้งชื่อคลาสและอินเตอร์เฟสที่เกี่ยวข้อง
ฉันได้สร้างObjectParserคลาสที่แยกวิเคราะห์ข้อมูลเป็นวัตถุที่พิมพ์อย่างยิ่งโดยใช้IObjectParserDataSourceเป็นแหล่งข้อมูล (ข้อมูลอาจเป็นไฟล์ Excel, ไฟล์ข้อความ, อาเรย์, สตริงการสืบค้น ฯลฯ ) ตัวอย่างของการใช้งานของฉันIObjectParserDataSourceคือ: TextFileObjectParserDataSource ExcelFileObjectParserDataSource ชื่อชั้นเหล่านี้ให้ความรู้สึกยาวและโน้มน้าวใจฉัน ฉันชื่อพวกเขาได้: TextFileDataSource ExcelFileDataSource แต่สิ่งนี้นำเสนอระดับความคลุมเครือและพวกเขาก็ไม่ได้เกี่ยวข้องอย่างชัดเจนกับการIObjectParserDataSourceมองแวบแรก สิ่งนี้กลายเป็นสิ่งสำคัญเนื่องจากการกำหนดแหล่งข้อมูลเหล่านี้จะเกิดขึ้นในรหัสลูกค้าและฉันต้องการลดความสับสนและความไม่แน่นอนที่อาจเกิดขึ้น คุณจะตั้งชื่อคลาสเหล่านี้ในสถานการณ์จำลองได้อย่างไร?

9
ทำไม (ตำแหน่ง <ขนาด) รูปแบบที่แพร่หลายเช่นนี้ในเงื่อนไข
ในคำสั่งเงื่อนไข (IF) ทุกคนใช้(position &lt; size)แต่ทำไม? การประชุมเท่านั้นหรือมีเหตุผลที่ดีสำหรับสิ่งนั้น? พบในป่า: if (pos &lt; array.length) { // do some with array[pos]; } ไม่ค่อยพบ: if (array.length &gt; pos) { // do some with array[pos]; }

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

6
ฉันควรใช้ตัวพิมพ์ชื่อเรื่องใน URL หรือไม่
ขณะนี้เรากำลังตัดสินใจเรื่องการตั้งชื่อที่สอดคล้องกันในเว็บไซต์ที่มีเว็บแอปพลิเคชั่นหลายตัว ในอดีตฉันได้รับการสนับสนุนจาก 'อักษรตัวเล็กทั้งหมด!' เมื่อสร้าง URL: http://example.com/mysystem/account/view/1551 อย่างไรก็ตามในปีที่แล้วหรือสองปีโดยเฉพาะตั้งแต่ฉันเริ่มใช้ ASP.NET MVC และมีการติดต่อกับ URL ที่ใช้ REST มากขึ้นฉันกลายเป็นแฟนตัวยงของการใช้อักษรตัวแรกของแต่ละส่วน / คำภายใน URL เนื่องจากมันทำให้ อ่านง่ายกว่า (imho) http://example.com/MySystem/Account/View/1551 เราไม่ได้อยู่ในสถานการณ์ที่ผู้คนจำเป็นต้องอ่านหรือสามารถเข้าใจ URL ดังนั้นจึงไม่ใช่ไดรเวอร์ต่อ se สิ่งสำคัญที่เราตามมาคือแนวทางที่สอดคล้องกันซึ่งมีเหตุผลและสมเหตุสมผล มีมาตรฐานใดบ้างที่ประกาศว่าเป็นการดีที่จะทำอย่างใดอย่างหนึ่งหรืออีกวิธีหนึ่งหรือปัญหาที่เราอาจพบในการตั้งค่า (อย่างน้อยทันสมัยในปัจจุบัน) ที่จะเลือกการตั้งค่ามากกว่าอีกหรือไม่? ฉันทามติทั่วไปสำหรับการอภิปรายครั้งนี้คืออะไร?

5
คุณจะหลีกเลี่ยงความคล้ายคลึงกันของชื่อระหว่างชั้นเรียนกับคนพื้นเมืองได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเพิ่งพบกับ "ปัญหาที่น่าสนใจ" ซึ่งฉันต้องการความคิดเห็นของคุณเกี่ยวกับ: ฉันกำลังพัฒนาระบบและด้วยเหตุผลหลายประการ (ความหมาย: นามธรรมความเป็นอิสระทางเทคโนโลยี ฯลฯ ) เราสร้างประเภทของเราเองสำหรับการแลกเปลี่ยนข้อมูล ตัวอย่างเช่น: หากมีวิธีการที่เรียกว่า SendEmail และถูกเรียกใช้โดยตรรกะทางธุรกิจก็จะมีพารามิเตอร์ประเภท OurCompany.EMailMessage ซึ่งเป็นวัตถุที่เป็นเทคโนโลยีที่สมบูรณ์และมีเพียง "ข้อมูลที่เกี่ยวข้องกับธุรกิจ" (สำหรับ ไม่มีการเข้ารหัสข้อมูลหัว abut) ภายในฟังก์ชั่น SendEmail เราได้รับข้อมูลนี้จากวัตถุ EMailMEssage ของเราและสร้างวัตถุ MailMessage (อันนี้เป็นเทคโนโลยีเฉพาะ) เพื่อให้สามารถส่งผ่านเครือข่ายได้ อย่างที่คุณสามารถสังเกตุได้ว่าชั้นเรียนของเรามีชื่อคล้ายกับชั้นเรียนภาษา "ดั้งเดิม" ปัญหาคือ: นี่คือสิ่งที่พวกเขาเป็นข้อความอีเมลดังนั้นจึงยากที่จะหาชื่ออื่นที่มีความหมาย คุณมีปัญหานี้บ่อยไหม? คุณจัดการได้อย่างไร แก้ไข: @mgkrebbs เพิ่งแสดงความคิดเห็นเกี่ยวกับการใช้ชื่อที่ผ่านการรับรองโดยสมบูรณ์ นี่คือวิธีการในปัจจุบันของเรา แต่น้อยเกินไป verbose, IMHO ฉันอยากได้สิ่งที่สะอาดกว่านี้ถ้าเป็นไปได้

3
ใครสามารถแนะนำมาตรฐานการเข้ารหัสสำหรับ TSQL ได้บ้าง
เรามีมาตรฐานการเข้ารหัสสำหรับรหัส. Net ของเรามานานและดูเหมือนว่าจะมีแหล่งข้อมูลที่มีชื่อเสียงหลายแห่งสำหรับแนวคิดเกี่ยวกับวิธีการปรับใช้ซึ่งพัฒนาขึ้นตามกาลเวลา ฉันต้องการที่จะสามารถรวบรวมมาตรฐานบางอย่างสำหรับ SQL ที่เขียนขึ้นเพื่อใช้งานโดยผลิตภัณฑ์ของเรา แต่ดูเหมือนจะไม่มีทรัพยากรใด ๆ อยู่ที่ฉันทามติสำหรับสิ่งที่กำหนด SQL ที่เขียนได้ดี?

1
จะทำอย่างไรเมื่อคุณถูกบังคับให้โค้ดภายใต้มาตรฐานการเข้ารหัสที่ไม่ดี (การออกแบบ)
นี่ไม่เกี่ยวกับหลักการตั้งชื่อทั่วไปที่จะแสดงความคิดเห็นของคุณเราควรใช้ภูมิภาค ฯลฯ นี่เป็นเรื่องเกี่ยวกับมาตรฐานการเข้ารหัสที่กล่าวถึงเฉพาะเกี่ยวกับวิธีที่โปรแกรมเมอร์ควรออกแบบแอปพลิเคชันของเขา สิ่งที่ต้องการ: (ในแอพ. NET และไม่ใช่คำที่ถูกต้อง) ทำคลาสให้น้อยที่สุดเท่าที่จะเป็นไปได้ คลาสควรทำมากที่สุดในโลกแห่งความเป็นจริง การดัดแปลงดีกว่าส่วนขยาย หนึ่ง DLL ต่อหมวดหมู่ (หนึ่งไลบรารีสำหรับฟังก์ชันอีเมลหนึ่งไลบรารีสำหรับฟังก์ชันที่เกี่ยวข้องกับไฟล์) ทุกคนมีประสบการณ์กับโค้ดที่ไม่ดีและอาจมีการออกแบบที่ไม่ดี แต่ถ้าคุณถูกวางไว้ในทีม (การออกไม่ใช่ตัวเลือก) ซึ่งพวกเขามีมาตรฐานการออกแบบที่ไม่รู้สึกถูกต้อง ฉันไม่แน่ใจว่าจะตอบสนองอย่างมืออาชีพได้อย่างไรเมื่อฉันรู้สึกเหมือนกำลังจะตายภายในเมื่อใดก็ตามที่ฉันถูกขอให้เขียนโค้ดด้วยวิธีนี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.