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

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

11
ขีด จำกัด 80 อักขระยังคงมีความเกี่ยวข้องในช่วงเวลาของจอภาพแบบจอกว้างหรือไม่ [ปิด]
บนหน้าจอไวด์สกรีนสามารถดูได้ครั้งละ 80 ตัวอักษรโดยไม่ต้องใช้แถบเลื่อน แม้ Linus Torvalds เห็นขีด จำกัด 80 ตัวอักษรเป็นล้าสมัย ดังนั้นขีด จำกัด 80 อักขระยังคงเกี่ยวข้องในช่วงเวลาของจอภาพแบบจอกว้างหรือไม่

10
ในกรณีใดรหัสน้อยไม่ดีขึ้น? [ปิด]
ฉันเพิ่งปรับปรุงรหัสบางส่วนในที่ทำงานเมื่อเร็ว ๆ นี้และฉันคิดว่าฉันทำงานได้ดี ฉันลดโค้ด 980 บรรทัดไปที่ 450 และลดจำนวนคลาสลงครึ่งหนึ่ง เมื่อแสดงสิ่งนี้ต่อเพื่อนร่วมงานของฉันบางคนไม่เห็นด้วยว่านี่เป็นการปรับปรุง พวกเขากล่าวว่า - "บรรทัดที่น้อยกว่าของรหัสไม่จำเป็นต้องดีกว่า" ฉันสามารถเห็นได้ว่าอาจมีกรณีร้ายแรงที่ผู้คนเขียนเส้นยาวจริง ๆ และ / หรือใส่ทุกอย่างในวิธีการเดียวเพื่อบันทึกสองสามบรรทัด แต่นั่นไม่ใช่สิ่งที่ฉันทำ รหัสในความคิดของฉันมีโครงสร้างที่ดีและง่ายต่อการเข้าใจ / บำรุงรักษาเนื่องจากมันมีขนาดเพียงครึ่งเดียว ฉันกำลังดิ้นรนเพื่อดูว่าทำไมทุกคนต้องการทำงานกับรหัสสองเท่าที่จำเป็นสำหรับการทำงานให้เสร็จและฉันสงสัยว่าถ้าใครรู้สึกเหมือนเพื่อนร่วมงานของฉันและสามารถสร้างกรณีที่ดีสำหรับการมีรหัสมากกว่า ?

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

9
อะไรคือความสมดุลที่เหมาะสมระหว่างความสอดคล้องของรหัสและการปรับปรุงรหัส
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับเพื่อนร่วมงานเกี่ยวกับรูปแบบโค้ด เขาได้โต้แย้งว่าการใช้งาน API และรูปแบบทั่วไปที่คุณใช้ควรคล้ายกันมากที่สุดกับรหัสที่ล้อมรอบหากไม่ได้ใช้ codebase โดยรวมเช่นเดียวกับที่คุณใช้กับการปรากฏตัวของโค้ด . ตัวอย่างเช่นถ้าฉันเพิ่มวิธีไปยังคลาส DAO ใน C # ฉันจะลองใช้ LINQ ที่เหมาะสมเพื่อช่วยให้รหัสของฉันสะอาดและง่ายต่อการบำรุงรักษาแม้ว่าจะไม่มีวิธีการอื่นในชั้นเรียนที่ใช้มันอยู่ อย่างไรก็ตามเพื่อนร่วมงานของฉันจะโต้แย้งว่าฉันไม่ควรใช้มันในกรณีนั้นเพราะมันจะขัดกับสไตล์ที่มีอยู่ของคลาสนั้นและยากที่จะเข้าใจ ในตอนแรกฉันพบว่าตำแหน่งของเขาค่อนข้างรุนแรง แต่หลังจากคิดไปพักหนึ่งฉันก็เริ่มเห็นประเด็นของเขา ด้วยตัวอย่าง LINQ สมมุติบางทีคลาสนี้อาจไม่มีเพราะเพื่อนร่วมงานของฉันไม่คุ้นเคยกับ LINQ? ถ้าเป็นเช่นนั้นรหัสของฉันจะไม่สามารถรักษาได้สำหรับเพื่อนนักพัฒนาของฉันถ้าฉันไม่ได้ใช้ ในทางกลับกันถ้าฉันเชื่ออย่างแท้จริงว่าการใช้เทคนิคดังกล่าวจะส่งผลให้โค้ดสะอาดยิ่งขึ้นดังนั้นฉันไม่ควรใช้แม้ว่าจะมีความแตกต่างอย่างมากจากโค้ดรอบ ๆ หรือไม่ ฉันคิดว่าข้อโต้แย้งของเพื่อนร่วมงานของฉันคือถ้าเราทุกคนดำเนินการเกี่ยวกับการใช้งานที่คล้ายกันใน codebase ด้วยวิธีที่แตกต่างกันและเราแต่ละคนคิดว่าวิธีของเรานั้น "ดีที่สุด" ในที่สุดรหัสโดยรวมก็ยากขึ้น เข้าใจไหม. อย่างไรก็ตามในตอนนี้ฉันยังคงคิดว่าหากเราติดตามรหัสที่มีอยู่มากเกินไปคุณภาพก็จะช้าลงเมื่อเวลาผ่านไป ดังนั้นรูปแบบส่วนใดของรูปแบบโค้ดและขอบเขตที่เราควรวาดเส้นระหว่างการคงเส้นคงวาและการปรับปรุง

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

