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

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

4
มีเหตุผลในการออกเครื่องหมายความขัดแย้งในรหัสตรวจสอบใน?
พิจารณาเครื่องหมายความขัดแย้ง เช่น: <<<<<<< branch blah blah this ======= blah blah that >>>>>>> HEAD ในกรณีเฉพาะที่กระตุ้นให้ฉันโพสต์คำถามนี้สมาชิกในทีมที่รับผิดชอบเพิ่งจะทำการผสานตั้งแต่ต้นน้ำจนถึงสาขาของเราและในบางกรณีก็ทิ้งสิ่งเหล่านี้ไว้ในความคิดเห็นเป็นเอกสารประกอบสิ่งที่เพิ่งเกิดขึ้น การแก้ไข เขาทิ้งไว้ในสถานะที่รวบรวมการทดสอบผ่านดังนั้นจึงไม่เลวร้ายอย่างที่คุณคิด โดยสัญชาตญาณแม้ว่าฉันจะคัดค้านเรื่องนี้จริง ๆ แต่เป็นมารสนับสนุนให้ตัวเองฉันสามารถดูว่าทำไมเขาอาจทำ: เพราะมันเน้นไปที่นักพัฒนาทีมคนอื่น ๆ สิ่งที่มีการเปลี่ยนแปลงอันเป็นผลมาจากการรวม เพราะผู้ที่มีความเชี่ยวชาญมากขึ้นในส่วนของรหัสสามารถแก้ไขข้อกังวลที่แสดงโดยข้อคิดเห็นเพื่อที่เขาจะได้ไม่ต้องเดา เนื่องจากการรวมอัปสตรีมเป็นความเจ็บปวดที่ถูกต้องและอาจเป็นเรื่องยากที่จะพิสูจน์เวลาในการแก้ไขทุกอย่างให้ดีและสมบูรณ์ดังนั้นการแจ้งเตือน FIXME แบบกึ่งสมบูรณ์จึงมีความจำเป็นดังนั้นทำไมไม่ใช้ความขัดแย้งเดิมเป็นความคิดเห็น การคัดค้านของฉันเป็นสัญชาตญาณ แต่ฉันต้องการที่จะพิสูจน์เหตุผลอย่างมีเหตุผลหรือเห็นตำแหน่งของฉันอย่างชาญฉลาด ทุกคนสามารถให้ฉันตัวอย่างหรือประสบการณ์ที่ผู้คนมีช่วงเวลาที่เลวร้ายกับคนอื่นทำเช่นนี้และ / หรือเหตุผลที่ว่าทำไมมันถึงเป็นการปฏิบัติที่ไม่ดี (หรือคุณสามารถเล่นผู้สนับสนุนของปีศาจและสนับสนุนมัน) ข้อกังวลของฉันเองในทันทีคือมันจะน่ารำคาญถ้าฉันได้แก้ไขไฟล์ใดไฟล์หนึ่งที่เกี่ยวข้องดึงการเปลี่ยนแปลงมีความขัดแย้งจริง แต่ก็ดึงความคิดเห็น ถ้าอย่างนั้นฉันจะมีไฟล์ยุ่งมากแน่นอน โชคดีที่ไม่ได้เกิดขึ้น

12
แนวปฏิบัติที่ดีที่สุดในปัจจุบันที่ได้รับการยอมรับเกี่ยวกับคำสำคัญ“ นี้” ที่อยู่หน้าฟิลด์และวิธีการใน c # คืออะไร
หากไม่จำเป็นต้องแยกแยะความแตกต่างระหว่างตัวแปรและฟิลด์ด้วยชื่อเดียวกันฉันไม่เคยใส่this.หน้าฟิลด์หรือการเข้าถึงสมาชิกใด ๆ ใน C # ฉันเห็นว่านี่ไม่ต่างจากm_คำนำหน้าซึ่งเคยเป็นเรื่องปกติใน C ++ และคิดว่าถ้าคุณต้องการระบุว่าเป็นสมาชิกคลาสของคุณใหญ่เกินไป อย่างไรก็ตามมีคนจำนวนมากในสำนักงานของฉันที่ไม่เห็นด้วยอย่างยิ่ง สิ่งที่ถือว่าเป็นแนวทางปฏิบัติที่ดีที่สุดในปัจจุบันเกี่ยวกับthis.อะไร? แก้ไข: เพื่อชี้แจงฉันไม่เคยใช้m_และใช้เฉพาะthis.เมื่อจำเป็นจริงๆ
14 c#  coding-style 

