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

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

17
จัดการกับเพื่อนร่วมงานที่ไม่มีรูปแบบการเข้ารหัสที่สอดคล้องกันหรือไม่
คุณทำอะไรเมื่อคุณทำงานกับคนที่มีแนวโน้มที่จะเขียนโค้ดไม่ดีโวหาร รหัสที่ผมพูดถึงมักจะเป็นเทคนิคที่ถูกต้องมีโครงสร้างที่สมเหตุสมผลและแม้กระทั่งอาจจะสง่างามอัลกอริทึม แต่มันก็ดูน่าเกลียด เรามี: ส่วนผสมของอนุสัญญาการตั้งชื่อและชื่อที่แตกต่างกัน ( underscore_styleและcamelCaseและUpperCamelและCAPSทั้งหมดใช้มากหรือน้อยโดยการสุ่มกับตัวแปรต่าง ๆ ในฟังก์ชั่นเดียวกัน) ระยะห่างที่แปลกประหลาดและไม่สอดคล้องกันเช่น Functioncall (arg1 ,arg2,arg3 ); คำที่สะกดผิดจำนวนมากในความคิดเห็นและชื่อตัวแปร เรามีระบบตรวจสอบรหัสที่ดีที่ฉันทำงานอยู่ดังนั้นเราจะได้ตรวจสอบและแก้ไขสิ่งที่เลวร้ายที่สุด อย่างไรก็ตามมีความรู้สึกเล็กน้อยในการส่งบทวิจารณ์รหัสที่ประกอบด้วย 50 บรรทัดของ "เพิ่มช่องว่างที่นี่สะกด 'itarator' อย่างถูกต้องเปลี่ยนการใช้อักษรตัวพิมพ์ใหญ่นี้ ฯลฯ คุณจะสนับสนุนให้บุคคลนี้ระมัดระวังและสอดคล้องกับรายละเอียดเหล่านี้มากขึ้นอย่างไร

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

12
int * i; หรือ int * i; หรือ int * i; [ปิด]
อะไรคือวิธีที่คุณชื่นชอบในการประกาศตัวชี้? int* i; หรือ int *i; หรือ int * i; หรือ int*i; กรุณาอธิบายว่าทำไม ดูเพิ่มเติมได้ที่: http://www.stroustrup.com/bs_faq2.html#whitespace

1
คำศัพท์สำหรับฟังก์ชั่น JavaScript ที่ไม่ระบุชื่อเรียกว่าอะไรทันที
ฉันกำลังเขียนคู่มือสไตล์ JavaScript สำหรับทีมของฉันเพื่อให้เราสามารถจัดระเบียบและมีส่วนร่วมในเอกสารของเราได้ง่ายขึ้น แต่ฉันได้เจอปัญหาเล็ก ๆ น้อย ๆ ซึ่งเป็นที่ที่คำถามของฉันใช้ ... ฉันควรจะเรียกใช้ฟังก์ชัน JavaScript แบบไม่ระบุชื่อที่เรียกว่าอะไรในทันที ฉันรู้ว่าฉันสามารถเรียกมันว่า "ฟังก์ชั่นที่ไม่ระบุชื่อ" ได้ แต่ฉันอยากจะเน้นความจริงที่ว่ามันถูกเรียกใช้ทันที นี่คือตัวอย่าง: var MyVariable = (function(data){ return "another value" })("some value"); console.log(MyVariable); // "another value"

5
คู่มือสไตล์สำหรับ C ++ [ปิด]
ตอนนี้ฉันกำลังใช้คู่มือสไตล์ C ++ ของ Googleในรหัส C ++ ของฉันและฉันก็ค่อนข้างพอใจกับมัน เมื่อเร็ว ๆ นี้ฉันได้รับแจ้งว่าคู่มือนี้ไม่ดีมาก: Google ใช้งานภายใน (ฉันรู้ว่า) ล้าสมัยและส่งเสริมการปฏิบัติที่ไม่ดีบางอย่าง ดังนั้นฉันต้องการใช้รูปแบบการเข้ารหัสอื่น มีคำแนะนำสไตล์ C ++ ที่ดีและใช้งานอย่างเป็นธรรมอะไรบ้าง? ฉันเขียนโค้ดสำหรับทั้ง gcc และ Visual Studio และฉันใช้คุณสมบัติ C ++ 11 มากมาย สิ่งที่ฉันชอบมากเกี่ยวกับคู่มือสไตล์ Google C ++คือการเยื้องช่องว่างและการตั้งชื่อ (โดยเฉพาะการตั้งชื่อคลาสทุกประเภท - รวมถึง typedefs, นามแฝงประเภทและนามแฝงเทมเพลต - ด้วยอักษรตัวใหญ่ตัวแรก) ฉันรู้ว่าคำตอบใด ๆ ที่เป็นอัตนัย (ฉันหวังว่านี่จะโอเคกับเว็บไซต์นี้) และฉันจะขอบคุณความคิดเห็นใด ๆ แต่ฉันสนใจที่จะใช้คำแนะนำในวันนี้

