คำถามติดแท็ก conventions

10
ฉันควรทำตามรูปแบบการเข้ารหัสที่ไม่ดีเพียงเพื่อปฏิบัติตามอนุสัญญาที่จัดตั้งขึ้นในสถานที่ทำงานของฉันหรือไม่
ฉันทำงานที่งานของฉันประมาณหนึ่งปี ฉันทำงานเป็นหลักในอินเทอร์เฟซ GUI ของเราซึ่งใช้วิธีการจากแบ็กเอนด์ C แต่โดยทั่วไปฉันไม่ต้องจัดการกับพวกเขายกเว้นค่าตอบแทน GUI ของเรามีโครงสร้างที่ค่อนข้างสมเหตุสมผลโดยมีข้อ จำกัด ของเรา ฉันได้รับมอบหมายให้เพิ่มฟังก์ชั่นในส่วนบรรทัดคำสั่งของโปรแกรม ฟังก์ชั่นเหล่านี้ส่วนใหญ่มีความยาว 300 บรรทัดและใช้งานยาก ฉันพยายามรวบรวมชิ้นส่วนเหล่านั้นเพื่อรับข้อมูลสัญญาณเตือนเฉพาะและฉันมีปัญหาในการจัดการ ฉันรู้ว่าฉันกำลังทำการทดสอบที่ซับซ้อนมากขึ้นด้วยการทำมันในฟังก์ชั่นยาว ๆ ฉันควรเก็บทุกอย่างไว้ในฟังก์ชั่นขนาดใหญ่ตามสไตล์ของฟังก์ชั่นที่มีอยู่หรือฉันควรสรุปแคปปลุกในฟังก์ชั่นของตัวเองหรือไม่? ฉันไม่แน่ใจว่าเหมาะสมหรือไม่ที่จะขัดกับอนุสัญญาการเข้ารหัสปัจจุบันหรือว่าฉันควรกัดสัญลักษณ์แสดงหัวข้อย่อยและทำให้รหัสสับสนมากขึ้นสำหรับฉันในการเขียน โดยสรุปฉันกำลังเปรียบเทียบ showAlarms(){ // tons of code } ต่อต้าน showAlarms(){ alarm1(); alarm2(); return; } alarm1(){ ... printf(...); return; } แก้ไข: ขอบคุณสำหรับคำแนะนำทุกคนฉันตัดสินใจว่าฉันจะออกแบบรหัสของฉันเป็นตัวประกอบและจากนั้นถามสิ่งที่พวกเขาต้องการและถ้าพวกเขาต้องการมันทั้งหมดในที่เดียวฉันสามารถตัดจากรหัสตัวประกอบของฉันและเปลี่ยนกลับเป็น 1 ฟังก์ชั่นใหญ่ นี่ควรให้ฉันเขียนและทดสอบได้ง่ายขึ้นแม้ว่าพวกเขาต้องการรหัสทั้งหมดในคำจำกัดความเดียว UPDATE: พวกเขาจบลงด้วยความสุขกับรหัสที่แยกเป็นสัดส่วนและมีคนมากกว่าหนึ่งคนที่ขอบคุณฉันสำหรับการตั้งค่าแบบอย่างนี้

6
จะดีกว่าถ้าใช้ assert หรือ IllegalArgumentException สำหรับพารามิเตอร์เมธอดที่ต้องการ?
ใน Java ซึ่งแนะนำมากขึ้นและทำไม? ทั้งสองประเภทจะโยนข้อยกเว้นดังนั้นในการจัดการพวกเขาก็เหมือนกัน assertสั้นกว่านี้เล็กน้อย แต่ฉันไม่แน่ใจว่าสำคัญแค่ไหน public void doStuff(Object obj) { assert obj != null; ... } VS public void doStuff(Object obj) { if (obj == null) { throw new IllegalArgumentException("object was null"); } ... }

5
มันเพียงพอสำหรับวิธีการที่จะโดดเด่นเพียงแค่ชื่ออาร์กิวเมนต์ (ไม่พิมพ์)?
มันเพียงพอสำหรับวิธีการที่จะโดดเด่นเพียงแค่ชื่ออาร์กิวเมนต์ (ไม่พิมพ์) หรือมันจะดีกว่าที่จะตั้งชื่ออย่างชัดเจนมากขึ้น? ยกตัวอย่างเช่นVST Find<T>(int id)T FindById<T>(int id) มีเหตุผลที่ดีที่จะตั้งชื่ออย่างชัดเจนยิ่งขึ้น (เช่นการเพิ่มById) และการเก็บชื่ออาร์กิวเมนต์เพียงอย่างเดียวหรือไม่ เหตุผลหนึ่งที่ฉันคิดได้ก็คือเมื่อลายเซ็นของวิธีการเหมือนกัน แต่มีความหมายแตกต่างกัน FindByFirstName(string name) และ FindByLastName(string name)

4
ฉันควรใช้ตัวพิมพ์ใหญ่ทั้งหมดสำหรับค่าคงที่ของฉันหรือไม่
ฉันเป็นโปรแกรมเมอร์ Python ที่ใช้ pylint เป็นหลักในการซอร์สโค้ด ฉันสามารถกำจัดคำเตือนทั้งหมดยกเว้นชื่อ: ชื่อไม่ถูกต้องสำหรับค่าคงที่ การเปลี่ยนชื่อเป็นตัวพิมพ์ใหญ่ทั้งหมดจะแก้ไขได้ แต่ฉันควรจะทำอย่างนั้นจริงหรือ ถ้าฉันทำฉันพบว่ารหัสของฉันดูน่าเกลียดเนื่องจากตัวแปรส่วนใหญ่มีค่าคงที่ (ตาม pylint)

8
มีวิธีธรรมดาในการรวมสตริงพา ธ ไฟล์หรือไม่
ในตัวอย่าง: var assets = "images/" var sounds = assets+"sounds/" มันเป็นเรื่องธรรมดามากขึ้นที่จะใส่เครื่องหมายทับที่ด้านหลังของพา ธ ไฟล์หรือไม่? var assets = "/images" var sounds = assets+"/sounds" มีวิธีอื่นที่เป็นการปฏิบัติทั่วไปที่ดีหรือไม่?

2
ทำไมการประชุมบอกว่าชื่อตาราง DB ควรเป็นเอกเทศ แต่เป็นพหูพจน์ของทรัพยากร
มันเป็นแบบแผนที่ค่อนข้างกำหนดไว้ว่าอย่างน้อยชื่อตารางฐานข้อมูลใน SQL ควรเป็นแบบเอกพจน์ SELECT * FROM user;ดูคำถามและการอภิปรายนี้ นอกจากนี้ยังมีการประชุมที่ค่อนข้างดีที่ชื่อทรัพยากร RESTful API ควรเป็นพหูพจน์ GET /users/123และPOST /usersดูคนนี้ ใน API ที่ได้รับการสนับสนุนฐานข้อมูลที่ง่ายที่สุดชื่อของทรัพยากรใน URL จะเป็นตารางและองค์ประกอบข้อมูลใน URL และหน่วยงานร้องขอ / ตอบสนองจะจับคู่กับคอลัมน์ในฐานข้อมูลโดยตรง ตามแนวคิดแล้วฉันไม่เห็นความแตกต่างระหว่างการทำงานกับข้อมูลผ่าน API เชิงทฤษฎีนี้กับการทำงานบน SQL โดยตรง และด้วยเหตุนี้ความแตกต่างในการตั้งชื่อข้อตกลงระหว่างuserและusersไม่สมเหตุสมผลกับฉัน ความแตกต่างในการทำให้เป็นพหูพจน์เป็นอย่างไรเมื่อแนวคิด REST API และ SQL กำลังทำสิ่งเดียวกัน

3
“ สถานะ” หรือ“ สถานะ”? เมื่อใดที่ชื่อตัวแปรควรมีคำว่า "state" และเมื่อใดที่ชื่อตัวแปรควรมีคำว่า "สถานะ" แทน? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา การอ่านรหัสและการอภิปรายเกี่ยวกับรหัสฉันมักจะเห็นคำว่า "สถานะ" และ "สถานะ" ใช้แทนกันได้ แต่มีแนวโน้มต่อไปนี้: เมื่อตัวแปรมีค่าไว้เพื่อแสดงว่ามีบางสิ่งอยู่ในสถานะหนึ่งชื่อของตัวแปรนั้นมักจะไม่ประกอบด้วยคำว่า "สถานะ" หรือตัวย่อของตัวแปรนั้น อย่างไรก็ตามเมื่อค่าส่งคืนของฟังก์ชันทำหน้าที่เพื่อระบุสถานะบางอย่างเรามักจะเรียกค่านั้นว่า "รหัสสถานะ" และเมื่อค่านั้นถูกเก็บไว้ในตัวแปรตัวแปรนี้มักมีชื่อว่า "สถานะ" หรือบางอย่างที่คล้ายกัน การแยกนั้นเป็นสิ่งที่ดีฉันเดา แต่เมื่อตัวแปรดังกล่าวเป็นจริงและตัวเลือกจะต้องเลือกที่เกี่ยวข้องกับความซับซ้อนในทางที่ผิดของภาษาอังกฤษ (หรือภาษามนุษย์โดยทั่วไป) อะไรคือรหัสมาตรฐานหรือแบบแผนที่เด่นชัดเมื่อพูดถึงการแก้ปัญหาระหว่างทั้งสอง หรือควรหลีกเลี่ยงหนึ่งในสองอย่างนี้เสมอ? คำถาม english.stackexchangeนี้เกี่ยวข้องด้วยฉันคิดว่า

3
ทำไมต้นไม้จึงเติบโตลง?
ทำไมต้นไม้ถึงเติบโตลงในสาขาวิทยาศาสตร์คอมพิวเตอร์? ฉันมีความรู้สึกว่ามันกลับไปที่เครื่องพิมพ์และโปรแกรมที่สำรวจต้นไม้ก่อนจะพิมพ์รูทและใช้ความคิดของกองกระดาษที่ไม่มีก้นเหวเพื่อแสดงระดับการเรียกซ้ำที่ไม่อาจพบได้ อ้างอิง: ต้นไม้ขึ้นลงมีรากที่ด้านบนของหน้าและใบของมันลงมาด้านล่าง จากON Holy Wars และข้ออ้างเพื่อสันติ โดยการประชุมต้นไม้ถูกดึงขึ้นลง จากบทความ Wikipediaเกี่ยวกับโครงสร้างข้อมูลต้นไม้ ต้นไม้จริงเติบโตจากรากขึ้นสู่ท้องฟ้า แต่ต้นไม้วิทยาศาสตร์คอมพิวเตอร์เติบโตจากรากลง จากเดวิดชมิดท์เอกสารประกอบการบรรยาย

5
มันโอเคที่จะต่อต้านการตั้งชื่อตัวพิมพ์ใหญ่ทั้งหมดสำหรับ enums เพื่อให้การแสดงสตริงของพวกเขาง่ายขึ้นหรือไม่?
หลายครั้งที่ฉันเห็นคนใช้ตัวพิมพ์ชื่อเรื่องหรือแม้แต่การตั้งชื่อตัวพิมพ์เล็กทั้งหมดสำหรับค่าคงที่ enum ตัวอย่างเช่น: enum Color { red, yellow, green; } สิ่งนี้ทำให้การทำงานกับสตริงเป็นเรื่องง่ายและง่ายthrow new IllegalStateException("Light should not be " + color + ".")ตัวอย่างเช่นถ้าคุณต้องการทำ ดูเหมือนว่าจะยอมรับได้มากกว่านี้ถ้า Enum เป็นprivateแต่ฉันก็ยังไม่ชอบ ฉันรู้ว่าฉันสามารถสร้างตัวสร้าง enum ด้วยเขตข้อมูล String แล้วแทนที่ toString เพื่อคืนชื่อดังกล่าวดังนี้ enum Color { RED("red"), YELLOW("yellow"), GREEN("green"); private final String name; private Color(String name) { this.name = name } @Override …
14 java  conventions  enum 

1
หลักการตั้งชื่อสำหรับโครงการโอเพ่นซอร์ส iOS / OSX
ไม่เสมอไป แต่ส่วนใหญ่คุณจะพบโครงการโอเพ่นซอร์ส iOS หรือ Mac OS X ที่มีชื่อขึ้นต้นด้วยตัวอักษรเริ่มต้นของชื่อและนามสกุลของผู้แต่ง NLMyProjectหากเป็นโครงการที่ได้รับจะได้รับการประพันธ์โดยนิคเลอบลังโครงการจะได้รับการอ่านเป็น ตัวอย่าง: RMSwipeTableViewCellโดย Rune Madsen EBCardCollectionViewLayoutโดย Ezequiel Becerra, SDiPhoneVersionโดย Sebastian Dobrincu LNNotificationsUIโดย Leo Natan สิ่งนั้นมาจากไหน มีคนคนหนึ่งเขียนด้วยวิธีนี้ก่อนจากนั้นคนอื่นตามมา ฉันไม่สามารถหาอะไรเกี่ยวกับมันแม้จะอยู่ในหลักเกณฑ์ของแอปเปิ้ล เป็นสำนวนที่เขียนได้ทุกที่หรือไม่?

6
แบบแผนการตั้งชื่อ Javascript
ฉันมาจากพื้นหลัง Java และฉันใหม่กับ JavaScript ฉันสังเกตเห็นวิธีการจาวาสคริปต์หลายวิธีโดยใช้ชื่อพารามิเตอร์อักขระเดียวเช่นในตัวอย่างต่อไปนี้ doSomething(a,b,c) ฉันไม่ชอบ แต่นักพัฒนา JavaScript คนอื่นเชื่อฉันว่าสิ่งนี้ทำเพื่อลดขนาดไฟล์โดยสังเกตว่าไฟล์ JavaScript จะต้องถูกถ่ายโอนไปยังเบราว์เซอร์ จากนั้นฉันก็พบว่าตัวเองกำลังพูดคุยกับนักพัฒนาคนอื่น เขาแสดงให้ฉันเห็นวิธีที่ Firefox จะตัดทอนชื่อตัวแปรเพื่อโหลดหน้าเว็บเร็วขึ้น นี่เป็นวิธีปฏิบัติมาตรฐานสำหรับเว็บเบราว์เซอร์หรือไม่? การตั้งชื่อการแปลงแนวปฏิบัติที่ดีที่สุดที่ควรปฏิบัติเมื่อโปรแกรมใน JavaScript คืออะไร? ความยาวของตัวระบุสำคัญหรือไม่และถ้าเป็นเช่นนั้น

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

2
หลักการตั้งชื่อของตัวแปรในภาษาการเขียนโปรแกรม C # [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังดูวิดีโอเกี่ยวกับ C # เกี่ยวกับตัวแปร ผู้เขียนประกาศตัวแปรภายในเมธอดและเขาตั้งชื่อดังนี้: string MyName = "James"; คำถามของฉันคือ:. อนุสัญญาใดแนะนำโดย. Net Framework มันเป็นปาสคาลท่อในตัวอย่างข้างต้นหรือเป็นกรณีอูฐ?

1
“ TILT” หมายถึงอะไรในความคิดเห็น
ฉันกำลังอ่านClean Codeของ Robert C. Martin และวลีนั้นTILTลึกลับปรากฏขึ้นในตัวอย่างโค้ดบางอย่าง ตัวอย่าง (ใน Java โดยวิธี): ... public String errorMessage() { switch (status) { case ErrorCode.OK: // TILT - Should not get here. return ""; case ErrorCode.UNEXPECTED_ARGUMENT: return "Unexpected argument"; case ErrorCode.MISSING_ARGUMENT: return "Missing argument"; ... } ... จากบริบทนี้ฉันเดาTILTว่าจะกำหนดสถานะที่ไม่สามารถเข้าถึงได้และรวมไว้เพียงเพื่อทำให้คอมไพเลอร์ (ตัวอย่างเช่นในโค้ดด้านบนTILTปรากฏในErrorCode.OKกรณีเนื่องจากไม่ควรมีข้อความแสดงข้อผิดพลาดหากรัฐเป็นOK) แต่ ฉันไม่แน่ใจ. ไม่มีใครรู้ว่าสิ่งที่TILTหมายถึง / หมายถึง?

3
วิธีจัดการกับ Classes ที่มีชื่อเดียวกัน (แพ็คเกจที่ต่างกัน)
ฉันและทีม R&D ของฉันรักษา codebase ขนาดใหญ่ เราได้แบ่งตรรกะทางธุรกิจของเราออกเป็นหลายแพ็คเกจ บางแห่งที่มีชั้นเรียนที่มีชื่อเหมือน ในขณะที่คุณสามารถเดาได้ว่าชื่อนั้นขัดแย้งกันเมื่อมีการอ้างอิงทั้งสองคลาสในไฟล์ Java เดียวกัน ตัวอย่างเช่น: com.myapp.model (package) - Device (class) - ... com.myapp.data (package) - Device (class) - ... เราได้ถกเถียงกันว่าอะไรคือวิธีปฏิบัติที่ดีที่สุดในการรักษากรณีเหล่านี้และตัวเลือกต่อไปนี้เกิดขึ้น: ตัวเลือกที่ 1 การเปลี่ยนชื่อชั้นเรียนโดยเพิ่มคำนำหน้า ModelDevice DataDevice ตัวเลือกที่ 2 ใช้ชื่อเต็ม package + class เมื่อทั้งคู่ถูกอ้างอิง com.myapp.model.Device com.myapp.data.Device มีอะไรที่ถูกต้องมากขึ้นในแง่ของการจัดการรหัสและความยืดหยุ่น? ขณะนี้เรากำลังผสมทั้งแนวทางและเริ่มมีความไม่สอดคล้องกัน

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