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

12
เหตุผลที่ใช้ตัวพิมพ์เล็กสำหรับคำแรกในตัวแปรโลคัล (เช่น employeeCount, firstName) คืออะไร
ฉันใช้การวิพากษ์วิจารณ์อย่างมากจากโปรแกรมเมอร์คนอื่น ๆ เนื่องจากฉันใช้ตัวเรือนที่เหมาะสมกับตัวแปรทั้งหมดของฉัน ยกตัวอย่างเช่นโปรแกรมเมอร์ของคุณโดยทั่วไปจะใช้employeeCountชื่อตัวแปร EmployeeCountแต่ฉันจะใช้ ฉันใช้ตัวเครื่องที่เหมาะสมสำหรับทุกอย่างไม่ว่าจะเป็นวิธีที่เป็นโมฆะวิธีคืนค่าตัวแปรคุณสมบัติหรือค่าคงที่ ฉันยังทำตามอนุสัญญานี้ใน Javascript สิ่งสุดท้ายที่ทำให้เกิดความสับสนวุ่นวายของคนจริงๆ เหตุผลทั่วไปที่กำหนดว่าทำไมฉันไม่ควรทำตามกรอบ "ที่ไม่ได้มาตรฐาน" นี้เป็นเพราะกรณีที่เหมาะสมควรถูกสงวนไว้สำหรับคุณสมบัติและวิธีการโมฆะ int employeeCount = getEmployeeCount()ตัวแปรท้องถิ่นและวิธีการที่ส่งกลับค่าควรมีคำแรกเป็นตัวพิมพ์เล็กเช่น อย่างไรก็ตามฉันไม่เข้าใจว่าทำไม เมื่อผมถามนี้ก็ดูเหมือนว่าฉันเพิ่งได้รับคำตอบโดยพลการของที่มาตรฐาน อะไรก็ตามที่คำตอบคือมันมักจะเดือดลงไปที่นั่นเป็นเพียงวิธีที่มันเป็นและฉันไม่ได้ถามมัน ฉันแค่ติดตามมัน . คำตอบโดยพลการไม่เคยดีพอสำหรับฉัน นับตั้งแต่วันแรกของการเขียนโปรแกรมแมโคร Excel 97 กับ Office IDE ฉันไม่เคยต้องการรูปแบบการเขียนเพื่อบอกฉันว่ามีบางสิ่งที่เป็นตัวแปรหรือคุณสมบัติในตัวเครื่องหรือไม่ นี่เป็นเพราะฉันมักจะใช้รูปแบบการตั้งชื่อที่ใช้งานง่ายมาก ตัวอย่างเช่นGetNuggetCount()แนะนำวิธีการที่จะไปที่ไหนสักแห่งและนับจำนวนนักเก็ตทั้งหมด SetNuggetCount(x)แนะนำว่าคุณกำลังกำหนดค่าใหม่ให้กับจำนวนนักเก็ต NuggetCountโดยตัวมันเองแนะนำคุณสมบัติหรือตัวแปรท้องถิ่นที่เป็นเพียงการเก็บค่า สำหรับคนสุดท้ายนั้นอาจถูกล่อลวงให้พูดว่า "อ้าฮ่า! นั่นคือคำถามทรัพย์สินหรือตัวแปร? เพื่อที่ฉันจะตอบด้วย "มันเป็นเรื่องสำคัญจริง ๆ ?" ดังนั้นนี่คือ tl; dr ;: อะไรคือวัตถุประสงค์เหตุผลเหตุผลที่ไม่มีเหตุผลในการใช้ตัวพิมพ์เล็กสำหรับคำแรกในตัวแปรหรือวิธีการส่งคืนของคุณ แก้ไข: สำหรับ MainMa แทนที่รหัสนี้ด้วยตัวอย่างรหัสแรกในคำตอบของคุณและดูว่าอาร์กิวเมนต์ของคุณดีขึ้นเพียงใด: public …