12
คำนำหน้าประเภทและขอบเขตมีประโยชน์หรือไม่
เมื่อเร็ว ๆ นี้เริ่มงานแรกของฉันในฐานะนักพัฒนาซอฟต์แวร์ฉันถูกโยนลงมาเล็กน้อยเพื่อบอกว่าฉันไม่ต้องทำตามอนุสัญญาการตั้งชื่อใด ๆ ในรหัสของฉัน รหัสที่เขียนโดยกลุ่มที่ทำงานในโครงการอื่น ๆ โครงการขนาดใหญ่ตามอนุสัญญาการตั้งชื่อ แต่เนื่องจากฉันถูกนำเข้ามาเขียนแอปพลิเคชั่นใหม่สแตนด์อะโลนความรู้สึกคือว่ามันไม่สำคัญเลย มันเป็นความกังวลครั้งสุดท้ายของฉันดังนั้นฉันแค่ทำตามแบบแผนเดิมที่มีอยู่แล้วก็วิ่งไปด้วย int nTickCount bool bConnected object[] m_aItems fSum += fWeight * fValue class cManager enum etSystemStates etSystemStates eState cManager.cs แต่มันคุ้มค่าจริงหรือ ฉันคิดว่ามันยากที่จะตัดสินผลกระทบสุทธิว่าการทำตามแบบแผนการตั้งชื่อแบบนี้มีความเข้าใจและการตรวจจับข้อผิดพลาด แต่จากการมองเห็นมันก็ดูน่าเกลียด นอกจากนี้การมีทุกคลาสและไฟล์ทั้งหมดในโครงการที่เรียกว่า cSomething ดูเหมือนว่าจะไม่ค่อยสวย ฉันไม่ได้อยู่ภายใต้ภาพลวงตาว่าเป็นเรื่องใหญ่ระยะไกลเมื่อเปรียบเทียบกับสิ่งที่สร้างความแตกต่างอย่างชัดเจนเช่นอัลกอริธึมและสถาปัตยกรรมที่คุณใช้ แต่การประชุมใด ๆ ที่มีผลต่อรหัสทุกบรรทัดที่ฉันเขียนดูเหมือนว่าคุ้มค่า คุณคิดว่ารูปแบบการตั้งชื่อที่หรูหราและมีประสิทธิภาพที่สุดคืออะไรหากจำเป็นต้องใช้เลย? มันแสดงถึงประเภทและ / หรือขอบเขตหรือไม่?

2
ลุงบ๊อบหมายความว่าอะไรโดย 'ชื่อวลีคำนาม'?
ฉันอ่านรหัสสะอาดโดยลุงบ๊อบ เนื่องจากฉันไม่ใช่เจ้าของภาษาฉันจึงไม่เข้าใจข้อความต่อไปนี้: คลาสและวัตถุที่ควรจะมีคำนามหรือนามวลีชื่อเช่น Customer, WikiPage, และAccount AddressParserคำหลีกเลี่ยงชอบ Manager, Processor, DataหรือInfoในชื่อของชั้นเรียน ชื่อคลาสไม่ควรเป็นคำกริยา ที่ผมรู้ว่าไม่มีใครManager, Processor, DataและInfoเป็นคำกริยาไม่ได้หรือไม่ อะไรคือจุดที่เขาต้องการเน้น

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

5
วิธีการรับรองมาตรฐานการเข้ารหัสเดียวใน. NET ด้วยการสนับสนุนเครื่องมือ
อาจเป็นสถานการณ์พื้นฐานที่ทุกคนคุ้นเคย คุณได้เห็นด้วยกับมาตรฐานการเข้ารหัสในทีมของคุณและตอนนี้ถึงเวลาที่ต้องทำให้แน่ใจว่าทุกคนติดตามพวกเขา บางคนทำผ่านการเขียนโปรแกรมคู่หนักอื่น ๆ รักษารายการมาตรฐานการเข้ารหัสและทำการตรวจสอบด้วยตนเอง คนอื่น ๆ ยังใช้เครื่องมือวิเคราะห์รหัสคงที่จาก Visual Studio เพื่อให้แน่ใจว่ามีการบังคับใช้มาตรฐานการเข้ารหัส อะไรคือวิธีปฏิบัติที่ดีที่สุดของคุณเพื่อรับรองมาตรฐานการเข้ารหัส? คุณใช้เครื่องมือใด - มีเครื่องมือสำคัญบ้างที่ dev ทุกคนควรรู้ คุณจะรวมมาตรฐานรหัสของคุณในเครื่องมือพัฒนาของคุณได้อย่างไร
14 c#  .net  coding-style 