10
ฉันไม่สามารถโปรแกรมได้เนื่องจากรหัสที่ฉันใช้นั้นใช้รูปแบบการเข้ารหัสแบบเก่า นี่เป็นเรื่องปกติสำหรับโปรแกรมเมอร์หรือไม่
ฉันมีงานจริงครั้งแรกของฉันในฐานะโปรแกรมเมอร์ แต่ฉันไม่สามารถแก้ปัญหาใด ๆ ได้เพราะใช้รูปแบบการเข้ารหัส รหัสที่นี่: ไม่มีความคิดเห็น ไม่มีฟังก์ชั่น (เรียงตามลำดับ 50, 100, 200, 300 หรือมากกว่า) ใช้ข้อความมากมายที่ifมีเส้นทางจำนวนมาก มีตัวแปรที่ทำให้รู้สึกไม่ (เช่น .: cf_cfop, CF_Natop, lnom, r_procod) ใช้ภาษาเก่า (Visual FoxPro 8 จากปี 2002) แต่มีรุ่นใหม่จากปี 2007 ฉันรู้สึกเหมือนฉันย้อนกลับไปเมื่อปี 1970 มันเป็นเรื่องปกติสำหรับโปรแกรมเมอร์ที่คุ้นเคยกับ OOP รหัสสะอาดรูปแบบการออกแบบและอื่น ๆ หรือไม่ที่จะมีปัญหากับการเข้ารหัสด้วยวิธีแบบเก่านี้หรือไม่? แก้ไข : คำตอบทั้งหมดดีมาก สำหรับความหวังของฉัน (un) ปรากฏว่ามีฐานรหัสประเภทนี้มากมายทั่วโลก จุดที่กล่าวถึงคำตอบทั้งหมดคือ refactor รหัส ใช่ฉันชอบที่จะทำมัน ในโครงการส่วนบุคคลของฉันฉันทำเช่นนี้เสมอ แต่ ... ฉันไม่สามารถกำหนดรหัสซ้ำได้ …

9
ตัวแบ่งบรรทัดก่อน / หลังตัวดำเนินการ [ปิด]
ในขณะที่การประชุมจาวาโค้ดของซันแนะนำให้วางเส้นแบ่งไว้ก่อนที่ผู้ปฏิบัติงานแนวทางอื่น ๆ จะไม่เห็นด้วย ฉันไม่เห็นข้อดีข้อเสียใด ๆ ที่ชัดเจนดังนั้นจึงมีข้อดีของการใช้รูปแบบเหล่านี้กับอีกรูปแบบหนึ่งหรือไม่ String longVarName = a + b + c + d + e + f; VS String longVarName = a + b + c + d + e + f;

10
ฉันควรเขียน HTML หรือ CSS ก่อนหรือไม่
มีการเปรียบเทียบจำนวนมากสำหรับการพัฒนา HTML / CSS ซึ่งอาจสับสนเล็กน้อยสำหรับผู้เริ่มต้น HTML = มูลนิธิ / บ้าน CSS = ผนัง / พิมพ์เขียว / วอลล์เปเปอร์ มีวิธีปฏิบัติที่ดีที่สุดที่นี่หรือไม่? เราควรเขียนอันไหนก่อน
28 coding-style  html  css 

