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

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

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

9
ต้องเลื่อนแนวนอนทำให้โค้ดอ่านน้อยลงหรือไม่?
เอาล่ะ ถือว่าเป็นการปฏิบัติที่ไม่ดีหรือไม่? IMO มันอ่านได้น้อยลง ฉันเกลียดที่จะต้องเลื่อนไปทางขวาจากนั้นกลับซ้าย, ขวา, ซ้ายและอื่น ๆ มันทำให้ฉันเจ็บปวดมากขึ้นและทำให้ฉันสับสนในบางครั้ง ตัวอย่างเช่นทุกครั้งที่ฉันเข้ารหัสสตริงยาว ๆ ฉันจะทำสิ่งต่อไปนี้ ... bigLongSqlStatement = "select * from sometable st inner join anothertable at" + "on st.id = at.id" + "and so on..." + "and so on..." + "and so on..."

5
มาตรฐานการเข้ารหัสมีความสม่ำเสมอมากเกินไปหรือไม่?
มีสิ่งที่เท่าเทียมกันมากเกินไปไหม? แน่นอนว่าฉันทำงานที่ไหนเรามีมาตรฐานรวมถึงการตั้งชื่ออนุกรรมการสถาปัตยกรรมกรอบการใช้ประโยชน์ ฯลฯ อย่างไรก็ตามเมื่อเร็ว ๆ นี้มีการวิพากษ์วิจารณ์สิ่งต่าง ๆ มากมายที่ฉันจะพิจารณารูปแบบมากขึ้น ตัวอย่างเช่นการเขียนifคำสั่งในหลายบรรทัดกับหนึ่งบรรทัดโดยใช้ตัวดำเนินการ c # ??null-coalescing แทนที่จะพูด== nullจำนวนระยะห่างสำหรับการเยื้องเป็นต้น สำหรับฉันแล้วดูเหมือนว่าการเริ่มต้นกับตัวเลือกสไตล์ส่วนตัวมากขึ้นและไม่จำเป็นต้องเหมือนกันในทีมหรือ บริษัท สิ่งที่คนคนหนึ่งคิดว่าอ่านอย่างชัดเจนอาจไม่ได้อีก ความเท่าเทียมกันของ "พิเศษ" นี้มีคุณค่าไหม?

5
วิวัฒนาการในมาตรฐานการเข้ารหัสคุณจะจัดการกับมันอย่างไร
คุณจะจัดการกับวิวัฒนาการในคู่มือการเข้ารหัส / สไตล์ในโครงการสำหรับฐานรหัสที่มีอยู่ได้อย่างไร สมมติว่ามีบางคนในทีมของคุณค้นพบวิธีที่ดีกว่าในการสร้างอินสแตนซ์ของวัตถุในภาษาโปรแกรม ไม่ใช่ว่าวิธีการแบบเก่าจะไม่ดีหรือบั๊กกี้ แต่เป็นวิธีการใหม่ที่ให้ความรู้สึกที่น้อยกว่าและให้ความรู้สึกหรูหรามากกว่า และสมาชิกในทีมทุกคนชอบมันมาก คุณจะเปลี่ยนรหัสที่มีอยู่ทั้งหมดหรือไม่ สมมติว่า codebase ของคุณมีโค้ดประมาณ 500,000 บรรทัด คุณยังต้องการเปลี่ยนรหัสที่มีอยู่ทั้งหมดหรือไม่? หรือคุณจะให้รหัสใหม่เป็นไปตามมาตรฐานใหม่เท่านั้น? โดยทั่วไปสูญเสียความมั่นคง? คุณจะจัดการกับวิวัฒนาการในมาตรฐานการเข้ารหัสในโครงการของคุณได้อย่างไร