4
ใน C / C ++ ฉันควรใช้ 'const' ในพารามิเตอร์และตัวแปรท้องถิ่นเมื่อทำได้หรือไม่
คำถามนี้เป็นแรงบันดาลใจคำถามเกี่ยวกับfinalใน java ใน C / C ++ ฉันควรใช้constทุกครั้งที่ทำได้หรือไม่ ฉันรู้ว่ามีคำถามที่เกี่ยวข้องกับการใช้constในพารามิเตอร์อยู่แล้ว น่าเสียดายที่คำถามนั้นและคำตอบนั้นไม่ได้ตอบคำถามของฉันอย่างเต็มที่เพราะมันเป็นเพียงเกี่ยวกับพารามิเตอร์ของฟังก์ชั่น แต่ฉันก็อยากจะรู้เกี่ยวกับกรณีอื่น ๆ (เช่น: ตัวแปรท้องถิ่น) นอกจากนี้คำตอบเกือบทั้งหมดสำหรับคำถามนั้นบอกว่าเราควรใช้constเพราะมันมีข้อมูลที่เป็นประโยชน์เกี่ยวกับการเข้าถึงของตัวแปร แต่สิ่งนี้ดูเหมือนจะขัดแย้งกับคำตอบเกี่ยวกับการใช้ขั้นสุดท้ายใน Javaซึ่งรัฐfinalอาจไม่จำเป็นหากไม่มีข้อมูลเพิ่มเติมและควรละเว้นการรักษารหัสให้สั้นและสะอาด ดังนั้นฉันควรใช้constทุกครั้งที่ทำได้หรือไม่ ถ้าเป็นเช่นนั้นทำไมคำแนะนำสำหรับconstC ++ แตกต่างจากคำแนะนำสำหรับfinalใน Java

1
มีวิธีปฏิบัติที่เป็นมาตรฐานสำหรับการสั่งซื้อแอตทริบิวต์ในแท็ก HTML หรือไม่
ฉันกำลังทำงานในโครงการ AngularJS และคุณลักษณะต่าง ๆ มากมายในองค์ประกอบ HTML ของฉัน: <button type="submit" ng-click="Page.UI.DetailView.ExecuteFunction()" ng-disabled="step5.$invalid" class="btn btn-success pull-right"> Submit this Product </button> มีแบบแผนมาตรฐานสำหรับการสั่งซื้อคุณลักษณะเหล่านี้หรือไม่ ตามตัวอักษร? จัดกลุ่มตามความหมาย (เช่นคุณลักษณะเชิงมุมทั้งหมดเข้าด้วยกัน)? คุณลักษณะ HTML มาตรฐาน ("ประเภท" เป็นต้น) ก่อน?

7
มีวิธีในการสนับสนุนรูปแบบการเข้ารหัสที่แตกต่างกันในทีมพัฒนาหรือไม่
ปัญหา: นักพัฒนาสองคน => สามความคิดเห็นต่อการเยื้อง, การจัดฟันในบรรทัดใหม่หรือไม่ ฯลฯ เรามักจะทำงานกับคนสามหรือสี่คนในโครงการของเราและแต่ละคนก็มีสไตล์โค้ดของตัวเอง ฉันรู้ว่าวิธีแก้ปัญหาทั่วไปคือการยอมรับสไตล์โค้ดทุกคนต้องใช้ แต่ฉันไม่ต้องการบังคับให้โปรแกรมเมอร์สร้างสรรค์ในชุดที่ไม่เหมาะกับพวกเขา ดังนั้นคำถามคือ: มีวิธีให้โปรแกรมเมอร์แต่ละคนใช้สไตล์ของตนเอง แต่มีฐานรหัสทั่วไปภายในพื้นที่เก็บข้อมูลหรือไม่ ฉันคิดว่าบาง git / svn / ปลั๊กอินใด ๆ ซึ่งการเปลี่ยนแปลงระหว่างสไตล์ส่วนตัวและทั่วไปในการชำระเงินและกระทำ ดูเหมือนว่าฉันว่าส่วนที่ยุ่งยากในวิธีนี้คือการสนับสนุนความแตกต่างที่ถูกต้องระหว่างเวอร์ชันของไฟล์

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

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

