ส่วนของเว็บไซต์
ตัวเลือกของบรรณาธิการ:
- การตั้งค่า Shadow Defender
- ทำไมโปรเซสเซอร์ในคอมพิวเตอร์ของฉันถึงร้อนจัด?
- iPhone ไม่ค้นหาผู้ติดต่อผ่านการค้นหาใช่ไหม
- โหมด "เทอร์โบ" ในเบราว์เซอร์สมัยใหม่คืออะไร: Chrome, Yandex, Opera
- เทมเพลตที่ง่ายที่สุด เทมเพลต HTML อย่างง่าย Mamba - เทมเพลตหน้าเดียว
- วิธีการยืมเงินจาก MTS?
- การสร้างทางลัดบนเดสก์ท็อปสำหรับเพื่อนร่วมชั้น
- หากรองเท้าไม่พอดีกับ Aliexpress: การกระทำที่ถูกต้องในกรณีนี้ ผลิตภัณฑ์ Aliexpress มีขนาดที่เหมาะสม
- ข้อพิพาทใน AliExpress เข้าร่วมข้อพิพาทใน AliExpress
- 3 ฐานข้อมูลแบบกระจาย
การโฆษณา
ตัวอย่างโปรแกรม C พร้อมความคิดเห็น ตัวอย่างโปรแกรมภาษาซีอย่างง่าย |
แท็ก: โปรแกรมแรกในภาษาซี พื้นฐาน ศรีบ่อแลนด์. เกียร์รหัส C ศรี เอ็มบาร์กาเดโร. ซี เอ็มเอส วิชวล สตูดิโอ ซี เอ็ม เอส เอ็กซ์เพรส การเขียนโปรแกรม C แรกของเราขั้นแรกคุณต้องติดตั้งซอฟต์แวร์ โดยหลักการแล้ว ไม่สำคัญว่าคุณจะใช้ซอฟต์แวร์อะไร เช่นเดียวกับระบบปฏิบัติการที่ไม่สำคัญ แต่ตลอดหลักสูตร ผมจะยกตัวอย่างการใช้ MS Visula Studio 2012 Express Edition Visual Studio 2012 Express Edition ให้บริการฟรีและเพียงพอที่จะศึกษาทั้งหลักสูตร นอกจากนี้ ตามที่แสดงในทางปฏิบัติแล้ว รหัสมีความเข้มงวดมากขึ้น และให้คำอธิบายข้อผิดพลาดและคำเตือนที่สมบูรณ์ยิ่งขึ้น เมื่อเรียนภาษา คุณสามารถใช้ Borland (หรือที่เรียกว่า CodeGEAR หรือ Embarcadero เป็นต้น) Dev Cpp, MinGW หรือ gcc หรืออะไรก็ได้ที่คุณต้องการ ตัวอย่างสำหรับ MS Visual Studio1. เปิด IDE ไปที่ File | สร้างโครงการ... 2. เลือกแอปพลิเคชันคอนโซลและตั้งชื่อ ในกรณีนี้คือ first_program 4. ทำเครื่องหมายในช่อง "โครงการว่าง" 5. หลังจากนั้นเราจะได้โครงสร้างโครงการที่ว่างเปล่า เพิ่มองค์ประกอบใหม่: คลิกขวาที่โฟลเดอร์ เพิ่มไฟล์ cpp ใหม่ แต่บันทึกเป็นนามสกุล .c ผมตั้งชื่อไฟล์ว่า main.c. ทุกอย่างพร้อมแล้วก็สามารถเขียนโปรแกรมได้เลย ขั้นตอนสำหรับแพลตฟอร์มอื่นๆ บอร์แลนด์ฉันติดตั้ง Code Gear C++ Builder 2007 เท่านั้น แต่ในรุ่นอื่นๆ (และรุ่นก่อนหน้า) ทุกอย่างก็เหมือนเดิม 1. มาสร้างโปรเจ็กต์ใหม่ File | ใหม่ | อื่น... 2. เพิ่มแอปพลิเคชันคอนโซล 3. เลือกภาษา C 4. เราได้รับโครงการที่เสร็จสิ้นแล้ว คุณต้องบันทึกด้วยชื่อที่คุณต้องการ จนกว่าจะถึงตอนนั้น ตัวโปรเจ็กต์และไฟล์ทั้งหมดจะมีชื่อเริ่มต้น คุณสามารถลบสิ่งที่ Borland เขียนไว้ในข้อความของโปรแกรมได้ตามค่าเริ่มต้น ตัวอย่างสำหรับ cc/gcc สำหรับเทอร์มินัลเปิดโปรแกรมแก้ไขข้อความที่คุณชื่นชอบและคัดลอกโค้ดโปรแกรมไปที่นั่น #รวม หากคุณบันทึกโปรแกรมไว้ในไฟล์ชื่อ hello.c ให้พิมพ์คำสั่งในเทอร์มินัล Cc hello.c -o สวัสดี Gcc สวัสดี -o สวัสดี ในกรณีนี้คุณต้องอยู่ในโฟลเดอร์ของโปรแกรมอย่างแน่นอน gcc จะสร้างไฟล์ปฏิบัติการชื่อ hello เรียกใช้แล้วมันจะส่งออก Hello, World! บางครั้งอาจมีปัญหากับสิทธิ์การเข้าถึง ตรวจสอบว่าคุณมีไฟล์ปฏิบัติการ หรือไม่ก็ให้สิทธิ์ตัวเองในการเรียกใช้ไฟล์นั้น Chmod 760 สวัสดี หากคุณมีหลายไฟล์ คุณจะต้องแสดงรายการชื่อของไฟล์ทั้งหมดตามลำดับ ตัวอย่างเช่น หากคุณมีไฟล์อีกสองไฟล์ simple.h และ simple.c คุณจะต้องเขียน Cc hello.c simple.c -o สวัสดี รหัสโปรแกรมเป็นเรื่องปกติในโปรแกรมแรกที่จะแสดง Hello, World! ไปที่หน้าจอ #รวม รันโปรแกรม (Run | Run หรือ F9 สำหรับ Borland, Build | Build Solution หรือ F5 สำหรับ MS) โปรแกรมจะแสดง Hello, World! และจะรอให้คุณกดปุ่มใดก็ได้ ลองดูโค้ดโดยละเอียดเพิ่มเติม สองบรรทัดแรก #รวม คำสั่งไปยังคอมไพเลอร์สำหรับการเชื่อมต่อไลบรารีมาตรฐาน stdio (เอาต์พุตอินพุตมาตรฐาน) และ conio (เอาต์พุตอินพุตคอนโซล) ส่วนขยาย .h ระบุว่าเป็นไฟล์ส่วนหัว คอมไพลเลอร์จะคัดลอกโค้ดของไลบรารี conio และ stdio และทำให้สามารถใช้ฟังก์ชันที่อธิบายไว้ในไลบรารีเหล่านี้ได้ Int หลัก (int argc, ถ่าน * argv) นี่คือหน้าที่หลัก มันแตกต่างจากฟังก์ชั่นอื่น ๆ ที่คุณสามารถกำหนดได้ตรงที่เป็นจุดเริ่มต้น - การทำงานของโปรแกรมเริ่มต้นจากมัน ฟังก์ชันหลักมีสองพารามิเตอร์ - จำนวนพารามิเตอร์ argc และอาร์เรย์ของพารามิเตอร์ที่ส่งผ่าน argv อาร์กิวเมนต์เหล่านี้เป็นทางเลือก ดังนั้นคุณไม่จำเป็นต้องเขียนอาร์กิวเมนต์เหล่านี้ เราจะพูดถึงการใช้งานในภายหลัง #รวม _getch() รอการกดปุ่ม 3. เพิ่มไปที่ simple.h เป็นโมฆะทำบางสิ่งบางอย่าง (); #เอ็นดิฟ เพิ่มลงใน .c แบบง่าย #include "simple.h" เป็นโมฆะ doSomething() ( printf("ใช้งานได้!"); _getch(); ) ถัดไปใน main.c จากนักแปล. ฉันค้นหาแนวทางที่ง่ายและใช้งานได้ง่ายในการเขียนโปรแกรมด้วย C++ บนอินเทอร์เน็ต ฉันชอบตัวเลือกหนึ่งและฉันตัดสินใจแปลและเผยแพร่ หากผู้ใช้ Habra ตอบรับหัวข้อนี้เป็นอย่างดี ฉันสามารถแปลเอกสารอื่นๆ ที่เกี่ยวข้องได้ รวมถึงแนวทางในการเขียนโค้ดจากบริษัทอื่น1 บทนำเอกสารนี้มีแนวทางในการเขียนโปรแกรมด้วยภาษา C++ สภาพแวดล้อมการพัฒนาที่มีอยู่สามารถปรับปรุงความสามารถในการอ่านโค้ดได้โดยการแสดงตัวแก้ไขการเข้าถึง การเน้นโค้ด การจัดรูปแบบอัตโนมัติ และอื่นๆ แต่โปรแกรมเมอร์ไม่ควรพึ่งพาเครื่องมือเหล่านี้ ซอร์สโค้ดควรได้รับการพิจารณานอกเหนือจากสภาพแวดล้อมการพัฒนาที่ใช้ และควรเขียนเพื่อเพิ่มความสามารถในการอ่านสูงสุดโดยไม่คำนึงถึงสภาพแวดล้อม 1.1 รูปแบบเอกสารคำแนะนำจะถูกจัดกลุ่มตามหัวข้อและหมายเลขเพื่อให้สามารถอ้างอิงได้ในระหว่างการตรวจสอบโค้ด คำแนะนำแบ่งออกเป็นลำดับความสำคัญ: บังคับ, แนะนำอย่างยิ่ง และทั่วไป 1. อนุญาตให้มีการละเมิดคำแนะนำได้หากปรับปรุงให้อ่านง่ายขึ้น2. กฎสามารถถูกละเมิดได้หากมีการคัดค้านเป็นการส่วนตัว นี่เป็นความพยายามที่จะสร้างชุดแนวทางทั่วไปโดยไม่กำหนดสไตล์เดียวสำหรับทุกคน โปรแกรมเมอร์ที่มีประสบการณ์มักจะปรับแต่งสไตล์ให้เหมาะกับตัวเองอยู่แล้ว การมีรายการแนวทางเช่นนี้อยู่ในมือ (หรืออย่างน้อยก็กำหนดให้พวกเขาดู) มีแนวโน้มที่จะทำให้ผู้คนคิดเกี่ยวกับรูปแบบการเขียนโปรแกรมของตนและประเมินแนวทางปฏิบัติในการเขียนโปรแกรมของตนเอง ในทางกลับกัน โปรแกรมเมอร์มือใหม่และไม่มีประสบการณ์มักจะใช้แนวทางสไตล์เพื่อทำความเข้าใจคำศัพท์เฉพาะทางการเขียนโปรแกรมให้ดียิ่งขึ้น 3 แบบแผนการตั้งชื่อ3.1 แบบแผนการตั้งชื่อทั่วไป3. ชื่อที่แสดงถึงประเภทจะต้องเขียนด้วยตัวพิมพ์ผสมโดยขึ้นต้นด้วยตัวพิมพ์ใหญ่ไลน์บัญชีออมทรัพย์ 4. ชื่อตัวแปรต้องเขียนด้วยตัวพิมพ์ผสมโดยเริ่มจากตัวพิมพ์เล็ก ไลน์บัญชีออมทรัพย์ 5. ค่าคงที่ที่มีชื่อ (รวมถึงค่าการแจกแจง) จะต้องเขียนด้วยตัวพิมพ์ใหญ่โดยมีขีดล่างเป็นตัวคั่น MAX_ITERATIONS, COLOR_RED, PI Int getMaxIterations() // NOT: MAX_ITERATIONS = 25 ( return 25; ) 6. ชื่อวิธีการและฟังก์ชันต้องเป็นคำกริยา เขียนด้วยตัวพิมพ์ผสม และขึ้นต้นด้วยตัวพิมพ์เล็ก GetName(), คำนวณTotalWidth() 7. ชื่อเนมสเปซควรเขียนด้วยตัวพิมพ์เล็ก รุ่น::analyzer, io::iomanager, ทั่วไป::math::geometry 8. ชื่อประเภทในเทมเพลตควรตั้งชื่อด้วยตัวพิมพ์ใหญ่ตัวเดียว แม่แบบ 9. คำย่อและคำย่อในชื่อจะต้องเขียนด้วยตัวพิมพ์เล็ก 10. ตัวแปรโกลบอลควรใช้กับตัวดำเนินการแก้ไขขอบเขต (::) เสมอ ::mainWindow.open(), ::applicationContext.getName() 11. สมาชิกชั้นเรียนที่มีตัวแก้ไขส่วนตัว ควรกำหนดส่วนต่อท้ายขีดล่าง คลาส SomeClass (ส่วนตัว: int length_; ) ผลกระทบเพิ่มเติมของส่วนต่อท้ายขีดล่างคือการแก้ปัญหาการตั้งชื่อในวิธีการตั้งค่าและตัวสร้าง: เป็นโมฆะ setDepth (ความลึก int) (deep_ = ความลึก; ) 12. ตัวแปรที่กำหนดเองควรได้รับชื่อเดียวกันกับประเภท โมฆะ setTopic (หัวข้อ * หัวข้อ) // NOT: โมฆะ setTopic (ค่าหัวข้อ *) // NOT: โมฆะ setTopic (หัวข้อ * aTopic) // NOT: โมฆะ setTopic (หัวข้อ * t) เป็นโมฆะเชื่อมต่อ (ฐานข้อมูล * ฐานข้อมูล) // ไม่ใช่ : เป็นโมฆะเชื่อมต่อ (ฐานข้อมูล * db) // ไม่ใช่: เป็นโมฆะเชื่อมต่อ (ฐานข้อมูล * oracleDB) ตัวแปรที่ไม่สามารถปรับได้สามารถตั้งชื่อตามวัตถุประสงค์และประเภท: จุดเริ่มต้นPoint, centerPoint; ชื่อล็อกอินชื่อ; 13. ชื่อทั้งหมดควรเขียนเป็นภาษาอังกฤษ 14. ตัวแปรที่มีขอบเขตใหญ่ควรเรียกว่าชื่อยาว และตัวแปรที่มีขอบเขตเล็กควรเรียกว่าชื่อสั้น ชื่อตัวแปรชั่วคราวที่ใช้จัดเก็บค่าชั่วคราวหรือดัชนีควรเก็บไว้ให้สั้นที่สุด โปรแกรมเมอร์ที่อ่านตัวแปรดังกล่าวควรจะสามารถสรุปได้ว่าค่าของพวกเขาไม่ได้ใช้เกินโค้ดสองสามบรรทัด โดยปกติแล้วสิ่งเหล่านี้จะเป็นตัวแปร, ฉัน, เจ, เค, ล, ม n (สำหรับจำนวนเต็ม) และด้วยค และง (สำหรับสัญลักษณ์) 15. ชื่ออ็อบเจ็กต์ไม่ได้ระบุไว้อย่างชัดเจน คุณควรหลีกเลี่ยงการระบุชื่ออ็อบเจ็กต์ในชื่อเมธอด (ขาดข้อ 16 - หมายเหตุผู้แปล)3.2 กฎการตั้งชื่อพิเศษ 17. คำพูด รับ/ตั้งค่าต้องใช้ทุกที่ที่มีการเข้าถึงแอตทริบิวต์โดยตรง แนวปฏิบัติทั่วไปในชุมชนนักพัฒนา C++ ใน Java แบบแผนนี้ได้กลายเป็นมาตรฐานไม่มากก็น้อย 18. คำพูด คำนวณ สามารถใช้ในวิธีการคำนวณบางอย่างได้ ทำให้ผู้อ่านทราบทันทีว่าการดำเนินการนี้ใช้เวลานาน 19. คำพูด หา สามารถใช้ในวิธีการที่ทำการค้นหาใด ๆ ให้ผู้อ่านทราบทันทีว่านี่เป็นวิธีการค้นหาแบบง่าย ๆ ที่ไม่ต้องใช้การคำนวณมากนัก 20. คำพูด เริ่มต้น สามารถใช้เมื่อมีการเตรียมใช้งานวัตถุหรือเอนทิตี จ. ควรหลีกเลี่ยงตัวย่อ init 21. ตัวแปรที่เป็นตัวแทนของ GUI ควรได้รับการต่อท้ายที่สอดคล้องกับชื่อประเภทส่วนประกอบ 22. พหูพจน์ควรใช้เพื่อแสดงชุด (คอลเลกชัน) ของวัตถุ เวกเตอร์ 23. คำนำหน้า n ควรใช้เพื่อแสดงจำนวนของวัตถุ NPoints, nLines 24. คำต่อท้ายเลขที่ ควรใช้เพื่อระบุหมายเลขเอนทิตี เลขที่โต๊ะ เลขที่พนักงาน อีกทางเลือกที่ดีคือคำนำหน้า ชื่อตัวแปรชั่วคราวที่ใช้จัดเก็บค่าชั่วคราวหรือดัชนีควรเก็บไว้ให้สั้นที่สุด โปรแกรมเมอร์ที่อ่านตัวแปรดังกล่าวควรจะสามารถสรุปได้ว่าค่าของพวกเขาไม่ได้ใช้เกินโค้ดสองสามบรรทัด โดยปกติแล้วสิ่งเหล่านี้จะเป็นตัวแปร: iTable, iEmployee ทำให้ชัดเจนว่านี่คือตัววนซ้ำที่มีชื่อ 25. ควรตั้งชื่อตัวแปรตัววนซ้ำฉัน เจ เค ฯลฯ สำหรับ (int i = 0; i< nTables); i++) {
:
}
for (vector ตัวแปรที่มีชื่อ ฉัน, เจฯลฯ ขอแนะนำให้ใช้เฉพาะในลูปที่ซ้อนกันเท่านั้น 26. คำนำหน้าเป็น ควรใช้สำหรับตัวแปรและวิธีการบูลีนเท่านั้น IsSet, isVisible, isFound, isFound, isOpen การใช้คำนำหน้านี้จะกำจัดชื่อเช่น สถานะหรือ ธง. เป็นสถานะหรือ isFlagไม่พอดีและโปรแกรมเมอร์ถูกบังคับให้เลือกชื่อที่มีความหมายมากกว่านี้ ในบางสถานการณ์คำนำหน้า เป็นแทนที่ด้วยอันอื่นจะดีกว่า: มี, สามารถหรือ ควร: บูล hasLicense(); บูลสามารถประเมิน (); บูล shouldSort(); รับ/ตั้งค่า, เพิ่ม/ลบ, สร้าง/ทำลาย, เริ่ม/หยุด, แทรก/ลบ, เพิ่ม/ลด, เก่า/ใหม่, เริ่มต้น/สิ้นสุด, แรก/สุดท้าย, ขึ้น/ลง, ต่ำสุด/สูงสุด, ถัดไป/ก่อนหน้า, เก่า/ ใหม่, เปิด/ปิด, แสดง/ซ่อน, ระงับ/ดำเนินการต่อ ฯลฯ ลดความซับซ้อนด้วยความสมมาตร คำนวณเฉลี่ย(); // ไม่ใช่: compAvg(); ประเภทที่สองคือคำเฉพาะเจาะจงในพื้นที่ใดพื้นที่หนึ่ง ซึ่งรู้จักโดยใช้ตัวย่อ/ตัวย่อ ควรเขียนให้สั้นลง ไม่เคยเขียน: HypertextMarkupLanguage แทน html CentralProcessingUnit แทน cpu PriceEarningRatio แทน pe เป็นต้น 29. ควรหลีกเลี่ยงการตั้งชื่อพอยน์เตอร์เพิ่มเติม เส้น* เส้น; // ไม่แนะนำ: Line* pLine; ตัวแปรจำนวนมากใน C/C++ เป็นตัวชี้ เฉพาะเมื่อประเภทของวัตถุ C++ มีความสำคัญอย่างยิ่งเท่านั้นจึงควรสะท้อนถึงชื่อนั้น 30. คุณไม่สามารถตั้งชื่อตัวแปรบูลีน (เชิงตรรกะ) ที่มีการปฏิเสธได้ !ไม่พบ 31. ค่าคงที่ในการแจกแจงสามารถมีคำนำหน้าได้ - ชื่อสามัญของประเภท ข้อมูลนี้ให้ข้อมูลเพิ่มเติมเกี่ยวกับตำแหน่งของการประกาศ ค่าคงที่ที่อธิบายในการแจงนับหนึ่ง และแนวคิดที่ค่าคงที่เป็นตัวแทน อีกวิธีหนึ่งคือการอ้างอิงค่าคงที่ตามประเภททั่วไป: Color::RED, Airline::AIR_FRANCE ฯลฯ โปรดทราบว่าชื่อ enum มักจะเขียนในรูปเอกพจน์ เช่น enum Color (...) ชื่อพหูพจน์ดูดีเมื่อประกาศ แต่ใช้งานจริงได้ไม่ดีนัก 32. คลาสข้อยกเว้นควรได้รับการต่อท้าย . ข้อยกเว้น คลาสข้อยกเว้นไม่ได้เป็นส่วนหนึ่งของสถาปัตยกรรมโปรแกรมจริงๆ และการตั้งชื่อคลาสด้วยวิธีนี้จะแยกคลาสออกจากคลาสอื่น 33. ควรตั้งชื่อฟังก์ชัน (วิธีการที่ส่งคืนค่า) ขึ้นอยู่กับสิ่งที่พวกเขาส่งคืน และขั้นตอนควรตั้งชื่อตามสิ่งที่พวกเขาดำเนินการ (วิธีการเป็นโมฆะ) ปรับปรุงความสามารถในการอ่าน การตั้งชื่อนี้ทำให้ชัดเจนว่าวิธีการนี้ทำอะไรได้บ้าง และไม่ได้ทำอะไร และยังกำจัดโค้ดของผลข้างเคียงที่อาจเกิดขึ้นอีกด้วย4 ไฟล์4.1 ไฟล์ต้นฉบับ 34. ไฟล์ส่วนหัว C++ ควรได้รับนามสกุล .ชม(ที่ต้องการ) หรือ .hp- ไฟล์ซอร์สโค้ดอาจมีนามสกุล .c++(ที่แนะนำ) , .ซี .ซีซีหรือ ..ซีพีพี ส่วนขยายเหล่านี้เป็นส่วนขยายที่ได้รับอนุมัติโดยมาตรฐาน C++ 35. คลาสควรได้รับการประกาศในไฟล์ส่วนหัวและกำหนด (นำไปใช้) ในไฟล์ซอร์สโค้ด ชื่อไฟล์จะเหมือนกับชื่อคลาส ช่วยให้ค้นหาไฟล์ที่เกี่ยวข้องกับคลาสได้ง่ายขึ้น ข้อยกเว้นที่ชัดเจนคือคลาสเทมเพลต ซึ่งจะต้องประกาศและกำหนดไว้ในไฟล์ส่วนหัว 36. คำจำกัดความทั้งหมดจะต้องอยู่ในไฟล์ซอร์สโค้ด คลาส MyClass ( สาธารณะ: int getValue () (คืนค่า _;) // ไม่! ... ส่วนตัว: int value_; ) 37. เนื้อหาไฟล์ไม่ควรเกิน 80 คอลัมน์ 80 คอลัมน์เป็นความละเอียดที่ใช้กันอย่างแพร่หลายสำหรับบรรณาธิการ เทอร์มินัลอีมูเลเตอร์ เครื่องพิมพ์ และดีบักเกอร์ ไฟล์จะถูกโอนระหว่างบุคคล ดังนั้นคุณจึงต้องปฏิบัติตามข้อจำกัดเหล่านี้ การขึ้นบรรทัดใหม่ที่เหมาะสมจะช่วยเพิ่มความสามารถในการอ่านเมื่อทำงานร่วมกันในซอร์สโค้ด 38. ไม่สามารถใช้อักขระพิเศษ (เช่น TAB) และตัวแบ่งหน้าได้ สัญลักษณ์ดังกล่าวทำให้เกิดปัญหาหลายประการกับตัวแก้ไข เทอร์มินัลอีมูเลเตอร์ และดีบักเกอร์ที่ใช้ในโปรแกรมการพัฒนาร่วมกันและสภาพแวดล้อมข้ามแพลตฟอร์ม 39. ความไม่สมบูรณ์ของเส้นขาดควรชัดเจน ผลรวมทั้งหมด = a + b + c + d + e; ฟังก์ชั่น (param1, param2, param3); setText("แยกบรรทัดยาว" "ออกเป็นสองส่วน"); สำหรับ (int tableNo = 0; tableNo< nTables;
tableNo += tableStep) {
...
}
โดยทั่วไป:
4.2 การรวมไฟล์40. ไฟล์ส่วนหัวจะต้องมีการป้องกันการซ้อน#ifndef COM_COMPANY_MODULE_CLASSNAME_H #กำหนด COM_COMPANY_MODULE_CLASSNAME_H: #endif // COM_COMPANY_MODULE_CLASSNAME_H 41. คำสั่งการรวมควรได้รับการจัดเรียง (โดยสถานที่ในลำดับชั้นของระบบ ระดับล่าง - ตำแหน่งที่สูงกว่า) และจัดกลุ่ม เว้นบรรทัดว่างระหว่างกลุ่ม #รวม 42. ควรวางคำสั่งรวมไว้ที่จุดเริ่มต้นของไฟล์เท่านั้น การปฏิบัติทั่วไป หลีกเลี่ยงผลข้างเคียงที่ไม่พึงประสงค์ซึ่งการ "ซ่อน" รวมไว้ตรงกลางไฟล์ซอร์สโค้ดอาจทำให้เกิดได้ 5 สำนวน5.1 ประเภท43. ประเภทท้องถิ่นที่ใช้ในไฟล์เดียวจะต้องประกาศในไฟล์นั้นเท่านั้นปรับปรุงการซ่อนข้อมูล 44. ส่วนชั้นเรียนสาธารณะ , ได้รับการคุ้มครอง และส่วนตัว จะต้องเรียงลำดับ ต้องระบุทุกส่วนอย่างชัดเจน ก่อนอื่นควรมีส่วน สาธารณะซึ่งจะช่วยผู้ที่ต้องการทำความคุ้นเคยกับชั้นเรียนจากส่วนการอ่าน ได้รับการคุ้มครอง/เป็นส่วนตัว. 45. การหล่อประเภทต้องชัดเจน อย่าพึ่งพาการคัดเลือกประเภทโดยนัย FloatValue = static_cast 5.2 ตัวแปร46. ตัวแปรควรเริ่มต้น ณ ตำแหน่งที่ประกาศไว้เพื่อให้แน่ใจว่าตัวแปรจะสามารถใช้งานได้ตลอดเวลา แต่บางครั้งก็ทำไม่ได้: int x, y, z; ในกรณีเหล่านี้ จะเป็นการดีกว่าถ้าปล่อยตัวแปรไว้โดยไม่กำหนดค่าเริ่มต้น แทนที่จะกำหนดค่าใดๆ ให้กับตัวแปรเหล่านั้น 47. ตัวแปรไม่ควรมีความหมายซ้ำซ้อน ปรับปรุงความสามารถในการอ่านโดยให้แน่ใจว่าแนวคิดทั้งหมดที่นำเสนอมีความสอดคล้องกัน ลดโอกาสที่จะเกิดข้อผิดพลาดอันเนื่องมาจากผลข้างเคียง 48. ควรหลีกเลี่ยงการใช้ตัวแปรร่วม ไม่มีเหตุผลที่จะใช้ตัวแปรทั่วโลกใน C ++ (อันที่จริงก็มี - หมายเหตุผู้แปล) เช่นเดียวกับฟังก์ชันโกลบอลและตัวแปร (คงที่) ที่มีขอบเขตเป็นไฟล์ทั้งหมด 49. คุณไม่ควรประกาศตัวแปรคลาสเป็น . สาธารณะ ตัวแปรเหล่านี้ละเมิดหลักการของการซ่อนและการห่อหุ้มข้อมูล ให้ใช้ตัวแปรที่มีตัวแก้ไขแทนส่วนตัว และฟังก์ชันการเข้าถึงที่เกี่ยวข้อง ข้อยกเว้นคือคลาสที่ไม่มีพฤติกรรม ซึ่งเป็นโครงสร้างข้อมูลในทางปฏิบัติ (เทียบเท่ากับโครงสร้างภาษา C) ในกรณีนี้ ไม่มีประโยชน์ที่จะซ่อนตัวแปรเหล่านี้ โปรดทราบว่าโครงสร้างใน C++ จะยังคงอยู่เพื่อให้เข้ากันได้กับ C เท่านั้น การใช้งานทำให้การอ่านโค้ดลดลง ใช้คลาสแทนโครงสร้าง (ขาดข้อ 50 - หมายเหตุผู้แปล) ตัวแปรที่เป็นตัวชี้หรือการอ้างอิงอ้างอิงถึงประเภทของตัวแปรมากกว่าชื่อ โปรแกรมเมอร์ภาษา C มักจะใช้แนวทางที่แตกต่างออกไป แต่ใน C++ จะดีกว่าหากปฏิบัติตามคำแนะนำนี้ 53. ควรหลีกเลี่ยงการเปรียบเทียบตัวแปรบูลีน (ลอจิคัล) และพอยน์เตอร์กับศูนย์โดยปริยาย ถ้า (nLines != 0) // ไม่แนะนำ: if (nLines) if (value != 0.0) // ไม่แนะนำ: if (value) มันจะสมเหตุสมผลที่จะถือว่าพอยน์เตอร์ไม่ควรเปรียบเทียบโดยปริยายกับศูนย์ เช่น if (line == 0) แทนที่จะเป็น if (line) อย่างหลังเป็นวิธีปฏิบัติทั่วไปใน C/C++ ดังนั้นจึงสามารถใช้ได้เช่นกัน 54. ควรประกาศตัวแปรในขอบเขตที่เล็กที่สุดเท่าที่จะเป็นไปได้ ทำให้ง่ายต่อการควบคุมผลกระทบของตัวแปรและผลข้างเคียง 5.3 รอบ55. คุณไม่สามารถรวมนิพจน์ในโครงสร้าง for() ที่ไม่เกี่ยวข้องกับการควบคุมลูปผลรวม = 0; // ไม่: สำหรับ (i = 0, ผลรวม = 0; i< 100; i++)
for (i = 0; i < 100; i++) sum += value[i];
sum += value[i];
56. ตัวแปรที่เกี่ยวข้องกับลูปควรเริ่มต้นทันทีก่อนหน้านั้น 57. สามารถหลีกเลี่ยงการวนซ้ำ Do- While ได้ ลูปดังกล่าวอ่านได้ยากเนื่องจากมีการอธิบายสภาวะตามเนื้อหา ผู้อ่านจะต้องดูวงจรทั้งหมดเพื่อทำความเข้าใจวิธีการทำงาน การวนซ้ำ Do- While นั้นไม่จำเป็นเลย การวนซ้ำใดๆ ดังกล่าวสามารถถูกแทนที่ด้วย while หรือ for loop โครงสร้างที่ใช้น้อยลงช่วยให้อ่านง่ายขึ้น 58.หลีกเลี่ยงการใช้หยุดพัก และดำเนินการต่อ ในรอบ ควรใช้สำนวนดังกล่าวเมื่อช่วยให้อ่านง่ายขึ้นเท่านั้น (ขาดข้อ 59 - หมายเหตุผู้แปล) 60. สำหรับการวนซ้ำไม่สิ้นสุด คุณควรใช้แบบฟอร์มในขณะที่ (จริง) . ในขณะที่ (จริง) ( : ) สำหรับ (;;) ( // NO! : ) ในขณะที่ (1) ( // NO! : ) 5.4 เงื่อนไข61. หลีกเลี่ยงบทกลอนที่ซับซ้อนอย่างเคร่งครัด ให้ป้อนตัวแปรบูลีนแทนบูล isFinished = (องค์ประกอบหมายเลข< 0) || (elementNo >องค์ประกอบสูงสุด); บูล isRepeatedEntry = elementNo == LastElement; ถ้า (isFinished || isRepeatedEntry) ( : ) // NOT: if ((elementNo< 0) || (elementNo >องค์ประกอบสูงสุด)|| การตั้งค่าตัวแปรบูลีนสำหรับนิพจน์จะทำให้โปรแกรมจัดทำเอกสารด้วยตนเอง การออกแบบจะง่ายต่อการอ่าน ดีบัก และบำรุงรักษา 62. ส่วนที่คาดหวังควรอยู่ในส่วนนั้น ถ้าข้อยกเว้น - บางส่วน . อื่น 63. เงื่อนไขควรแยกบรรทัด. 64. ควรหลีกเลี่ยงการแสดงออกในข้อกำหนดและเงื่อนไขโดยเคร่งครัด ไฟล์* fileHandle = open(ชื่อไฟล์, "w"); if (!fileHandle) ( : ) // NOT: if (!(fileHandle = open(fileName, "w"))) ( : ) 5.5 เบ็ดเตล็ด65. ควรหลีกเลี่ยงตัวเลข “Magic” ในโค้ด ควรประกาศตัวเลขอื่นที่ไม่ใช่ 0 หรือ 1 เป็นค่าคงที่ที่มีชื่อหากตัวเลขนั้นไม่มีความหมายที่ชัดเจน ความสามารถในการอ่านจะดีขึ้นโดยการแนะนำค่าคงที่ที่มีชื่อ อีกแนวทางหนึ่งคือการสร้างวิธีที่สามารถใช้เพื่อเข้าถึงค่าคงที่ได้ 66. ค่าคงที่จุดลอยตัวควรเขียนด้วยจุดทศนิยมและอย่างน้อยหนึ่งหลักหลังจุดทศนิยม ผลรวมสองเท่า = 0.0; // ไม่แนะนำ: ผลรวมสองเท่า = 0; ความเร็วสองเท่า = 3.0e8; // ไม่แนะนำ: ความเร็วสองเท่า = 3e8; ผลรวมสองเท่า; : ผลรวม = (ก + ข) * 10.0; และ (ดังที่แสดงในตัวอย่างสุดท้ายด้านบน) จะมีการเน้นที่ประเภทของตัวแปร (ผลรวม) ในตำแหน่งที่ไม่ชัดเจน 67. ค่าคงที่จุดลอยตัวควรเขียนด้วยตัวเลขอย่างน้อยหนึ่งหลักก่อนจุดทศนิยมเสมอ ระบบตัวเลขและสำนวน C++ มาจากคณิตศาสตร์ และคุณควรยึดถือสัญกรณ์แบบดั้งเดิมทุกครั้งที่เป็นไปได้ เหนือสิ่งอื่นใด 0.5 สามารถอ่านได้มากกว่า .5 (ตัวเลือกแรกต้องไม่สับสนกับหมายเลข 5) 68. ฟังก์ชั่นจะต้องระบุประเภทค่าตอบแทน Int getValue() // ไม่ใช่: getValue() ( : ) 69. ไม่ควรใช้ข้ามไป . ข้อความนี้ละเมิดหลักการของการเขียนโปรแกรมแบบมีโครงสร้าง ควรใช้ในกรณีที่หายากมากเท่านั้น (เช่น เพื่อออกจากลูปที่ซ้อนกันลึก) เมื่อตัวเลือกอื่นจะทำให้ความสามารถในการอ่านลดลงอย่างเห็นได้ชัด 70. ควรใช้ "0" แทน "NULL" NULL เป็นส่วนหนึ่งของไลบรารีมาตรฐาน C และเลิกใช้แล้วในภาษา C++ 6 การออกแบบและความคิดเห็น6.1 การออกแบบ71. การเยื้องหลักควรเป็นช่องว่างสองช่องสำหรับ (i = 0; i< nElements; i++)
a[i] = 0;
72. บล็อกโค้ดควรได้รับการจัดรูปแบบตามตัวอย่างที่ 1 (แนะนำ) หรือตัวอย่างที่ 2 แต่ไม่ว่าในกรณีใดตามที่แสดงในตัวอย่างที่ 3 การจัดรูปแบบของฟังก์ชันและคลาสควรเป็นไปตามตัวอย่างที่ 2 ในขณะที่ (!เสร็จสิ้น) ( doSomething(); เสร็จสิ้น = moreToDo(); ) ในขณะที่ (!เสร็จสิ้น) ( doSomething(); เสร็จสิ้น = moreToDo(); ) ในขณะที่ (!เสร็จสิ้น) ( doSomething(); เสร็จสิ้น = moreToDo(); ) 73. การประกาศชั้นเรียน คลาส SomeClass: BaseClass สาธารณะ ( สาธารณะ: ... ป้องกัน: ... ส่วนตัว: ... ) 74. คำจำกัดความของวิธีการควรอยู่ในรูปแบบดังนี้: โมฆะ someMethod() ( ... ) 75. การก่อสร้างถ้า-อย่างอื่น ควรจัดรูปแบบดังนี้: If (เงื่อนไข) ( ประโยค; ) if (เงื่อนไข) ( ประโยค; ) else ( ประโยค; ) if (เงื่อนไข) ( ประโยค; ) else if (เงื่อนไข) ( ประโยค; ) else ( ประโยค; ) ถ้า (เงื่อนไข) ( คำสั่ง; ) อื่น ๆ ( คำสั่ง; ) 76. วงจรสำหรับ ควรจัดรูปแบบดังนี้: สำหรับ (การเริ่มต้น; เงื่อนไข; อัปเดต) ( คำสั่ง; ) 77. วงจรสำหรับ โดยมีเนื้อความว่างควรจัดรูปแบบดังนี้ สำหรับ (การเริ่มต้น; เงื่อนไข; อัปเดต) ; 78. วงจรในขณะที่ ควรจัดรูปแบบดังนี้: ในขณะที่ (เงื่อนไข) ( คำสั่ง; ) 79. วงจรทำในขณะที่ ควรจัดรูปแบบดังนี้: ทำ ( คำสั่ง; ) ในขณะที่ (เงื่อนไข); 80. การก่อสร้างสวิตช์ ควรจัดรูปแบบดังนี้: สวิตช์ (เงื่อนไข) ( กรณี ABC: คำสั่ง; // ไม่มีกรณี "break" DEF: คำสั่ง; แบ่ง; กรณี XYZ: คำสั่ง; แบ่ง; ค่าเริ่มต้น: คำสั่ง; แบ่ง; ) 81. การก่อสร้างลองจับ ควรจัดรูปแบบดังนี้: ลอง ( คำสั่ง; ) catch (ข้อยกเว้นและข้อยกเว้น) ( คำสั่ง; ) 82.หากออกแบบถ้า-อย่างอื่น มีเพียงนิพจน์เดียวในร่างกาย สามารถละเว้นเครื่องหมายปีกกาได้ ถ้า (เงื่อนไข) คำสั่ง; ในขณะที่ (เงื่อนไข) คำสั่ง; สำหรับ (การเริ่มต้น; เงื่อนไข; อัปเดต) คำสั่ง; 83. ประเภทการส่งคืนของฟังก์ชันสามารถอยู่เหนือชื่อของฟังก์ชันได้ เป็นโมฆะ MyClass::myMethod(เป็นโมฆะ) ( : ) 6.2 ช่องว่าง84.ตัวดำเนินการควรคั่นด้วยช่องว่าง ก = (ข + ค) * ง; // ไม่แนะนำ: a=(b+c)*d while (true) // ไม่แนะนำ: while(true) ( ... doSomething(a, b, c, d); // ไม่แนะนำ: doSomething (a ,b,c,d); กรณีที่ 100: // ไม่แนะนำ: กรณีที่ 100: สำหรับ (i = 0; i< 10; i++) { // НЕ РЕКОМЕНДУЕТСЯ: for(i=0;i<10;i++){
...
85. ชื่อเมธอดอาจตามด้วยการเว้นวรรคหากชื่ออื่นตามหลัง ทำอะไรบางอย่าง (ไฟล์ปัจจุบัน); อีกวิธีหนึ่งคือการระบุช่องว่างทันทีหลังวงเล็บเปิด ผู้ที่ใช้งานมักจะเว้นวรรคก่อนวงเล็บปิด: doSomething(currentFile); ซึ่งช่วยให้สามารถเน้นชื่อแต่ละชื่อได้ ช่องว่างก่อนวงเล็บปิดดูไม่เป็นธรรมชาติ แต่ถ้าไม่มี นิพจน์จะดูไม่สมมาตร (doSomething(currentFile);) 86. บล็อกลอจิคัลในโค้ดควรคั่นด้วยบรรทัดว่าง Matrix4x4 matrix = ใหม่ Matrix4x4(); cosAngle สองเท่า = Math.cos (มุม); sinAngle สองเท่า = Math.sin (มุม); matrix.setElement(1, 1, cosAngle); matrix.setElement(1, 2, sinAngle); matrix.setElement(2, 1, -sinAngle); matrix.setElement(2, 2, cosAngle); คูณ(เมทริกซ์); สิ่งนี้ทำให้พวกเขาโดดเด่นยิ่งขึ้น 88. ตัวแปรในการประกาศสามารถจัดตำแหน่งได้ ไฟล์ AsciiFile*; int nPoints; ลอย x, y; 89. ใช้การจัดตำแหน่งทุกที่ที่ช่วยให้อ่านง่ายขึ้น ถ้า (a == lowValue) คำนวณบางสิ่ง (); อื่นถ้า (a == mediumValue) คำนวณSomethingElse(); อย่างอื่นถ้า (a == highValue) คำนวณSomethingElseYet(); ค่า = (ศักยภาพ * ความหนาแน่นของน้ำมัน) / ค่าคงที่ 1 + (ความลึก * ความหนาแน่นของน้ำ) / ค่าคงที่ 2 + (zCoordinateValue * ความหนาแน่นของก๊าซ) / ค่าคงที่ 3; minPosition = ระยะทางคำนวณ (ต่ำสุด, x, y, z); AveragePosition = ระยะทางคำนวณ (เฉลี่ย, x, y, z); สวิตช์ (ค่า) ( กรณี PHASE_OIL: strcpy (เฟส, "น้ำมัน"); แตก; กรณี PHASE_WATER: strcpy (เฟส, "น้ำ"); แตก; กรณี PHASE_GAS: strcpy (เฟส, "แก๊ส"); แตก; ) 6.3 ความคิดเห็น90. ไม่ควรแสดงความคิดเห็นโค้ดที่ซับซ้อนที่เขียนโดยใช้การเคลื่อนไหวที่ยุ่งยาก แต่เขียนใหม่!คุณควรแสดงความคิดเห็นให้น้อยที่สุดเท่าที่จะเป็นไปได้ ทำให้โค้ดมีการจัดทำเอกสารด้วยตนเองโดยการเลือกชื่อที่ถูกต้องและสร้างโครงสร้างเชิงตรรกะที่ชัดเจน 91. ความคิดเห็นทั้งหมดควรเขียนเป็นภาษาอังกฤษ ในสภาพแวดล้อมระหว่างประเทศ ภาษาอังกฤษเป็นภาษาที่ต้องการ 92. การใช้งาน//สำหรับความคิดเห็นทั้งหมด รวมถึงความคิดเห็นแบบหลายบรรทัดด้วย หลังจาก // คุณควรเว้นวรรค และความคิดเห็นควรขึ้นต้นด้วยตัวพิมพ์ใหญ่และลงท้ายด้วยจุด 93. ควรจัดเรียงความคิดเห็นให้เกี่ยวข้องกับสิ่งที่พวกเขากำลังอธิบาย 94. ความคิดเห็นเกี่ยวกับคลาสและส่วนหัวของเมธอดควรเป็นไปตามระเบียบการ JavaDoc โปรแกรมเมอร์ Java ใช้วิธีการขั้นสูงในการจัดทำเอกสารด้วยเครื่องมืออัตโนมัติ Javadoc มาตรฐาน ซึ่งเป็นส่วนหนึ่งของชุดพัฒนา และช่วยให้คุณสร้างเอกสาร HTML โดยอัตโนมัติจากความคิดเห็นในโค้ดของคุณ เครื่องมือที่คล้ายกันมีอยู่ใน C ++ เป็นไปตามรูปแบบไวยากรณ์ของแท็กเดียวกันกับ JavaDoc (ดูตัวอย่าง Doc++ หรือ Doxygen) 7 ลิงค์
เรามาอธิบายกันดีกว่า ในภาษา C โปรแกรมใดๆ จะประกอบด้วยหน่วยโปรแกรมหลายหน่วย และแต่ละหน่วยเป็นฟังก์ชัน ฟังก์ชันในภาษา C คล้ายกับฟังก์ชันหรือรูทีนย่อยใน Fortran หรือโพรซีเดอร์ในภาษา Pascal ชื่อฟังก์ชันจะถูกเลือกโดยพลการ (เป็นตัวอักษรละตินเท่านั้น) แต่เป็นหนึ่งในนั้น หลักนี่คือจุดเริ่มต้นของการทำงานของโปรแกรม ฟังก์ชันหลักดังกล่าวมักจะเรียกฟังก์ชันอื่นๆ ที่อยู่ในไฟล์เดียวกันกับโปรแกรมหลักหรือดึงมาจากไลบรารีของฟังก์ชันที่ได้รับการฝึกอบรมล่วงหน้า หลักไม่มีข้อโต้แย้ง ดังนั้นรายการจึงมีลักษณะดังนี้: ()
- วงเล็บ { }
วางกรอบตัวดำเนินการที่ใช้อัลกอริทึมนั้นเอง วงเล็บเหล่านี้คล้ายกับ BEGIN - END ในภาษา Pascal ให้เราพิจารณาฟังก์ชั่นตอนนี้ สแกนออกแบบมาเพื่อการป้อนข้อมูลที่จัดรูปแบบ การทำงาน สแกนใช้ที่อยู่ตัวแปรแทนที่จะเป็นค่าเป็นพารามิเตอร์จริง ในการดำเนินการนี้ ให้วางป้ายไว้หน้าพารามิเตอร์ที่เกี่ยวข้อง & - สัญลักษณ์การรับที่อยู่ ตัวอย่างเช่น, &เอ็กแอลหมายถึง "ที่อยู่ตัวแปร เอ็กซ์แอล" ไม่ใช่ค่าที่ตัวแปรมีอยู่ในปัจจุบัน สตริงรูปแบบฟังก์ชัน สแกนระบุข้อมูลที่คาดว่าจะเป็นอินพุต หากฟังก์ชันพบเครื่องหมายในสตริงรูปแบบ % ตามด้วยอักขระแปลงก็จะข้ามอักขระจนกว่าจะพบอักขระที่ไม่เว้นว่าง โปรแกรมก่อนหน้านี้มีข้อเสียเปรียบประการหนึ่ง: โปรแกรมสำหรับการคำนวณผลรวมเหมาะสำหรับกรณีใดกรณีหนึ่งเท่านั้น ก=5, ข=7- มาปรับปรุงด้วยการแทนที่ตัวดำเนินการกำหนดที่สอดคล้องกันด้วยการเรียกใช้ฟังก์ชัน สแกน(ตัวอย่าง 1.2) : สตริงรูปแบบระบุฟังก์ชัน สแกนใส่เลขทศนิยมที่จะใส่ลงในตัวแปร กจากนั้นคั่นด้วยช่องว่าง ให้ป้อนเลขทศนิยมตัวที่สองที่ต้องกำหนดให้กับตัวแปร ข.โปรดทราบว่าโปรแกรมเริ่มต้นด้วยบรรทัด commintarium: /* .. */ , คอมไพเลอร์จะข้ามอักขระใดๆ ระหว่าง /* และ */ และสามารถใช้เพื่อชี้แจงได้ |
อ่าน: |
---|
ใหม่
- ทำไมโปรเซสเซอร์ในคอมพิวเตอร์ของฉันถึงร้อนจัด?
- iPhone ไม่ค้นหาผู้ติดต่อผ่านการค้นหาใช่ไหม
- โหมด "เทอร์โบ" ในเบราว์เซอร์สมัยใหม่คืออะไร: Chrome, Yandex, Opera
- เทมเพลตที่ง่ายที่สุด เทมเพลต HTML อย่างง่าย Mamba - เทมเพลตหน้าเดียว
- วิธีการยืมเงินจาก MTS?
- การสร้างทางลัดบนเดสก์ท็อปสำหรับเพื่อนร่วมชั้น
- หากรองเท้าไม่พอดีกับ Aliexpress: การกระทำที่ถูกต้องในกรณีนี้ ผลิตภัณฑ์ Aliexpress มีขนาดที่เหมาะสม
- ข้อพิพาทใน AliExpress เข้าร่วมข้อพิพาทใน AliExpress
- 3 ฐานข้อมูลแบบกระจาย
- ผู้จัดการเนื้อหา - ความรับผิดชอบ เงินเดือน การฝึกอบรม ข้อเสียและข้อดีของการทำงานเป็นผู้เชี่ยวชาญด้านเนื้อหา