3
ทำไมเราไม่นำหน้า Enums, คลาส Abstract และ Structs?
ชุมชน C # ได้ใช้คำนำหน้า "I" อย่างแพร่หลายเพื่อแสดงถึงอินเทอร์เฟซที่แม้แต่โปรแกรมเมอร์ที่ไม่มีประสบการณ์มากที่สุดก็รู้ที่จะใช้ แล้วทำไมเราถึงไม่ใส่คำนำหน้า enums, คลาส abstract หรือ structs (อาจเป็น "E", "A" และ "S" ตามลำดับ)? ตัวอย่างเช่นถ้าเราทำเครื่องหมายคลาสนามธรรมทั้งหมดด้วย "A" มันจะให้ข้อมูลที่มีค่าเกี่ยวกับประเภทนั้นซึ่งในขณะที่มันสามารถอนุมานได้ก็ไม่ชัดเจนทันที โปรดทราบว่าฉันไม่ได้สนับสนุนการเปลี่ยนแปลงนี้ฉันแค่พยายามเข้าใจว่าทำไมเราไม่ทำสิ่งนี้ กระทู้นี้ตอบว่าทำไมเราถึงใช้คำนำหน้า "ฉัน" แต่ไม่ตอบว่าทำไมเราไม่ใช้คำนำหน้าอื่น ๆ

3
"คงที่" เป็นเบาะแสความหมายเกี่ยวกับการไร้สัญชาติ?
ฉันเพิ่งดำเนินการ refactoring ของโครงการขนาดกลางใน Java เพื่อกลับไปและเพิ่มการทดสอบหน่วย เมื่อฉันรู้ว่ามันเจ็บปวดแค่ไหนในการล้อเลียนและสถิตยศาสตร์ในที่สุดฉันก็ "ได้รับ" สิ่งที่ฉันได้อ่านเกี่ยวกับพวกเขาตลอดเวลานี้ (ฉันเป็นหนึ่งในคนเหล่านั้นที่ต้องเรียนรู้จากประสบการณ์โอ้สบายดี) ดังนั้นตอนนี้ที่ฉันใช้ Spring เพื่อสร้างวัตถุและโยงเข้าด้วยกันฉันจะกำจัดstaticคำหลักไปทางซ้ายและขวา (ถ้าฉันอาจต้องการเยาะเย้ยมันก็ไม่คงที่ในความหมายเดียวกับที่ Math.abs () ใช่ไหม?) สิ่งนี้คือฉันได้รับนิสัยการใช้staticเพื่อแสดงว่าวิธีการไม่ได้พึ่งพา ในสถานะวัตถุใด ๆ ตัวอย่างเช่น: //Before import com.thirdparty.ThirdPartyLibrary.Thingy; public class ThirdPartyLibraryWrapper { public static Thingy newThingy(InputType input) { new Thingy.Builder().withInput(input).alwaysFrobnicate().build(); } } //called as... ThirdPartyLibraryWrapper.newThingy(input); //After public class ThirdPartyFactory { public Thingy newThingy(InputType input) { …

2
เหตุใด 24 เส้นจึงเป็นความสูงเทอร์มินัลเริ่มต้นทั่วไป?
ดูเหมือนว่า 80x24 อักขระจะเป็นค่าเริ่มต้นที่พบบ่อยมากสำหรับหน้าต่างเทอร์มินัล คำตอบนี้ให้เหตุผลทางประวัติศาสตร์ที่ดีมากว่าทำไมความกว้างคือ 80 อักขระ แต่ทำไมความสูงถึง 24 (หรือ 25) บรรทัดโดยทั่วไปคือ?