3
ฉันควรรวมอะไรไว้ในความคิดเห็นเอกสาร XML
ฉันพยายามทำให้จุดรหัสของฉันดีขึ้นโดยเฉพาะอย่างยิ่งเมื่อมันมาถึงความเห็น XML ในสมาชิกชั้นเรียน แต่บ่อยครั้งที่มันรู้สึกโง่ ในกรณีของตัวจัดการเหตุการณ์การตั้งชื่อและพารามิเตอร์เป็นมาตรฐานและชัดเจน: /// <summary> /// Handler for myCollection's CollectionChanged Event. /// </summary> /// <param name="sender">Event Sender</param> /// <param name="e">Event Arguments</param> private void myCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { // actual code here... } ฉันมักจะมีคุณสมบัติง่าย ๆ ที่มีชื่อ (IMO) อย่างชัดเจนเพื่อให้การสรุปซ้ำซ้อน: /// <summary> /// Indicates if an item is selected. /// …
13 c#  coding-style 

8
จัดแต่งทรงผมผสมและ / หรือถ้าคำสั่ง
คุณจะคอมไพล์คอมเพล็กซ์ซับซ้อนอย่างไรและ / หรือถ้าคำสั่งสำหรับการอ่านสูงสุด คุณเยื้องอย่างไรและคุณวางเส้นแบ่งที่ใด สถานการณ์เฉพาะของฉันคือบางสิ่งดังต่อไปนี้ มันดีกว่าการทุบทุกอย่างให้เป็นเส้นเดียว แต่ก็ดูยุ่งเหยิง if ( ( x == y && a != b && p.isGood() && ( i + u == b || q >= a ) ) || k.isSomething() || m > n ) { doSomething(); }

8
ฟังก์ชันที่เรียกใช้ฟังก์ชันอื่นเท่านั้น นี่เป็นวิธีปฏิบัติที่ดีหรือไม่?
ขณะนี้ฉันกำลังทำงานกับชุดรายงานที่มีหลายส่วน (ทั้งหมดต้องมีการจัดรูปแบบที่แตกต่างกัน) และฉันกำลังพยายามหาวิธีที่ดีที่สุดในการจัดโครงสร้างโค้ดของฉัน รายงานที่คล้ายกันที่เราได้ทำในตอนท้ายที่ผ่านมามีฟังก์ชั่นที่มีขนาดใหญ่มาก (200+ บรรทัด) ที่ทำการจัดการข้อมูลและการจัดรูปแบบสำหรับรายงานทั้งหมดดังนั้นเวิร์กโฟลว์จะมีลักษณะดังนี้: DataTable reportTable = new DataTable(); void RunReport() { reportTable = DataClass.getReportData(); largeReportProcessingFunction(); outputReportToUser(); } ฉันต้องการที่จะสามารถแบ่งฟังก์ชั่นขนาดใหญ่เหล่านี้ออกเป็นชิ้นเล็ก ๆ แต่ฉันกลัวว่าฉันจะจบลงด้วยฟังก์ชั่นที่ไม่สามารถนำมาใช้ซ้ำได้หลายสิบและฟังก์ชั่น "ทำทุกอย่างที่นี่" ที่คล้ายกัน เรียกใช้ฟังก์ชั่นเล็ก ๆ เหล่านี้ได้เช่น: void largeReportProcessingFunction() { processSection1HeaderData(); calculateSection1HeaderAverages(); formatSection1HeaderDisplay(); processSection1SummaryTableData(); calculateSection1SummaryTableTotalRow(); formatSection1SummaryTableDisplay(); processSection1FooterData(); getSection1FooterSummaryTotals(); formatSection1FooterDisplay(); processSection2HeaderData(); calculateSection1HeaderAverages(); formatSection1HeaderDisplay(); calculateSection1HeaderAverages(); ... } หรือถ้าเราไปอีกขั้นหนึ่ง: void largeReportProcessingFunction() …

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. …

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