10
Simple vs Complex (แต่มีประสิทธิภาพด้านประสิทธิภาพ) โซลูชัน - ตัวเลือกใดและเมื่อใด
ฉันเขียนโปรแกรมมาสองสามปีและมักพบว่าตัวเองอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออก มีสองวิธีคือ - วิธีการหนึ่งเป็นแบบง่ายเช่นวิธีการแบบง่ายเข้าใจและบำรุงรักษาได้ง่ายขึ้น มันเกี่ยวข้องกับความซ้ำซ้อนบางงานพิเศษ (IO เพิ่มเติมการประมวลผลพิเศษ) และดังนั้นจึงไม่ใช่ทางออกที่ดีที่สุด แต่วิธีอื่น ๆ ใช้วิธีการที่ซับซ้อนยากที่จะนำไปใช้มักจะเกี่ยวข้องกับการปฏิสัมพันธ์ระหว่างโมดูลจำนวนมากและเป็นโซลูชันที่มีประสิทธิภาพ โซลูชันใดที่ฉันควรพยายามเมื่อฉันไม่มี SLA ที่มีประสิทธิภาพสูงเพื่อตอบสนองและแม้แต่โซลูชันที่เรียบง่ายสามารถตอบสนองประสิทธิภาพ SLA ได้ ฉันรู้สึกรังเกียจในหมู่ผู้พัฒนาเพื่อนของฉันสำหรับวิธีแก้ปัญหาอย่างง่าย เป็นวิธีปฏิบัติที่ดีหรือไม่ในการหาวิธีแก้ปัญหาที่ซับซ้อนที่สุดหาก SLA ประสิทธิภาพของคุณสามารถพบได้โดยวิธีง่ายๆ

6
ข้อควรพิจารณาในทางปฏิบัติสำหรับข้อตกลงการตั้งชื่อ HTML / CSS (ไวยากรณ์) [ปิด]
คำถาม: สิ่งที่ต้องคำนึงถึงในทางปฏิบัติสำหรับไวยากรณ์classและidค่าคืออะไร? โปรดทราบว่าฉันไม่ได้ถามเกี่ยวกับความหมายเช่นคำที่ใช้จริงเช่นตามที่อธิบายไว้ในบล็อกนี้ มีทรัพยากรมากมายที่ด้านข้างของอนุสัญญาการตั้งชื่อแล้วในความเป็นจริงบดบังการค้นหาของฉันสำหรับข้อมูลที่เป็นประโยชน์ในบิตเกี่ยวกับการสร้างประโยคต่าง ๆ: ปลอกใช้ interpunction (เฉพาะ-เส้นประ) อักขระเฉพาะที่จะใช้หรือหลีกเลี่ยง ฯลฯ เพื่อสรุปเหตุผลที่ฉันถามคำถามนี้: ข้อ จำกัดในการตั้งชื่อไอดีและคลาสไม่ได้นำไปสู่การประชุมใด ๆ ความอุดมสมบูรณ์ของทรัพยากรทางด้านความหมายของอนุสัญญาการตั้งชื่อปิดบังการค้นหาข้อควรพิจารณาทางวากยสัมพันธ์ ฉันไม่พบแหล่งข้อมูลที่เชื่อถือได้เกี่ยวกับเรื่องนี้ ยังไม่มีคำถามเกี่ยวกับ SE โปรแกรมเมอร์ในหัวข้อนี้ :) อนุสัญญาบางข้อที่ฉันได้พิจารณาแล้วว่าใช้: UpperCamelCaseส่วนใหญ่เป็นนิสัยการข้ามจากการเข้ารหัสฝั่งเซิร์ฟเวอร์ lowerCamelCaseเพื่อความสอดคล้องกับข้อกำหนดการตั้งชื่อ JavaScript css-style-classesซึ่งสอดคล้องกับการตั้งชื่อคุณสมบัติ css (แต่อาจน่ารำคาญเมื่อ Ctrl + Shift + ArrowKey เลือกข้อความ) with_under_scoresซึ่งโดยส่วนตัวฉันไม่ได้เห็นใช้มากนัก alllowercaseง่ายต่อการจดจำ แต่อาจอ่านยากสำหรับชื่อที่ยาวขึ้น UPPERCASEFTWเป็นวิธีที่ดีในการรบกวนโปรแกรมเมอร์เพื่อนของคุณ (อาจรวมกับตัวเลือก 4 สำหรับการอ่าน) และอาจเป็นไปได้ว่าฉันไม่มีตัวเลือกหรือชุดค่าผสมที่สำคัญ ดังนั้น: มีข้อควรพิจารณาอะไรบ้างในการตั้งชื่ออนุสัญญา