3
เมื่อเปรียบเทียบตัวแปรสตริงกับสตริงตัวอักษรกับ. equals () มีวิธีปฏิบัติมาตรฐานสำหรับลำดับของรายการหรือไม่ [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา มีประโยชน์สำหรับแต่ละคนและฉันเข้าใจความแตกต่าง แต่สิ่งที่ถือว่าเป็นวิธีที่ดีที่สุด / มาตรฐาน? และทำไม? ตัวอย่างเช่น : "myString".equals(myStringVar) หลีกเลี่ยง NPE ที่อาจเกิดขึ้นและไม่จำเป็นต้องมีการตรวจสอบ null (สิ่งที่ดี?) ทำความสะอาดเพื่ออ่านเนื่องจากไม่จำเป็นต้องตรวจสอบ null หากค่า Null ไม่ใช่ค่าที่คาดหวังโปรแกรมของคุณอาจแตกหักโดยไม่ต้องมีไหวพริบ อย่างไรก็ตาม myStringVar.equals("myString") ต้องมีการตรวจสอบ null หากค่า null เป็นค่าที่คาดไว้ (สิ่งที่ดี?) สามารถถ่วงเงื่อนไขผสมกับการตรวจสอบเป็นโมฆะ ช่วยให้ NPE แจ้งให้เราทราบว่ามีบางอย่างผิดปกติ รูปแบบใดที่ถือว่าเป็นมาตรฐานที่ใช้สำหรับ Java และทำไม

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

9
ศึกษาเกี่ยวกับการเพิ่มหรือลดความสามารถในการผลิตเอกสารรหัส
หลังจากค้นหามากฉันล้มเหลวในการตอบคำถามพื้นฐานที่เกี่ยวข้องกับการสันนิษฐานว่าเป็นที่รู้จักในโลกการพัฒนาซอฟต์แวร์: สิ่งที่เป็นที่รู้จัก: การบังคับใช้นโยบายที่เข้มงวดเกี่ยวกับเอกสารรหัสที่เพียงพอ (ไม่ว่าจะเป็นแท็ก Doxygen, Javadoc หรือเพียงแค่ความคิดเห็นมากมาย) จะเพิ่มส่วนหัวไปยังเวลาที่ใช้ในการพัฒนาโค้ด แต่: การมีเอกสารอย่างละเอียด (หรือแม้กระทั่ง API) จะนำมาซึ่งความสามารถในการเพิ่มผลผลิต (ข้อสันนิษฐานหนึ่งข้อ) ในนักพัฒนาใหม่และผู้ที่มีประสบการณ์ในช่วงที่พวกเขากำลังเพิ่มคุณสมบัติหรือแก้ไขข้อบกพร่องตามท้องถนน คำถาม: ต้องใช้เวลาในการพัฒนาเพิ่มเติมเพื่อรับประกันเอกสารดังกล่าวซึ่งชดเชยด้วยผลกำไรที่เพิ่มขึ้นจากการผลิตบนถนน (ในแง่ที่ประหยัดอย่างเคร่งครัด) หรือไม่? ฉันกำลังมองหากรณีศึกษาหรือคำตอบที่สามารถนำหลักฐานที่เป็นหลักฐานมาสนับสนุนข้อสรุปที่ได้รับ ขอบคุณล่วงหน้า!

12
ความสามารถในการบำรุงรักษาของบูลีนลอจิก - ทำรังหากต้องการข้อความ?
ข้อไหนดีกว่าในการบำรุงรักษา if (byteArrayVariable != null) if (byteArrayVariable .Length != 0) //Do something with byteArrayVariable หรือ if ((byteArrayVariable != null) && (byteArrayVariable.Length != 0)) //Do something with byteArrayVariable ฉันชอบการอ่านและการเขียนที่สอง แต่ฉันจำได้ว่าการอ่านในโค้ดเสร็จสมบูรณ์ซึ่งทำสิ่งต่าง ๆ เช่นนั้นไม่ดีสำหรับการบำรุงรักษา นี่เป็นเพราะคุณพึ่งพาภาษาที่จะไม่ประเมินส่วนที่สองของifถ้าส่วนแรกเป็นเท็จและไม่ใช่ทุกภาษาที่ทำเช่นนั้น (ส่วนที่สองจะโยนข้อยกเว้นถ้าประเมินด้วย null byteArrayVariable) ฉันไม่ทราบว่าเป็นสิ่งที่ต้องกังวลหรือไม่และฉันต้องการความคิดเห็นทั่วไปเกี่ยวกับคำถาม ขอบคุณ

6
ฉันควรปฏิบัติตามมาตรฐาน HTML และ CSS ทุกครั้งหรือไม่
ไม่กี่ปีที่ผ่านมาฉันคิดว่าตัวเองเป็นนักพัฒนาเว็บรู้จักภาษา 3 ภาษาพื้นฐาน (HTML, CSS, JS) และ PHP มากมาย การย้ายจากข้อความธรรมดาไปยังเว็บไซต์จริงเป็นความเจ็บปวดเพราะสิ่งที่เรียกว่า "มาตรฐาน" ที่นั่นซึ่งในเวลานั้นซับซ้อนสำหรับฉันอย่างมาก มันต้มลงไปถึงสิ่งนี้มาก (ลบสิ่งที่เกี่ยวข้องกับ IE): มาตรฐานอยู่ที่นั่นเพื่อแทนที่วิธีเก่า ๆ ของการทำสิ่งต่าง ๆ ในวิธีที่ง่ายกว่า อย่างไรก็ตามเมื่อพยายามที่จะนำบางสิ่งมาใช้ (ตัวอย่างเช่นโครงร่าง CSS ทั้งหมด) ใช้เวลานานกว่าที่ฉันจะทำได้จริงถึง 10 เท่าถ้าฉันทำโซลูชันที่ง่ายขึ้นและยังใช้งานได้อยู่ หากมันแสดงผลเหมือนกันเหตุใดฉันจึงควรใช้ตัวอย่างที่มีความซับซ้อนมากขึ้นซึ่งใช้เวลานานขึ้น 10 เท่าและหยุดพักเมื่อคุณเปลี่ยนเบราว์เซอร์ สิ่งนี้ทำให้เกิดการถกเถียงทางศาสนาที่ยาวนานใน ## php, ## css และ ## js ใน Freenode IRC และทำให้ฉันถูกแบนจาก ## css เพราะฉันยุ่งกับโลกเล็ก ๆ ของพวกเขาที่นั่น คำถามของฉัน: ฉันควรปฏิบัติตามมาตรฐานการประชุมและการเข้ารหัสทุกครั้งแม้ว่าพวกเขาจะใช้เวลาฉันนานขึ้น 10 …

4
ทำใหม่ฟังก์ชั่นกลับรหัสจำนวนเต็มที่แสดงถึงสถานะที่แตกต่างกัน
ฉันได้รับรหัสอันยิ่งใหญ่ที่ฉันได้รวมตัวอย่างสั้น ๆ ของด้านล่าง มีชื่อสำหรับรูปแบบการต่อต้านนี้โดยเฉพาะหรือไม่? มีคำแนะนำอะไรบ้างสำหรับการปรับโครงสร้างนี้ // 0=Need to log in / present username and password // 2=Already logged in // 3=Inactive User found // 4=Valid User found-establish their session // 5=Valid User found with password change needed-establish their session // 6=Invalid User based on app login // 7=Invalid User based …

5
การวางเครื่องหมายข้อความไว้ในรูปแบบของสตริงที่ไม่ดีหรือไม่? มีทางเลือกอื่นหรือไม่?
ฉันทำงานกับสตริงจำนวนมากซึ่งต้องการการจัดการอย่างมาก ตัวอย่างเช่นฉันอาจสร้างสตริงเช่นนี้ ส่วนที่ 1 เรือ ส่วนการ เขียนโปรแกรมA ส่วนที่ 2 การแบ่งพาร์ติชั่นสำหรับการเขียนโปรแกรม ส่วน AA มาตรารายการ SQL สตริงจะใหญ่เกินไปที่จะตรวจสอบด้วยตนเองทุกส่วน ตอนนี้ฉันต้องsplitนี้stringเป็นstringlistโดยส่วนและชิ้นส่วน ฉันนึกถึงตัวเลือกสองทาง: นิพจน์ปกติ: QStringList sl = s.split(QRegularExpression("\n(?=Part [0-9]+|Section [A-Z]+)")); ดูเหมือนว่าจะใช้งานได้ แต่บางครั้งมีข้อยกเว้นเกิดขึ้น (IE: Section SQL Entriesอาจแยกได้) มิฉะนั้นสิ่งที่ฉันสามารถทำได้คือวางเครื่องหมายเมื่อฉันสร้างสตริงเริ่มต้น: art ส่วนที่ 1 เรือ ection ส่วน โปรแกรมA art ส่วนที่2 การแบ่งพาร์ติชันสำหรับการเขียนโปรแกรม ection ส่วนมาตราAA ของมาตรา SQL ซึ่งหมายความว่าการแยกสตริงจะกลายเป็นเรื่องง่าย: QStringList sl = s.split("🚤💻")); …

2
หลักการตั้งชื่อของตัวแปรในภาษาการเขียนโปรแกรม C # [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังดูวิดีโอเกี่ยวกับ C # เกี่ยวกับตัวแปร ผู้เขียนประกาศตัวแปรภายในเมธอดและเขาตั้งชื่อดังนี้: string MyName = "James"; คำถามของฉันคือ:. อนุสัญญาใดแนะนำโดย. Net Framework มันเป็นปาสคาลท่อในตัวอย่างข้างต้นหรือเป็นกรณีอูฐ?

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