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

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

9
แนวคิดเรื่อง“ การกลับมาครั้งเดียวเท่านั้น” มาจากไหน
ฉันมักจะพูดคุยกับโปรแกรมเมอร์ที่พูดว่า " อย่าใส่ข้อความส่งคืนหลายรายการในวิธีเดียวกัน " เมื่อฉันขอให้พวกเขาบอกเหตุผลว่าทำไมสิ่งที่ฉันได้คือ " มาตรฐานการเข้ารหัสบอกเช่นนั้น " หรือ " มันสับสน " เมื่อพวกเขาแสดงวิธีการแก้ปัญหาให้ฉันด้วยคำสั่งการส่งคืนเดียวรหัสดูเหมือนจะไม่ดีสำหรับฉัน ตัวอย่างเช่น: if (condition) return 42; else return 97; " นี่น่าเกลียดคุณต้องใช้ตัวแปรเฉพาะที่! " int result; if (condition) result = 42; else result = 97; return result; การขยายโค้ด 50% นี้ทำให้โปรแกรมเข้าใจได้ง่ายขึ้นอย่างไร โดยส่วนตัวแล้วฉันพบว่ามันยากขึ้นเพราะพื้นที่ของรัฐเพิ่มขึ้นจากตัวแปรอื่นที่สามารถป้องกันได้ง่าย แน่นอนโดยปกติฉันจะเขียน: return (condition) ? 42 : 97; แต่โปรแกรมเมอร์จำนวนมากหลีกเลี่ยงผู้ปฏิบัติงานที่มีเงื่อนไขและชอบแบบยาว แนวคิดเรื่อง …

9
เพราะเหตุใด 80 อักขระจึงถูกจำกัดความกว้างของมาตรฐานสำหรับความกว้างของรหัส
เหตุใด 80 อักขระจึงถูก จำกัด "มาตรฐาน" สำหรับความกว้างของรหัส ทำไม 80 และไม่ใช่ 79, 81 หรือ 100 ต้นกำเนิดของค่าเฉพาะนี้คืออะไร


15
การใช้พารามิเตอร์บูลีนเป็นสิ่งผิดปกติหรือไม่
ฉันได้เห็นการฝึกฝนเป็นครั้งคราวว่า "รู้สึก" ผิด แต่ฉันไม่สามารถพูดได้ชัดเจนว่ามีอะไรผิดปกติ หรืออาจเป็นเพียงความอคติของฉัน ไปที่นี่: นักพัฒนากำหนดวิธีการด้วยบูลีนเป็นหนึ่งในพารามิเตอร์ของมันและวิธีการที่เรียกว่าอื่นและอื่น ๆ และในที่สุดก็ใช้บูลีนเพียงเพื่อตรวจสอบว่าจะดำเนินการบางอย่างหรือไม่ ตัวอย่างนี้อาจใช้เพื่อให้การดำเนินการเฉพาะในกรณีที่ผู้ใช้มีสิทธิ์บางอย่างหรือบางทีถ้าเรา (หรือไม่) ในโหมดทดสอบหรือโหมดแบทช์หรือโหมดสดหรืออาจเฉพาะเมื่อระบบอยู่ใน บางรัฐ มีวิธีการทำอยู่เสมอไม่ว่าจะโดยการสอบถามเมื่อถึงเวลาที่ต้องดำเนินการ (แทนที่จะส่งผ่านพารามิเตอร์) หรือโดยมีวิธีการหลายเวอร์ชันหรือการใช้งานหลายระดับของชั้นเรียน ฯลฯ คำถามของฉันไม่ได้ มีวิธีการปรับปรุงสิ่งนี้มากน้อยเพียงใด แต่ไม่ว่ามันจะผิดหรือเปล่า (อย่างที่ฉันสงสัย) และถ้าเป็นเช่นนั้น

14
เพราะเหตุใดลุงบ๊อบจึงแนะนำว่ามาตรฐานการเข้ารหัสไม่ควรจดบันทึกหากคุณสามารถหลีกเลี่ยงได้
ในขณะที่ฉันกำลังอ่านคำถามนี้คำตอบที่ได้รับการโหวตสูงสุดอ้างถึงลุง Bob เกี่ยวกับมาตรฐานการเขียนโค้ดแต่ฉันรู้สึกสับสนกับคำแนะนำนี้: อย่าจดลงไปหากคุณสามารถหลีกเลี่ยงได้ ค่อนข้างปล่อยให้รหัสเป็นวิธีที่มาตรฐานถูกจับ สิ่งนี้สะท้อนในสมองของฉัน แต่ฉันไม่สามารถหาสถานที่ที่จะติด หากบุคคลใหม่เข้าร่วมทีมหรือเปลี่ยนมาตรฐานการเข้ารหัสจะไม่มีความสับสนของข้อมูลหรือไม่ ทำไมฉันไม่ควรเขียนมาตรฐานการเข้ารหัสลงไป?