1
ประวัติของการตั้งชื่อค่าคงที่ในตัวพิมพ์ใหญ่ทั้งหมดคืออะไร?
ประวัติศาสตร์ที่อยู่เบื้องหลังการประชุมของการตั้งชื่อค่าคงที่ในตัวพิมพ์ใหญ่ทั้งหมดคืออะไร? สัญชาตญาณของฉันคือมันเริ่มต้นด้วยตัวประมวลผลล่วงหน้า C ซึ่งผู้คนพัฒนาวิธีปฏิบัติเพื่อตั้งชื่อมาโครตัวประมวลผลล่วงหน้าในตัวพิมพ์ใหญ่ทั้งหมดเพื่อให้พวกเขาอาศัยอยู่ในเนมสเปซแยกกันอย่างมีประสิทธิภาพ ความเชื่อของฉันคือว่าการปฏิบัตินี้ถูกเข้าใจผิดและ bastardized เพื่อนำไปใช้กับค่าคงที่ที่ไม่ใช่ preprocessor ด้วย ( enums, constตัวแปร) การตั้งชื่อมาโครตัวประมวลผลล่วงหน้าในตัวพิมพ์ใหญ่ทั้งหมดนั้นมีประโยชน์สำหรับฉันจริงๆ การตั้งชื่อค่าคงที่ทั่วไปนั้นไม่มาก (และต่อต้านหากสร้างการชนด้วยชื่อแมโคร) ฉันอยู่นอกฐานหรือไม่ การฝึกฝนการใช้ประโยชน์จากตัวพิมพ์ใหญ่ยังคงอยู่ก่อนวันที่ C หรือไม่?

8
C # - เหตุใดคำนำหน้าบนฟิลด์จึงหมดกำลังใจ?
ย้อนกลับไปในสมัยก่อนเราทำสัญลักษณ์ของฮังการี นั่นคือตอนนี้ถือว่าเป็นกุญแจและส่วนใหญ่ฉันจะไม่ใช้อีกต่อไป แต่ฉันยังพบว่ามีการใช้m_คำนำหน้าเพื่อระบุเขตข้อมูลสมาชิก สำหรับฉันถ้าฉันอ่านรหัสของคนอื่นและฉันเห็นสิ่งนี้: count = 3; ฉันคิดว่าcountมันเป็นตัวแปรท้องถิ่นของฟังก์ชั่นนั้นและฉันกำลังทำสิ่งที่จะใช้ที่อื่นในฟังก์ชั่น; ถ้าฉันเห็นสิ่งนี้: m_count = 3; ฉันรู้ทันทีว่าฉันกำลังอัพเดทสถานะของวัตถุ แนวทางสไตล์ Microsoft บอกว่าเป็นวิธีที่ผิดในการทำสิ่งต่าง ๆ ฉันควรตั้งชื่อฟิลด์ที่ไม่ใช่แบบสาธารณะเหมือนกับตัวแปรชั่วคราวที่กำหนดไว้ในฟังก์ชัน ไม่มีm_ไม่ได้ขีดง่าย ใช่เราสามารถกำหนดรูปแบบการเขียนโค้ดของเราเอง แต่จากนั้นฉันต้องต่อสู้กับเครื่องมือวิเคราะห์รหัสแบบคงที่ต่างๆ ฉันยินดีที่จะเปลี่ยนเป็นสไตล์ Microsoft แต่ฉันอยากรู้ว่าทำไมสิ่งต่าง ๆ ถึงเป็นแบบนี้ ทำไมตอนนี้จึงถือว่าไม่ดีที่จะบอกได้ว่าตัวแปรเป็นฟังก์ชันโลคัลหรือสมาชิก? ป.ล. นี้คล้ายกับแนวทางปฏิบัติที่ดีที่สุดในปัจจุบันที่ได้รับการยอมรับเกี่ยวกับคำสำคัญ“ นี้” ที่อยู่ด้านหน้าของฟิลด์และวิธีการใน c # คืออะไร แต่ฉันถามเกี่ยวกับการm_ไม่ได้this. PPS ดูเพิ่มเติมที่เหตุใด Microsoft จึงสร้างพารามิเตอร์ตัวแปรโลคัลและฟิลด์ส่วนตัวจึงมีหลักการตั้งชื่อเหมือนกัน