7
การจัดการและจัดการจำนวนคลาสที่เพิ่มขึ้นอย่างมากหลังจากเปลี่ยนมาใช้ SOLID?
ในช่วงไม่กี่ปีที่ผ่านมาเราได้ค่อยๆเปลี่ยนไปใช้โค้ดที่ดีขึ้นอย่างค่อยเป็นค่อยไปในเวลาไม่กี่ก้าว ในที่สุดเราก็เริ่มที่จะเปลี่ยนไปใช้สิ่งที่คล้ายกับ SOLID อย่างน้อยที่สุด แต่เรายังไม่ถึงจุดนั้น นับตั้งแต่ทำการสลับหนึ่งในข้อร้องเรียนที่ใหญ่ที่สุดจากนักพัฒนาคือพวกเขาไม่สามารถยืนทบทวนและตรวจสอบไฟล์หลายสิบไฟล์ซึ่งก่อนหน้านี้ทุกงานต้องการเพียงผู้พัฒนาที่สัมผัส 5-10 ไฟล์ ก่อนที่จะเริ่มสวิตช์สถาปัตยกรรมของเราได้รับการจัดระเบียบอย่างดีดังต่อไปนี้ (ให้สิทธิ์โดยมีหนึ่งหรือสองไฟล์ที่มีขนาดมากกว่าหนึ่งคำสั่ง): Solution - Business -- AccountLogic -- DocumentLogic -- UsersLogic - Entities (Database entities) - Models (Domain Models) - Repositories -- AccountRepo -- DocumentRepo -- UserRepo - ViewModels -- AccountViewModel -- DocumentViewModel -- UserViewModel - UI ไฟล์ฉลาดทุกอย่างเป็นเส้นตรงและกะทัดรัดอย่างเหลือเชื่อ เห็นได้ชัดว่ามีการทำสำเนารหัสจำนวนมากการมีเพศสัมพันธ์อย่างแน่นหนาและปวดหัวอย่างไรก็ตามทุกคนสามารถเข้าไปสำรวจและคิดออกได้ สามเณรที่สมบูรณ์ผู้ที่ไม่เคยเปิด Visual Studio …