13
จัดการเพื่อนร่วมงานที่ล้าสมัยของฉัน
ฉันเป็นโปรแกรมเมอร์อายุน้อยและทำงานในแผนกไอทีของ บริษัท ขนาดกลาง ฉันมีเพื่อนร่วมงานและเขาเป็นโปรแกรมเมอร์ Visual Basic 6 ที่ดีจริงๆ และฉันหมายถึงดีจริงๆ อย่างสุจริต เขาสามารถส่งมอบแอปพลิเคชันการทำงานที่มีข้อบกพร่องน้อยมากในเวลาที่ฉันต้องซื้อกาแฟถ้วยแรกและบูตเครื่องของฉัน เขาเป็นคนดี สิ่งที่เรากำลังทำงานกับทีมและสไตล์การทำงานของเขาเป็นโบราณวัตถุอย่างสมบูรณ์ เขาไม่เชื่อในซอฟต์แวร์เวอร์ชัน (ถ้าคุณแค่ทำให้แน่ใจว่ารหัสของคุณถูกต้องคุณไม่จำเป็นต้องมีเรื่องไร้สาระทั้งหมด) ไม่เชื่อในการปรับใช้ (ฉันสามารถส่งมอบการทำงานที่สามารถใช้งานได้วิธีการปรับใช้นั้นมีไว้เพื่อให้ sysadmins หาข้อมูล) ไม่เชื่อในสิ่งที่เป็นนามธรรม ('ถ้าคุณต้องการสร้างรูทีนย่อยให้ไปข้างหน้า แต่อย่าเรียกรูทีนย่อยใด ๆ จากรูทีนย่อยนั้นมันยุ่งเหยิงแบบนั้นและโค้ดก็ยากที่จะติดตามวิธีนี้ทุกคนสามารถทำตามทุกขั้นตอนได้ 'หรือ' ใช่แน่นอนคุณสามารถใช้ห้องสมุดนั้นทำสิ่งนั้นเพื่อคุณ แต่วิธีที่คุณไม่เข้าใจว่าเกิดอะไรขึ้น ') และแน่นอนไม่เชื่อใน OOP (เราทำงานใน VB.net) เขาเก่งในสิ่งที่เขาทำเขาสามารถส่งมอบแอปพลิเคชันได้เร็วกว่าที่ฉันทำได้ แต่มันไม่ทำงานในทีม สมาชิกในทีมคนอื่น ๆ ของเราเงียบและไม่ชอบพูดแม้ว่าเขาจะเห็นด้วย ผู้จัดการของเราคิดว่าฉันทำคะแนนถูกต้อง แต่ไม่ใช่โปรแกรมเมอร์ ฉันมีเวลายากมากในการดูแลรักษาโปรแกรมที่เขาเขียนและมันไม่ได้สร้างบรรยากาศทีมที่ดี คุณคิดว่าอะไรคือสิ่งที่ดีที่สุดที่ฉันควรทำ