5
แนวปฏิบัติที่ดีที่สุดสำหรับการตั้งชื่อรูปภาพที่อัปโหลดคืออะไร
สมมติว่าฉันมีแบบฟอร์มในเว็บแอปพลิเคชันซึ่งผู้ใช้สามารถอัปโหลดรูปโปรไฟล์ ฉันมีข้อกำหนดเล็กน้อยเกี่ยวกับขนาดไฟล์ขนาดและอื่น ๆ แต่เมื่อผู้ใช้อัปโหลดภาพฉันจะตั้งชื่อพวกเขาในระบบของฉันได้อย่างไร ฉันคิดว่ามันจะต้องมีความสอดคล้องและไม่ซ้ำกัน อาจเป็น GUID หรือไม่? a5c627bedc3c44b7ae7c06a44fb3fcf8.jpg การประทับเวลา? 129899740140465735.jpg แฮช เช่น md5 b1a9acaf295cf14ffbc5b6538294562c.jpg มีวิธีมาตรฐานหรือแนะนำให้ทำเช่นนี้?

3
มาตรฐานการตั้งชื่อสภาพแวดล้อมในการพัฒนาซอฟต์แวร์?
ปัจจุบันโครงการของฉันประสบปัญหาการตั้งชื่อสภาพแวดล้อม คนต่างมีสมมติฐานแตกต่างกันไปตามสภาพแวดล้อมที่ควรตั้งชื่อหรือชื่อที่กำหนดและทำให้เกิดความสับสนเมื่อพูดคุยกัน ฉันทำการวิจัยเล็กน้อยแล้วและไม่พบมาตรฐานใด ๆ คำนี้รวมถึง "Local", "Sand", "Dev", "Test", "ผู้ใช้", "QA", "Staging" และ "Prod" (บวกอีกสองสามอย่างที่คนอื่นถาม) ฉันไม่ได้มองหาความคิดเห็นเพียงอย่างเดียวแม้ว่าจะมีใครบางคนที่นั่น "ทุกคน" มีฉันจะเอามัน - ฉันพยายามที่จะหาคำจำกัดความขั้นสูงโดยผู้มีอำนาจบางอย่างแม้ว่ามันจะไม่เป็นทางการ นี่คือสภาพแวดล้อมที่เราใช้ในปัจจุบัน: สภาพแวดล้อมบนพีซีของผู้พัฒนา สภาพแวดล้อมที่ใช้ร่วมกันซึ่งนักพัฒนาซอฟต์แวร์อัปโหลดรหัสไปยังการทดสอบตัวเองโดยตรง สภาพแวดล้อมที่ใช้ร่วมกันที่มีการทดสอบมาตรฐานและฟังก์ชั่นการใช้งานโดยพนักงาน QA สภาพแวดล้อมที่ใช้ร่วมกันซึ่งเสร็จสมบูรณ์และรหัสตรวจสอบ QA ได้รับการอนุมัติจากผู้ขอโครงการ สภาพแวดล้อมที่สะท้อนสภาพแวดล้อมสุดท้ายเป็นการตรวจสอบขั้นสุดท้ายและเตรียมการปรับใช้ สภาพแวดล้อมสุดท้ายที่มีการใช้รหัส ฉันรู้ว่าสิ่งที่ฉันเรียกพวกเขา แต่มีมาตรฐานบางอย่างเกี่ยวกับเรื่องนี้? ขอบคุณล่วงหน้า.