10
ไม่“ ถ้า (0 == ค่า) …” ทำอันตรายมากกว่าดีไหม? [ปิด]
นี่เป็นหนึ่งในสิ่งที่ฉันเกลียดที่สุดเมื่อฉันเห็นมันในรหัสของคนอื่น ฉันรู้ว่ามันหมายถึงอะไรและทำไมบางคนทำเช่นนี้ ("จะเกิดอะไรขึ้นถ้าฉันใส่ '=' แทนโดยบังเอิญ?") สำหรับฉันมันเหมือนเป็นอย่างมากเมื่อเด็กคนหนึ่งเดินลงบันไดเพื่อนับก้าวออกมาดัง ๆ อย่างไรก็ตามนี่คือข้อโต้แย้งของฉันกับมัน: มันขัดขวางการไหลตามธรรมชาติของการอ่านรหัสโปรแกรม เรามนุษย์พูดว่า "ถ้าค่าเป็นศูนย์" และไม่ใช่ "ถ้าเป็นศูนย์คือค่า" คอมไพเลอร์สมัยใหม่เตือนคุณเมื่อคุณมีงานที่มอบหมายในสภาพของคุณหรือที่จริงแล้วถ้าเงื่อนไขของคุณประกอบด้วยเพียงการมอบหมายนั้นซึ่งใช่ดูน่าสงสัยอยู่แล้ว คุณไม่ควรลืมใส่ double '=' เมื่อคุณเปรียบเทียบค่าหากคุณเป็นโปรแกรมเมอร์ คุณอาจลืมใส่ "!" เช่นกัน เมื่อทดสอบความไม่เท่าเทียมกัน

2
ฉันควรใช้“ is” เป็นคำนำหน้าสำหรับตัวแปรบูลีนเสมอหรือไม่ [ปิด]
ฉันควรใช้isเป็นคำนำหน้าสำหรับตัวแปรบูลีนเสมอหรือไม่ สิ่งที่เกี่ยวกับ booleans ที่บ่งบอกถึงบางสิ่งบางอย่างในอดีต? ฉันควรจะเขียนisInitializedหรือwasInitialized? ฉันควรเขียนถึงคุณสมบัติIsManyMembersหรือHasManyMembersไม่? มีวิธีปฏิบัติที่ดีที่สุดหรือไม่? หรือฉันควรเขียนตามกฎภาษาอังกฤษ?

16
ภายใน for-loop ฉันควรย้ายเงื่อนไขการพักลงในช่องเงื่อนไขถ้าเป็นไปได้หรือไม่ [ปิด]
บางครั้งฉันต้องการลูปที่ต้องการพักเช่นนี้ for(int i=0;i<array.length;i++){ //some other code if(condition){ break; } } ฉันรู้สึกอึดอัดกับการเขียน if(condition){ break; } เพราะมันใช้รหัส 3 บรรทัด และฉันพบว่าลูปสามารถเขียนใหม่เป็น: ↓ for(int i=0;i<array.length && !condition;i++){ //some other code } ดังนั้นคำถามของฉันคือมันเป็นการดีหรือไม่ที่จะย้ายเงื่อนไขลงในฟิลด์เงื่อนไขเพื่อลดบรรทัดของรหัสถ้าเป็นไปได้?


4
if ('constant' == $ variable) vs. if ($ variable == 'constant')
เมื่อเร็ว ๆ นี้ฉันได้ทำงานกับ PHP มากและโดยเฉพาะภายในกรอบ WordPress ฉันสังเกตเห็นรหัสจำนวนมากในรูปแบบของ: if ( 1 == $options['postlink'] ) ที่ฉันคาดว่าจะเห็น: if ( $options['postlink'] == 1 ) นี่เป็นข้อตกลงที่พบในบางภาษา / กรอบงานหรือไม่? มีเหตุผลใดที่แนวทางก่อนหน้านี้เป็นที่นิยมกว่าในภายหลัง (จากมุมมองการประมวลผลหรือมุมมองการแยกวิเคราะห์หรือแม้แต่มุมมองของมนุษย์?) หรือมันเป็นเพียงเรื่องของการลิ้มรส? ฉันมักจะคิดว่ามันจะดีกว่าเมื่อทำการทดสอบว่ารายการตัวแปรที่ทดสอบกับค่าคงที่อยู่ทางซ้าย ดูเหมือนว่าแผนที่ดีกว่าวิธีที่เราจะถามคำถามในภาษาธรรมชาติ: "ถ้าเค้กช็อคโกแลต" มากกว่า "ถ้าช็อคโกแลตเป็นเค้ก"

4
ทำไม #include <iostream.h> ไม่ดี
ฉันกำลังอ่านหัวข้ออื่นที่ชายคนหนึ่งถามเกี่ยวกับหนังสือ C ++ สำหรับผู้เริ่มต้นและหนึ่งในโปรแกรมเมอร์ที่ตอบรับเขียนสิ่งนี้: คำเตือนบางอย่าง: หลีกเลี่ยงหนังสือทุกเล่มที่มีคำว่า "สวัสดีโลก" ที่ระบุ #include &lt;iostream.h&gt; ฉันเปิดหนังสือ C ++ ของฉันและได้รวมส่วนหัว iostream อย่างที่แสดงไว้ด้านบน เหตุใดจึงไม่ดี คำแนะนำอื่น ๆ ที่ฉันควรทราบเมื่อเรียนรู้ C ++ คืออะไร พื้นหลัง: ฉันมีความเชี่ยวชาญใน C และฉันจะเริ่มเรียนรู้ C ++ ภาคการศึกษาถัดไปนี้

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

6
ควรตรวจสอบ `c> = '0'` หรือ` c> = 48` หรือไม่?
หลังจากการสนทนากับเพื่อนร่วมงานของฉันฉันได้รับคำถาม 'ปรัชญา' เกี่ยวกับวิธีจัดการกับชนิดข้อมูลถ่านใน Java ตามแนวทางปฏิบัติที่ดีที่สุด สมมติว่าสถานการณ์ง่าย ๆ(เห็นได้ชัดว่านี่เป็นเพียงตัวอย่างง่ายๆเพื่อให้ความหมายในการฝึกฝนสำหรับคำถามของฉัน)โดยที่ String 's' เป็นอินพุตคุณต้องนับจำนวนอักขระที่เป็นตัวเลขในนั้น นี่คือโซลูชันที่เป็นไปได้ 2 แบบ: 1) for(int i=0; i&lt;s.length(); i++) { if(s.charAt(i) &gt;= 48 &amp;&amp; s.charAt(i) &lt;= 57) { n++; } } 2) for(int i=0; i&lt;s.length(); i++) { if(s.charAt(i) &gt;= '0' &amp;&amp; s.charAt(i) &lt;= '9' ) { n++; } } ข้อใดที่สอง 'สะอาด' …