4
โยนข้อยกเว้นเข้าไปในที่สุด
วิเคราะห์รหัส Static เช่นเสริมสร้าง "บ่น" เมื่อมีข้อยกเว้นอาจจะโยนภายในบล็อกบอกว่าfinally Using a throw statement inside a finally block breaks the logical progression through the try-catch-finallyปกติฉันเห็นด้วยกับเรื่องนี้ แต่เมื่อเร็ว ๆ นี้ฉันเจอโค้ดนี้: SomeFileWriter writer = null; try { //init the writer //write into the file } catch (...) { //exception handling } finally { if (writer!= null) writer.close(); } …

3
สไตล์สำหรับโฟลว์การควบคุมพร้อมการตรวจสอบความถูกต้อง
ฉันพบว่าตัวเองเขียนโค้ดจำนวนมากเช่นนี้: int myFunction(Person* person) { int personIsValid = !(person==NULL); if (personIsValid) { // do some stuff; might be lengthy int myresult = whatever; return myResult; } else { return -1; } } มันอาจดูยุ่งเหยิงโดยเฉพาะถ้ามีการตรวจสอบหลายครั้ง ในกรณีเช่นนี้ฉันได้ทดลองใช้รูปแบบอื่นเช่นนี้: int netWorth(Person* person) { if (Person==NULL) { return -1; } if (!(person->isAlive)) { return -1; } …

9
เหตุใดผู้คนจึงต่อต้านแท็ก #region ในวิธีการอย่างมาก
ฉันได้ยินมามากมายเกี่ยวกับการทำให้วิธีการสั้นและฉันได้ยินโปรแกรมเมอร์จำนวนมากพูดว่าการใช้ #region tags ในวิธีนั้นเป็นสัญญาณที่แน่ใจว่ามันยาวเกินไปและควรได้รับการแบ่งเป็นหลาย ๆ วิธี อย่างไรก็ตามสำหรับฉันแล้วดูเหมือนว่ามีหลายกรณีที่การแยกรหัสด้วยแท็ก #region ภายในเมธอดนั้นเป็นวิธีที่เหนือกว่าในการรีแฟคเตอร์เป็นหลายวิธี สมมติว่าเรามีวิธีการคำนวณที่สามารถแยกออกเป็นสามขั้นตอนค่อนข้างชัดเจน นอกจากนี้แต่ละขั้นตอนเหล่านี้มีความเกี่ยวข้องกับการคำนวณสำหรับวิธีการนี้เท่านั้นดังนั้นการแตกออกเป็นวิธีการใหม่ทำให้เราไม่ต้องใช้รหัสซ้ำ อะไรคือประโยชน์ของการแยกแต่ละขั้นตอนเป็นวิธีของตัวเอง? เท่าที่ฉันสามารถบอกได้สิ่งที่เราได้รับก็คือความสามารถในการอ่านและขอบเขตตัวแปรที่แยกต่างหากสำหรับแต่ละเฟส (ซึ่งจะช่วยป้องกันการแก้ไขเฟสเฉพาะจากการทำลายระยะอื่นโดยไม่ตั้งใจ) อย่างไรก็ตามสิ่งเหล่านี้สามารถทำได้โดยไม่ต้องแยกแต่ละขั้นตอนเป็นวิธีของตนเอง แท็กภูมิภาคช่วยให้เราสามารถยุบรหัสลงในแบบฟอร์มซึ่งสามารถอ่านได้ (ด้วยสิทธิประโยชน์เพิ่มเติมที่เราไม่ต้องออกจากที่ของเราในไฟล์นี้อีกต่อไปหากเราตัดสินใจขยายและตรวจสอบรหัส) และเพียงห่อแต่ละเฟสใน{}สร้างขอบเขตของตนเองเพื่อทำงานกับ ประโยชน์ในการทำเช่นนี้คือเราไม่ได้ทำให้ขอบเขตระดับชั้นเรียนสกปรกด้วยวิธีการสามวิธีที่จริงแล้วเกี่ยวข้องกับการทำงานภายในของวิธีที่สี่เท่านั้น ทันทีที่เปลี่ยนโฉมหน้าวิธีการยาวเป็นชุดของวิธีการสั้น ๆ ดูเหมือนว่าฉันจะใช้รหัสเทียบเท่ากับการเพิ่มประสิทธิภาพก่อนวัยอันควร; คุณกำลังแนะนำความซับซ้อนเพิ่มเติมเพื่อแก้ไขปัญหาซึ่งในหลายกรณีไม่เคยเกิดขึ้น คุณสามารถแยกเฟสใดช่วงหนึ่งเป็นวิธีของตัวเองได้ในภายหลังหากมีโอกาสในการใช้รหัสซ้ำ คิด?
27 c#  coding-style 

9
คุณคิดอย่างไรกับ Periods / Full Stops ในคอมเม้นท์โค้ด [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเห็นสิ่งนี้ถามใน SO Tavernดังนั้นฉันจึงโพสต์คำถามที่นี่ ฉันคิดว่ามันเป็นคำถามที่น่าสนใจ (แน่นอนว่ามันไม่ได้อยู่ในนั้น แต่ฉันคิดว่ามันโอเคที่นี่) คุณเพิ่มจุด (หรือตามที่ OP เขียนว่า "full stop") ในความคิดเห็นเกี่ยวกับโค้ดของคุณหรือไม่ เพื่อให้มันเกี่ยวข้องทำไม ?

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