3
อะไรคือจุดที่ทำให้เกิดความแตกต่างทางวากยสัมพันธ์ระหว่างชนิดมาตรฐานและแบบที่ผู้ใช้กำหนด?
แม้ว่าที่นี่ฉันจะอ้างถึงข้อตกลงการตั้งชื่อของ C ++ และBjarne Stroustrupโดยหลักการแล้วฉันเห็นว่าผู้คนใช้กฎที่คล้ายกันสำหรับภาษาอื่นที่นี่และที่นั่น ดังนั้นแนวคิดพื้นฐานคือควรจะแยกแยะชนิดมาตรฐานจากประเภทที่ผู้ใช้กำหนดในขณะที่อ่านโค้ด ตัวอย่างเช่น Bjarne Stroustrup แนะนำว่ามีการใช้ อักษรตัวใหญ่เริ่มต้นสำหรับประเภท (เช่น Square และกราฟ) ซึ่งคำนึงถึงว่า ภาษา C ++ และไลบรารีมาตรฐานไม่ใช้ตัวพิมพ์ใหญ่ อนุญาตให้บรรลุเป้าหมายดังกล่าวข้างต้น แต่ทำไมเราต้องทำเช่นนั้น? อะไรคือจุดประสงค์ของการแยกประเภทมาตรฐานและประเภทที่ผู้ใช้กำหนด? ฉันไม่สามารถหาเหตุผลของ Bjarne Stroustrup เกี่ยวกับเรื่องนั้นได้และนอกจากนี้ฉันเองก็คิดตรงกันข้าม : DI รู้ฉันรู้ "ฉันเป็นใครที่จะโต้แย้ง Stroustrup?" แต่ฟังคุณสมบัติของภาษา C ++ เช่นตัวดำเนินการโอเวอร์โหลดมีวัตถุประสงค์เพื่อให้ประเภทที่ผู้ใช้กำหนดมีระดับการสนับสนุนทางไวยากรณ์ที่คล้ายกันเป็นประเภทมาตรฐาน และทั้งหมดนี้ก็ทำให้งงงวยโดยวินัยการตั้งชื่อที่แตกต่างกัน ... ป.ล. ไม่ต้องพูดถึงว่าคำหนึ่งคำมักจะไม่เพียงพอที่จะตั้งชื่อคลาสและคำที่คั่นด้วยเครื่องหมายขีดล่างที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่ที่ดูต่างชาติ