8
ฉันจะเรียนรู้การเขียนรหัส Pythonic อย่างมีประสิทธิภาพได้อย่างไร
ทำการค้นหาโดย Google สำหรับ "pythonic" เผยให้เห็นการตีความที่หลากหลาย หน้าวิกิพีเดียบอกว่า: neologism ทั่วไปในชุมชน Python คือ pythonic ซึ่งสามารถมีความหมายหลากหลายที่เกี่ยวข้องกับรูปแบบของโปรแกรม การบอกว่ารหัสไพ ธ อนิกนั้นคือการพูดว่ามันใช้สำนวนภาษาไพ ธ อนอย่างดีว่าเป็นเรื่องธรรมดาหรือแสดงความคล่องแคล่วในภาษา ในทำนองเดียวกันการพูดถึงส่วนต่อประสานหรือคุณสมบัติทางภาษาที่มันเป็น pythonic ก็คือว่ามันทำงานได้ดีกับ Python idioms ซึ่งการใช้งานนั้นเข้ากันได้ดีกับภาษาที่เหลือ นอกจากนี้ยังกล่าวถึงคำว่า "unpythonic": ในทางตรงกันข้ามเครื่องหมายของรหัส unpythonic คือมันพยายามที่จะเขียนโค้ด C ++ (หรือ Lisp, Perl หรือ Java) ใน Python— นั่นคือให้การถอดความแบบคร่าวๆมากกว่าการแปลแบบสำนวนจากภาษาอื่น แนวคิดของ pythonicity ถูกผูกไว้กับปรัชญาการอ่านที่เรียบง่ายของ Python และหลีกเลี่ยงวิธีการ "มีมากกว่าหนึ่งวิธีที่จะทำ" รหัสที่อ่านไม่ได้หรือสำนวนที่เข้าใจยากนั้นเป็นเสียงที่ไม่ไพเราะ คำว่า "pythonic" หมายถึงอะไร ฉันจะเรียนรู้วิธีการใช้อย่างมีประสิทธิภาพในทางปฏิบัติได้อย่างไร

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