17
มาตรฐานการเข้ารหัสเพื่อความชัดเจน: แสดงความคิดเห็นทุกบรรทัดของรหัส?
ฉันทำงานในร้านค้าที่ผลิตซอฟต์แวร์ที่สำคัญต่อชีวิตและฉันได้จัดการกับกฎการแสดงความคิดเห็นที่ตั้งใจจะให้โค้ดอ่านได้และอาจช่วยชีวิตผู้คนได้ จากประสบการณ์ของฉันแม้ว่าความต้องการจะกลายเป็นงานที่น่าเบื่อสมองที่ต้องทำเครื่องหมายในรายการตรวจสอบและไม่ช่วยให้ฉันจดจ่อกับการเขียนโค้ดที่เข้าใจได้ นอกจากนี้ยังเบี่ยงเบนความสนใจจากผู้ตรวจสอบเพียร์ของฉันจากการสนทนาที่มีความหมายกับฉันมากขึ้นเกี่ยวกับวิธีทำให้โค้ดง่ายต่อการเข้าใจ ฉันให้คะแนนรหัสนักเรียนที่ไม่มีความคิดเห็นและเห็นว่าเพราะเหตุใดพวกเขาจึงควรทำเครื่องหมายเพราะละเลยพวกเขา ฉันเข้าใจว่าการใช้ชื่อที่ดีโครงสร้างที่เรียบง่ายฟังก์ชั่นสั้น ๆ และโมดูลที่มุ่งเน้นจะทำให้โค้ดนั้นเข้าใจได้ง่ายพอที่จะลดความคิดเห็นได้ ฉันยังเข้าใจด้วยว่าความคิดเห็นควรอธิบายว่าทำไมรหัสทำในสิ่งที่มันทำไม่ได้อย่างไร ให้ทั้งหมดนี้เป็นไปได้ที่จะเขียนมาตรฐานการเข้ารหัสที่ดีที่จับความคิดนี้ คนที่จะมีความเกี่ยวข้องในการตรวจสอบโดยเพื่อน แต่จะไม่เปลี่ยนเป็นรายการตรวจสอบที่ไม่สนใจซึ่งทำให้โน้ตไม่เป็นประโยชน์มากกว่า: "คุณลืมแสดงความคิดเห็นในบรรทัดที่ 42" ตัวอย่างประเภทของรหัสกฎนี้อาจต้องใช้เมื่อถือว่าเป็นบรรทัดในรายการตรวจสอบ: /* Display an error message */ function display_error_message( $error_message ) { /* Display the error message */ echo $error_message; /* Exit the application */ exit(); } /* -------------------------------------------------------------------- */ /* Check if the configuration file does …

10
ทำไมพวกเราส่วนใหญ่จึงใช้ 'i' เป็นตัวแปรตัวนับลูป
มีใครคิดบ้างไหมว่าทำไมเราหลายคนจึงทำซ้ำรูปแบบเดียวกันนี้โดยใช้ชื่อตัวแปรเดียวกัน for (int i = 0; i < foo; i++) { // ... } ดูเหมือนว่ารหัสที่สุดที่ผมเคยมองที่เคยใช้i, j, kและอื่น ๆ เป็นตัวแปรซ้ำ ฉันคิดว่าฉันเลือกมันมาจากที่ไหนสักแห่ง แต่ฉันสงสัยว่าทำไมสิ่งนี้ถึงแพร่หลายมากในการพัฒนาซอฟต์แวร์ มันเป็นสิ่งที่เราทุกคนหยิบขึ้นมาจาก C หรืออะไรทำนองนั้น? แค่คันที่ฉันมีอยู่พักหนึ่งที่หลังศีรษะ

19
ฟังก์ชั่นสั้นเกินไปหรือไม่
เมื่อใดก็ตามที่ฉันพบว่าตัวเองเขียนตรรกะเดียวกันมากกว่าหนึ่งครั้งฉันมักจะติดมันในฟังก์ชั่นดังนั้นมีเพียงที่เดียวในแอปพลิเคชันของฉันฉันต้องรักษาตรรกะนั้น ผลข้างเคียงคือบางครั้งฉันก็จบลงด้วยฟังก์ชั่นหนึ่งหรือสองบรรทัดเช่น: function conditionMet(){ return x == condition; } หรือ function runCallback(callback){ if($.isFunction(callback)) callback(); } นี่มันขี้เกียจหรือเป็นการฝึกที่ไม่ดีเหรอ? ฉันแค่ถามเพราะสิ่งนี้ส่งผลให้มีการเรียกใช้ฟังก์ชันจำนวนมากขึ้นสำหรับตรรกะชิ้นเล็ก ๆ

4
คำสั่งห้ามของ `long 'สมเหตุสมผลหรือไม่?
ในปัจจุบันข้ามแพลตฟอร์ม C ++ (หรือ C) โลกเรามี : Data model | short | int | long | long long | pointers/size_t | Sample operating systems ... LLP64/IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64) LP64/I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, …

6
วิธีการเทียบกับฟังก์ชั่นและขั้นตอน
คำถามง่าย ๆ แต่บ่อยครั้งที่ฉันได้ยินคำศัพท์สามคำที่นิยามด้วยความดุร้ายเช่นนี้ คำจำกัดความ "ถูกต้อง" ของ "ขั้นตอน", "วิธีการ", "ฟังก์ชั่น", "รูทีนย่อย" ฯลฯ คืออะไร?


16
ประโยชน์ของการไม่ใช้สัญกรณ์ฮังการีคืออะไร
หนึ่งในสิ่งที่ฉันต่อสู้คือไม่ได้ใช้สัญกรณ์ฮังการี ฉันไม่ต้องการที่จะไปที่คำนิยามตัวแปรเพียงเพื่อดูว่ามันคืออะไร เมื่อโปรเจ็กต์ขยายขอบเขตมันก็ดีที่สามารถดูตัวแปรนำหน้าด้วย 'บูล' และรู้ว่ามันกำลังมองหาจริง / เท็จแทนที่จะเป็นค่า0/1 ฉันทำงานหนักมากใน SQL Server ฉันเติมคำนำหน้ากระบวนงานที่เก็บไว้ด้วย 'sp' และตารางของฉันด้วย 'tbl' ไม่ต้องพูดถึงตัวแปรทั้งหมดของฉันในฐานข้อมูลตามลำดับ ฉันเห็นทุกที่ที่ไม่มีใครต้องการใช้สัญกรณ์ฮังการีถึงจุดที่พวกเขาหลีกเลี่ยง คำถามของฉันคืออะไรประโยชน์ของการไม่ใช้สัญกรณ์ฮังการีและทำไมนักพัฒนาส่วนใหญ่จึงหลีกเลี่ยงปัญหาเช่นภัยพิบัติ

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

20
การลดจำนวนบรรทัดในโค้ดมีความสำคัญอย่างไร
ฉันเป็นนักพัฒนาซอฟต์แวร์ที่ทำงานกับ J2SE (core java) บ่อยครั้งในระหว่างการตรวจสอบรหัสของเราเราถูกขอให้ลดจำนวนบรรทัดในรหัสของเรา มันไม่เกี่ยวกับการลบรหัสที่ซ้ำซ้อนมันเกี่ยวกับการติดตามสไตล์ที่เน้นการทำสิ่งเดียวกันโดยมีบรรทัดน้อยลงในรหัสในขณะที่ฉันเชื่อว่าการมีความชัดเจนในโค้ดแม้ว่ามันจะหมายถึงการเพิ่มจำนวนบรรทัด คุณคิดว่าเป็นวิธีที่ถูกต้องในการทำสิ่งต่าง ๆ ? หาก LOC (บรรทัดของรหัส) มีจำนวนน้อยจะมีผลกับรหัสอย่างไร หาก LOC เป็นจำนวนที่มากกว่าจะมีผลกับรหัสอย่างไร ตัวอย่างจากเว็บไซต์: "javaranch" - public static void happyBirthday(int age) { if ((age == 16) || (age == 21) || ((age > 21) && (((age % 10) == 0) || ((age % 25) == 0)))) { …

6
คำพูดเดี่ยวเทียบกับเครื่องหมายคำพูดคู่ [ปิด]
ฉันเพิ่งเริ่มงานที่ฉันเขียน Python หลังจากมาจากพื้นหลัง Java และฉันสังเกตเห็นว่านักพัฒนารายอื่นมักจะพูดสตริงโดยใช้เครื่องหมายคำพูดเดี่ยว ( '') แทนที่จะเป็นเครื่องหมายคำพูดคู่ ( "") ตัวอย่างเช่น: line1 = 'This is how strings typically look.' line2 = "Not like this." มีเหตุผลใดที่นอกเหนือไปจากความชอบส่วนตัวหรือไม่? นี่เป็นวิธีที่เหมาะสมในการอ้างอิงสตริงหรือไม่ โดยเฉพาะสิ่งที่ฉันต้องการทราบคือหากมีมาตรฐานบางประเภทหรือวิธีปฏิบัติที่ดีที่สุดที่ยอมรับได้ซึ่งผลักดันรูปแบบการเข้ารหัสนี้

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