2
ทำไมประเภทตัวเลือก Scala ไม่ถูกเรียกว่าอาจจะเหมือนกับใน Haskell [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ทำไมประเภทตัวเลือก Scala ไม่ถูกเรียกว่าอาจจะเหมือนกับใน Haskell อาจทำให้รู้สึก "ความหมาย" มากขึ้นสำหรับฉัน แต่บางทีตัวเลือกอาจมีพฤติกรรมที่แตกต่างกันซึ่งฉันไม่ทราบ มีเหตุผลใดเป็นพิเศษหรือไม่ที่ตัวเลือกใน Scala ไม่ได้ถูกเรียกว่าอาจจะ?

2
ฉันควรตั้งชื่อฟังก์ชั่นที่คืนค่าใน Python อย่างไร?
ฉันสับสนเกี่ยวกับการเลือกชื่อสำหรับการทำงานของฉันในหลาม บางครั้งหลามในตัวฟังก์ชั่นที่มีความจำเป็นเช่นฟังก์ชั่นและวิธีสตริงprint findบางครั้งพวกเขาไม่ได้เช่นlenชื่อของมันไม่ได้เป็นความจำเป็นเช่นcalculate_lenตัวอย่างและไม่ได้เป็นtypefind_type ฉันสามารถเข้าใจว่าprintคืนค่าที่เราไม่ได้ใช้ (เช่นNone) และทำบางสิ่ง (เช่นมันจะแสดงสตริงบนหน้าจอ) ดังนั้นชื่อของมันจึงมีความจำเป็น แต่lenกลับเป็นค่าที่เราใช้และทำอะไรบางอย่าง (เช่นการคำนวณจำนวนรายการที่มีอยู่ในลำดับหรือการแมป.) และชื่อของมันไม่ได้เป็นความจำเป็น บนมืออื่น ๆ , findวิธีสตริง (เป็นlen) ส่งกลับค่าที่เราใช้และไม่บางสิ่งบางอย่างและชื่อของมันคือความจำเป็น สิ่งที่ทำให้คำถามนี้คือฉันใส่สคริปต์ที่เข้ารหัสและถอดรหัสสตริงโดยใช้ Caesar cipher เพื่อตรวจสอบ ผู้วิจารณ์กล่าวว่า: เป็นเพียงความรู้สึก: ฟังก์ชั่นทำสิ่งต่างๆ ดังนั้นชื่อที่ดีสำหรับการทำงานเป็นความจำเป็น: ฉันต้องการใช้แทนrotate_letterrotated_letter rotated_letterส่งคืนสตริงตัวอักษรเดี่ยวที่แทนตัวอักษรที่หมุนด้วยตัวเลข ผมไม่ทราบว่าสิ่งที่ดีกว่าที่ผมใช้rotated_letterเป็นมันจะกลับค่าเช่นrandintฟังก์ชั่นในโมดูลสุ่มgenerate_randintก็เป็นได้ ดังนั้นในกรณีนี้ฉันจะตั้งชื่อฟังก์ชันที่ส่งกลับค่าที่จะใช้อย่างไร ฉันควรจะให้ชื่อมีความจำเป็นหรือเพียงแค่เป็นรูปธรรม ในกรณีอื่น ๆ จะเห็นได้ชัดว่าจะทำอย่างไรเช่นฟังก์ชั่นบูลีนเช่นis_evenและis_palindromeเราก็ทำให้มันเหมือนคำถามใช่ / ไม่ใช่และฟังก์ชั่นที่เพิ่งทำและคืนค่าที่ไม่ได้ใช้ (เช่นNone), printและวิธีรายการsort.

4
ทำไมการใช้ conjunctions ในเมธอดจึงตั้งชื่อแผนการประชุมที่ไม่ดี? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ในทีมของฉันเราทำงานอย่างใกล้ชิดกับสถาปนิกซอฟต์แวร์เพียงไม่กี่คน พวกเขาอนุมัติการตัดสินใจการออกแบบทั้งหมดของโครงการของเราทำการทบทวนโค้ด ฯลฯ โครงการของเราประกอบด้วยฟังก์ชันแบ็คเอนด์ส่วนใหญ่ที่ใช้ใน PHP โดยใช้เฟรมเวิร์ก Symfony 2 ดังนั้น syntactically รหัส, การตั้งชื่อแบบแผนและโครงสร้างโครงการดูเหมือนเกือบจะเหมือนกับสิ่งที่ Java จะมีลักษณะ (Symfony 2 สนับสนุนโครงสร้างดังกล่าว) ฉันกำลังพูดถึงเรื่องนี้เพราะอนุสัญญาเฉพาะ Java ยังใช้ในกรณีของเรา (ถ้าเป็นไปได้) เมื่อเร็ว ๆ นี้พวกเขาชี้ให้เห็นบางสิ่งบางอย่างที่ผมพบที่แปลกมาก: วิธีการทั้งหมดที่ควรจะมีในสันธานเช่นชื่อของพวกเขาgetEntityOrNull, setValueOrExceptionฯลฯ การตั้งชื่อแบบนี้รู้สึกผิดกับฉันมาก แต่ฉันไม่สามารถหาข้อโต้แย้งที่เป็นรูปธรรมหรือบทความ / หน้าเว็บออนไลน์ที่ท้าทายเรื่องนี้โดยเฉพาะได้ สิ่งเดียวที่ฉันคิดไว้คือ: ข้อมูลดังกล่าวควรมีอยู่ในคำอธิบายประกอบของวิธีเช่น@returnหรือ@throws การใช้คำสันธาน ("และ", "หรือ" ฯลฯ ) ในชื่อวิธีมักจะแนะนำว่าหลักการความรับผิดชอบเดี่ยวไม่ได้รับการเคารพอย่างเหมาะสม อะไรคือข้อโต้แย้งที่เป็นรูปธรรมอื่น ๆ ต่ออนุสัญญาการตั้งชื่อนี้

2
อาจเริ่มต้นตัวแปร / สมาชิกด้วยปริศนาขีดเส้นใต้คอมไพเลอร์?
ฉันได้รับการสอนมาตั้งแต่มัธยมซึ่งกำหนดตัวแปรเช่นนี้: int _a; หรือ int __a; ควรพิจารณาการปฏิบัติที่ไม่ดีเพราะในที่สุดนี้จะไขปริศนาคอมไพเลอร์ที่ใช้ตัวแปรที่เริ่มต้นด้วยการขีดเส้นใต้เพื่อตั้งชื่อตัวแปรชั่วคราว เท่าที่ฉันรู้ว่านี่คือเหตุผลว่าทำไมบางคนชอบที่จะย้ายขีดเส้นใต้ในตอนท้ายของชื่อเช่น: int a_; อย่างไรก็ตามฉันเห็นโค้ดจำนวนมากรอบตัวที่ใช้ประโยชน์จากตัวแปรเริ่มต้นขีดล่าง และรหัสนั้นสร้างค่อนข้างดีทั้ง Visual Studio 2010 และ g ++ 4.x ดังนั้นฉันจึงสงสัยว่า: นี่ไม่ใช่ปัญหาทุกวันนี้หรือไม่? คอมไพเลอร์สมัยใหม่ฉลาดกว่าเกี่ยวกับการตั้งชื่อการประชุมหรือไม่?

2
การตั้งชื่อคุณสมบัติที่เหมาะสมเพื่อแสดงสตริงที่ขึ้นต้นด้วยหมายเลข
เมื่อดูเมตาดาต้าของกล้องบางตัวบน Windows File Propertiesจะมี (พร้อมกับอีกสองสาม) Propertiesชื่อความยาวโฟกัสและความยาวโฟกัส 35 มม . ฉันกำลังพัฒนาซอฟต์แวร์ที่จะใช้ประโยชน์จากสองสิ่งPropertiesนี้ จนถึงตอนนี้ฉันได้สร้างPropertyชื่อFocalLengthสำหรับชื่อแรก แต่ฉันไม่สามารถหาชื่อที่เหมาะสมสำหรับชื่ออื่นได้ ฉันคิด_35MmFocalLengthหรือThirtyFiveMmFocalLengthแต่ฉันคิดว่าอาจมีข้อเสนอแนะที่ดีกว่า ความคิดใด ๆ

1
มีคำที่ชัดเจนสำหรับคลาสที่ไม่ใช่นามธรรมหรือไม่?
ฉันได้เรียนวิชานามธรรมเป็นส่วนใหญ่ในโครงการของฉันและมีอีกสองสามชั้นที่ใช้ / สืบทอดพวกเขา เมื่อฉันเขียนเอกสารฉันต้องการระบุว่าส่วนหนึ่งเป็นเพียงเกี่ยวกับพฤติกรรมของชั้นเรียนที่ไม่เป็นนามธรรมเหล่านี้ แต่ฉันพบว่าใช้คำนี้โง่ ฉันสามารถพูดได้ว่าเป็นคลาส แต่คลาสนามธรรมเป็นคลาสเช่นกัน ดังนั้นฉันสงสัยว่ามีคำ / คำพ้องความหมายที่ชัดเจนสำหรับชั้นเรียนที่ไม่ใช่นามธรรมหรือไม่? อัปเดต SEO: ชื่อทั่วไปของคลาสที่ไม่เป็นนามธรรมคืออะไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.