คำถามติดแท็ก programming-practices

Programming Practices เป็นวิธีที่ใช้กันทั่วไปหรือไม่ใช้กันทั่วไปในการพัฒนาซอฟต์แวร์ สิ่งเหล่านี้อาจรวมถึงสิ่งต่าง ๆ เช่นการพัฒนาแบบ Agile, Kanban, ทางลัดการเข้ารหัส ฯลฯ

5
การพักอาศัยการดำเนินการไม่เชื่อเรื่องพระเจ้าคุ้มค่าหรือไม่
ฉันมีโครงการที่ฉันกำลังใช้งานอยู่ในปัจจุบันโดยใช้ Tomcat, Spring 4, Spring Security, MySQL, และ JPA w / Hibernate ฉันเลือก JPA จากมุมมองที่ว่าควรทำการสลับการใช้งานพื้นฐานของผู้ให้บริการ ORM อย่างราบรื่นหรืออย่างน้อยก็เจ็บปวดน้อย ฉันจะบอกว่านี่คือการใช้จิตใจ spec มากกว่าการใช้งาน (JAX-RS) เป็นจุดเริ่มต้นของชุมชนการพัฒนา Java ฉันสงสัยว่านี่เป็นงานที่ควรทำ ฉันแน่ใจว่าฉันใช้ Hibernate โดยตรงฉันจะได้รับพลังงานเพราะฉันสามารถใช้คุณสมบัติที่ไม่ได้เป็นส่วนหนึ่งของข้อกำหนด JPA หลัก ส่วนหนึ่งของความกังวลของฉันมาจากความคิดของ YAGNI ฉันกำลังเขียนโปรแกรมในรูปแบบและแฟชั่นที่เฉพาะเจาะจง (โดยใช้ JPA แทน Hibernate) เพื่อที่ในอนาคตฉันสามารถสลับการใช้งาน ORM ของฉันได้ ฉันสงสัยอย่างมากว่าจะเกิดขึ้นตลอดอายุการใช้งานของผลิตภัณฑ์ดังนั้นฉันจึงใช้ความพยายามในสิ่งที่ฉันอาจไม่ได้รับประโยชน์จาก คุณคิดยังไง? "การเขียนโปรแกรมไปยังอินเทอร์เฟซ" นั้นคุ้มค่าหรือไม่เมื่อพูดถึง JPA คุณเคยเปลี่ยนการใช้งาน ORM ทั้งหมดในผลิตภัณฑ์หรือไม่? คุณเคยสามารถหลีกเลี่ยงสิ่งที่เป็นนามธรรมจาก JPA ที่รั่วไหลไปได้หรือไม่? …

6
CSV เป็นทางเลือกที่ดีสำหรับ XML และ JSON หรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา เป็นCSVถือว่าเป็นตัวเลือกที่ดีกับXMLและJSONสำหรับการเขียนโปรแกรมภาษา? ฉันมักจะใช้ XML และ JSON (หรือบางครั้งไฟล์ข้อความธรรมดา) เป็นที่เก็บไฟล์เรียบ อย่างไรก็ตามเมื่อเร็ว ๆ นี้ผมมาในการดำเนิน CSV ในPHP โดยทั่วไปฉันเคยเห็น CSV ใช้สำหรับอินพุตในไฟล์Excelแต่ฉันไม่เคยใช้กับการเขียนโปรแกรม มันจะดีกว่า XML หรือ JSON แต่อย่างใด

10
over-engineering เป็นสัญญาณเตือนหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ดังนั้นเราจึงนำเสนอแบบฝึกหัดการเข้ารหัสที่ตรงไปตรงมากับผู้สมัครใหม่ที่มีข้อกำหนดที่กำหนดไว้อย่างดี บางครั้งเราได้รับการแก้ปัญหาซึ่งไม่สามารถแก้ปัญหาได้จริง ๆ แต่ถูกออกแบบมาเพื่อแก้ไขปัญหาที่รับรู้ - บ่อยครั้งที่อยู่นอกขอบเขตของการฝึก ตอนนี้คำถามของฉันคือนี่เป็นสัญญาณเตือนภัยหรือไม่? แก้ไข: ค่อนข้างมากของการสนทนาจะขึ้นอยู่กับการทดสอบที่มีข้อบกพร่อง - ซึ่งเป็นจุดยุติธรรม ตามที่ฉันอธิบายไว้ในความคิดเห็นหลักฐานพื้นฐานของการทดสอบคือการแสดงวิธีที่คุณสามารถอ่านข้อมูลจากไฟล์ในแบบที่เหมาะสม (และคุณจะต้องประหลาดใจกับความหลากหลายของวิธีที่เราเห็น) และวิธีจับคู่ รายการก่อนคำนวณเวลาแฝงระหว่างการอัพเดท ตอนนี้เพื่อให้ทำงานได้ต้องใช้สมมติฐานบางอย่างเกี่ยวกับข้อมูลและเรามองหาสมมติฐานเหล่านี้และเรายังระบุอย่างชัดเจนว่าเราต้องการเห็นแนวทางที่คุณใช้ (รวมถึงวิธีการ OO ฯลฯ ) ทั้งหมดนี้ภายในสองชั่วโมง กรอบเวลา. IMHO เมื่อฉันสัมภาษณ์มันเป็นการออกกำลังกายที่สมบูรณ์ที่สุดที่ฉันพบ สถานการณ์เฉพาะที่ฉันกำลังไตร่ตรองคือผู้สมัครแทนที่จะอ่านจากไฟล์ยอมรับอินพุต "เครือข่าย" ในแอพพลิเคชั่นแบบมัลติเธรดซึ่งไม่ได้อยู่ในขอบเขตอย่างชัดเจน

4
การ จำกัด จำนวนวิธีการเรียนคืออะไร
ในหนังสือการออกแบบที่แตกต่างกันที่ฉันอ่านบางครั้งการเน้นอย่างมากถูกวางลงบนจำนวนวิธีที่ชั้นเรียนต้องมี (พิจารณาจากภาษา OO เช่น java หรือ C # เป็นต้น) บ่อยครั้งที่ตัวอย่างที่รายงานในหนังสือเหล่านี้มีความประณีตและเรียบง่าย แต่แทบจะไม่ครอบคลุมกรณีที่ "ร้ายแรง" หรือซับซ้อน อย่างไรก็ตามช่วงนี้ดูเหมือนจะอยู่ระหว่าง 5 ถึง 8 ในโครงการฉันได้พัฒนาคลาส "Note" โดยมีคุณสมบัติเป็น attribuse: Title, Desctiption, CreateDate เป็นต้นจากนั้นมีวิธีการพื้นฐานเช่น: getRelations (ถ้าบันทึกถูกกำหนดให้กับเอกสารต่าง ๆ ), getExpiryDate, ect อย่างไรก็ตามการดำเนินการในการพัฒนาแอปพลิเคชันจำเป็นต้องมีฟังก์ชันการทำงานที่มากขึ้นและดังนั้นจึงมีวิธีการมากขึ้น ฉันรู้ว่าชั้นเรียนมีวิธีการน้อยกว่า นี่เป็นข้อได้เปรียบที่ดีในแง่ของความเป็นโมดูลและการนำกลับมาใช้ใหม่รวมถึงการแก้ไขที่ง่ายขึ้น โดยวิธีการถ้าในบริบทของเราไม่มีความต้องการ (หรือแม้กระทั่งความรู้สึก) ในการสร้างคลาสย่อยและฟังก์ชั่นที่จำเป็นทั้งหมดเกี่ยวข้องกับคลาสนั้นเราสามารถแนบวิธีการได้อีกกี่วิธี ฉันยอมรับว่ามีมากกว่า 15 วิธีจากนั้นอาจต้องมีการออกแบบใหม่เล็กน้อย แต่แม้ในกรณีนั้นหากการลบวิธีการหรือมรดกบางอย่างไม่ใช่ตัวเลือกซึ่งจะเป็นวิธีที่เหมาะสมหรือไม่

2
ประเภทความกว้างของตัวแปรถูกแทนที่ด้วยประเภทคงที่ในโมเดิร์นซีหรือไม่
ฉันมาข้ามจุดที่น่าสนใจวันนี้ในการตรวจสอบมากกว่าเมื่อรหัสตรวจสอบ @Veedrac recommened ในคำตอบนี้ว่าประเภทขนาดตัวแปร (เช่นintและlong) ถูกแทนที่ด้วยประเภทขนาดคงที่เหมือนและuint64_t uint32_tการอ้างอิงจากความคิดเห็นของคำตอบนั้น: ขนาดของ int และ long (และค่าที่สามารถเก็บได้) นั้นขึ้นอยู่กับแพลตฟอร์ม ในทางตรงกันข้าม int32_t จะยาว 32 บิตเสมอ การใช้ int เพียงหมายความว่าโค้ดของคุณทำงานแตกต่างกันไปตามแพลตฟอร์มต่าง ๆ ซึ่งโดยทั่วไปไม่ใช่สิ่งที่คุณต้องการ เหตุผลที่อยู่เบื้องหลังมาตรฐานไม่ได้กำหนดชนิดที่พบจะมีการอธิบายบางส่วนที่นี่โดย @supercat C ถูกเขียนเป็นแบบพกพาข้ามสถาปัตยกรรมในทางตรงกันข้ามกับการชุมนุมซึ่งมักจะใช้สำหรับการเขียนโปรแกรมระบบในเวลา ฉันคิดว่าความตั้งใจในการออกแบบนั้น แต่เดิมนั้นแต่ละประเภทอื่น ๆ นอกเหนือจาก int เป็นสิ่งที่เล็กที่สุดที่สามารถรองรับตัวเลขขนาดต่างๆและ int นั้นเป็นขนาด "วัตถุประสงค์ทั่วไป" ที่ใช้งานได้จริงที่สุดที่สามารถจัดการ +/- 32767 สำหรับฉันฉันมักจะใช้intและไม่ได้กังวลเกี่ยวกับทางเลือก ฉันคิดเสมอว่ามันเป็นประเภทที่มีประสิทธิภาพดีที่สุดจบเรื่อง ที่เดียวที่ฉันคิดว่าความกว้างคงที่จะมีประโยชน์คือเมื่อเข้ารหัสข้อมูลสำหรับการจัดเก็บหรือถ่ายโอนผ่านเครือข่าย ฉันเคยเห็นประเภทความกว้างคงที่ในโค้ดที่เขียนโดยคนอื่นด้วย ฉันติดอยู่ในยุค 70 หรือมีเหตุผลintในการใช้งานในยุค C99 หรือไม่?

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

5
ทุกหมายเลขในรหัสถือเป็น“ หมายเลขวิเศษ” หรือไม่
ดังนั้นทุกหมายเลขในรหัสที่เราส่งไปยังเมธอดในขณะที่อาร์กิวเมนต์ถือเป็น Magic Number? สำหรับฉันมันไม่ควร ฉันคิดว่าถ้ามีบางหมายเลขสมมติว่ามันเป็นความยาวขั้นต่ำของชื่อผู้ใช้และเราเริ่มใช้ "6" ในรหัส ... ใช่แล้วเรามีปัญหาการบำรุงรักษาและที่นี่ "6" เป็นหมายเลขมายากล .... แต่ ถ้าเรากำลังเรียกใช้เมธอดที่หนึ่งในข้อโต้แย้งยอมรับจำนวนเต็มเช่นสมาชิก ith ของคอลเลกชันและจากนั้นเราจะส่ง "0" ไปยังการเรียกเมธอดนั้นในกรณีนี้ฉันไม่เห็นว่า "0" เป็นเวทย์มนตร์ จำนวน. คุณคิดอย่างไร?

9
วิธีสอนการจัดการข้อยกเว้นสำหรับโปรแกรมเมอร์ใหม่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว คุณจะสอนการจัดการข้อยกเว้นให้โปรแกรมเมอร์อย่างไร มีการสอนสิ่งอื่น ๆ ทั้งหมดได้อย่างง่ายดาย - โครงสร้างข้อมูล, ASP.NET, WinForms, WPF, WCF - คุณตั้งชื่อมันทุกอย่างสามารถสอนได้อย่างง่ายดาย ด้วยการจัดการข้อยกเว้นการสอนให้พวกเขาลองจับในที่สุดก็เป็นเพียงลักษณะทางวากยสัมพันธ์ของการจัดการข้อยกเว้น สิ่งที่ควรสอนคือ - คุณใส่ส่วนใดของรหัสไว้ในบล็อคลอง คุณทำอะไรในบล็อกcatch ให้ฉันอธิบายด้วยตัวอย่าง คุณกำลังทำงานในโครงการ Windows Forms (ยูทิลิตี้ขนาดเล็ก) และคุณได้ออกแบบดังต่อไปนี้ด้วย 3 โครงการที่แตกต่างกัน UILayer BusinessLayer ชั้นข้อมูล หากมีข้อยกเว้น (ให้เราพูดว่าการโหลด XDocument มีข้อผิดพลาดเกิดขึ้น) จะถูกยกขึ้นที่ DataLayer (UILayer เรียกว่า BusinessLayer ซึ่งในทางกลับกันเรียก DataLayer) คุณเพิ่งทำสิ่งต่อไปนี้ //In DataLayer try …

6
ลองใช้ / จับบล็อกมีประสิทธิภาพหรือไม่
ควรใช้บล็อก catch สำหรับการเขียนลอจิกนั่นคือ handle flow control etc? หรือเพียงแค่โยนข้อยกเว้น? มันส่งผลต่อประสิทธิภาพหรือความสามารถในการบำรุงรักษาโค้ดหรือไม่? อะไรคือผลข้างเคียง (ถ้ามี) ของการเขียนลอจิกใน catch block? แก้ไข: ฉันเคยเห็นคลาส Java SDK ซึ่งพวกเขาได้เขียนตรรกะภายใน catch block ตัวอย่างเช่น (ตัวอย่างข้อมูลมาจากjava.lang.Integerชั้นเรียน): try { result = Integer.valueOf(nm.substring(index), radix); result = negative ? new Integer(-result.intValue()) : result; } catch (NumberFormatException e) { String constant = negative ? new String("-" + …

3
Decoupling คืออะไรและสามารถใช้กับการพัฒนาด้านใดได้บ้าง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเพิ่งสังเกตเห็น decoupling เป็นหัวข้อในคำถามและต้องการทราบว่ามันคืออะไรและสามารถนำไปใช้ได้ที่ไหน โดย "สามารถใช้งานได้ที่ไหน" ฉันหมายถึง: มันเกี่ยวข้องเฉพาะกับภาษาที่คอมไพล์เช่น C และ Java หรือไม่ ฉันควรรู้เกี่ยวกับ / ศึกษามันในฐานะนักพัฒนาเว็บไซต์หรือไม่?

2
เมื่อใดจึงเหมาะสมที่จะทำการคำนวณในส่วนหน้า
ทีมของฉันกำลังพัฒนาแอพพลิเคชั่นทางการเงินบนเว็บและมีข้อโต้แย้งกับเพื่อนร่วมงานที่จะทำการคำนวณ - แบ็คเอนด์หมดจดหรือเก็บฟรอนท์เอนด์ไว้บ้างไหม? คำอธิบายสั้น ๆ : เราใช้ Java (ZK, Spring) สำหรับ front-end และ Progress 4gl สำหรับ back-end การคำนวณที่เกี่ยวข้องกับคณิตศาสตร์ไม่ยอมใครง่ายๆ & ข้อมูลจากฐานข้อมูลจะถูกเก็บไว้ในส่วนท้ายดังนั้นฉันไม่ได้พูดถึงพวกเขา ฉันกำลังพูดถึงสถานการณ์ที่ผู้ใช้ป้อนค่า X จากนั้นจะเพิ่มค่า Y (แสดงในหน้าจอ) และผลลัพธ์จะปรากฏในฟิลด์ Z การดำเนินการ jQuery-ish ที่เรียบง่ายและบริสุทธิ์ฉันหมายถึง ดังนั้นสิ่งที่จะเป็นแนวปฏิบัติที่ดีที่สุดที่นี่: 1) เพิ่มค่าด้วย JavaScript ที่บันทึกจากการไปที่ส่วนหลังและส่วนหลังจากนั้นตรวจสอบความถูกต้องที่ส่วนท้าย "ในการบันทึก"? 2) รักษาตรรกะทางธุรกิจทั้งหมดไว้ในที่เดียวกัน - นำค่าไปยังส่วนหลังและทำการคำนวณที่นั่น? 3) ทำการคำนวณในส่วนหน้า; จากนั้นส่งข้อมูลไปยังส่วนหลังตรวจสอบความถูกต้องที่นั่นทำการคำนวณอีกครั้งและหากผลลัพธ์นั้นถูกต้องและเท่าเทียมกันแสดงให้ผู้ใช้เห็นหรือไม่ 4) มีอะไรอีกไหม? หมายเหตุ: เราทำการตรวจสอบความถูกต้องเบื้องต้นใน Java แต่ส่วนใหญ่ยังอยู่ใน back-end …

4
การใช้ไฟล์แฟลตเทียบกับฐานข้อมูล / API เป็นการขนส่งระหว่างส่วนหน้าและส่วนหลัง
ฉันมีแอปพลิเคชั่นที่สร้างการสนทนาที่ค่อนข้างร้อนแรงระหว่างนักพัฒนาสองคน โดยทั่วไปจะแบ่งเป็นเลเยอร์เว็บและเลเยอร์แบ็กเอนด์ เลเยอร์เว็บรวบรวมข้อมูลโดยแบบฟอร์มเว็บอย่างง่ายหยุดข้อมูลนี้เป็นเอกสาร JSON (แท้จริงไฟล์. json) ลงในโฟลเดอร์เฝ้าดูที่ใช้โดยส่วนหลัง ส่วนหลังทำการสำรวจโฟลเดอร์นี้ทุกสองสามวินาทีหยิบไฟล์ขึ้นมาและทำหน้าที่ของมัน ตัวไฟล์เองนั้นง่ายมาก (เช่นข้อมูลสตริงทั้งหมด, ไม่มีการซ้อน), และประมาณ 1-2k ที่ใหญ่ที่สุด, โดยระบบใช้เวลาส่วนใหญ่ในการใช้งาน (แต่การกระจายข้อความสูงสุด 100 ข้อความในเวลาใดก็ตาม) ขั้นตอนการประมวลผลส่วนหลังใช้เวลาประมาณ 10 นาทีต่อข้อความ ข้อโต้แย้งเกิดขึ้นเมื่อผู้พัฒนารายหนึ่งแนะนำว่าการใช้ระบบไฟล์เป็นเลเยอร์การส่งข้อความเป็นวิธีแก้ปัญหาที่ไม่ดีเมื่อบางสิ่งเช่นฐานข้อมูลเชิงสัมพันธ์ (MySQL), ฐานข้อมูล noSQL (Redis) หรือแม้แต่การเรียก REST API ธรรมดาควรใช้แทน ควรสังเกตว่า Redis ถูกใช้ที่อื่นในองค์กรสำหรับการจัดการข้อความที่อยู่ในคิว ข้อโต้แย้งที่ฉันได้ยินแตกออกเป็นดังนี้ ในความโปรดปรานของไฟล์แบน: ไฟล์แบบเรียบมีความน่าเชื่อถือมากกว่าโซลูชันอื่น ๆ เนื่องจากไฟล์จะถูกย้ายจากโฟลเดอร์ "เฝ้าดู" ไปยังโฟลเดอร์ "กำลังดำเนินการ" หลังจากที่รับแล้วและท้ายที่สุดไปยังโฟลเดอร์ "เสร็จสิ้น" เมื่อเสร็จสิ้น ไม่มีความเสี่ยงของข้อความที่จะหายไปยกเว้นข้อผิดพลาดในระดับต่ำมากซึ่งจะทำลายสิ่งอื่น ๆ อย่างไรก็ตาม ไฟล์แบบแฟลตต้องการความซับซ้อนทางเทคนิคที่น้อยกว่าในการทำความเข้าใจ - เพียงแค่catมัน …

2
เราควรรู้อยู่เสมอว่า API กำลังทำอะไรโดยดูที่รหัส?
เมื่อเร็ว ๆ นี้ฉันได้พัฒนา API ของตัวเองและด้วยความสนใจลงทุนในการออกแบบ API ฉันมีความสนใจอย่างมากว่าฉันจะปรับปรุงการออกแบบ API ได้อย่างไร แง่มุมหนึ่งที่เกิดขึ้นสองสามครั้งคือ (ไม่ใช่โดยผู้ใช้ API ของฉัน แต่ในการสังเกตการอภิปรายเกี่ยวกับหัวข้อ): สิ่งหนึ่งที่ควรรู้เพียงแค่ดูรหัสที่เรียก API ว่ามันกำลังทำอะไรอยู่ ตัวอย่างเช่นดูการสนทนานี้ใน GitHub สำหรับวาทกรรมวาทกรรมมันมีลักษณะดังนี้: foo.update_pinned(true, true); เพียงแค่มองไปที่โค้ด (โดยไม่รู้ชื่อพารามิเตอร์เอกสาร ฯลฯ ) เราไม่สามารถเดาได้ว่ามันจะทำอะไร - อาร์กิวเมนต์ที่ 2 หมายถึงอะไร การปรับปรุงที่แนะนำคือการมี: foo.pin() foo.unpin() foo.pin_globally() และนั่นก็เป็นการล้างสิ่งต่าง ๆ (ข้อโต้แย้งที่สองคือว่าจะตรึง foo ทั่วโลกฉันเดา) และฉันเห็นด้วยในกรณีนี้ภายหลังจะเป็นการปรับปรุงอย่างแน่นอน แต่ผมเชื่อว่าอาจจะมีกรณีที่วิธีการในการตั้งค่าสถานะที่แตกต่างกัน แต่ที่เกี่ยวข้องเหตุผลจะได้รับการสัมผัสที่ดีกว่าเรียกวิธีหนึ่งมากกว่าคนแยกเป็นสัดส่วนถึงแม้คุณจะไม่ทราบว่าสิ่งที่ทำเพียงแค่มองรหัส (ดังนั้นคุณจะต้องหันไปดูที่ชื่อพารามิเตอร์และเอกสารประกอบเพื่อค้นหา - ซึ่งโดยส่วนตัวแล้วฉันจะทำทุกอย่างไม่ว่าฉันจะไม่คุ้นเคยกับ API) ตัวอย่างเช่นฉันเปิดเผยหนึ่งวิธีSetVisibility(bool, string, bool)ในFalconPeerและฉันรับทราบเพียงแค่ดูที่บรรทัด: …

3
ฉันต้องคิดถึงรหัสเครื่องที่คอมไพล์เมื่อฉันเขียนรหัสหรือไม่?
ตัวอย่างเช่นฉันได้รับรหัสต่อไปนี้: auto z = [](int x) -> int { if (x > 0) { switch (x) { case 2: return 5; case 3: return 6; default: return 1; } } return 0; }; และต่อมาฉันเรียกสิ่งนี้หลายครั้ง ในรหัส asm ฉันเห็นสายภายนอกด้วยแลมบ์ดา .... บางสิ่งบางอย่าง ... มันกลายเป็นเรื่องง่ายที่จะอ่านและฉันคิดว่ามันอาจทำให้ประสิทธิภาพ ดังนั้นฉันอาจชนะในการเขียนโปรแกรม meta แต่ฉันเสียในการดีบัก asm และประสิทธิภาพหรือไม่ ฉันควรหลีกเลี่ยงฟีเจอร์ภาษาที่ทันสมัยมาโครและด้านการเขียนโปรแกรมเมตาอื่น ๆ เพื่อให้แน่ใจในประสิทธิภาพและการแก้ไขข้อบกพร่องอย่างง่ายหรือไม่?

10
การดิ้นรนเป็นโปรแกรมเมอร์ ต้องการคำแนะนำ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ตอนนี้ฉันเป็นนักพัฒนามาหลายปีแล้ว ฉันค่อนข้างดีในสิ่งที่ฉันทำและสามารถ "ทำให้งานเสร็จ" แต่มีความแตกต่างระหว่าง "การทำงานให้เสร็จ" และ "การทำงานอย่างถูกต้อง" ลองใช้ตัวอย่าง เมื่อเร็ว ๆ นี้ฉันพัฒนาเว็บไซต์ตั้งแต่เริ่มต้น เว็บไซต์ทำงานได้ดีและฉันก็ไม่มีปัญหา เมื่อมองดูจากรหัสฉันคิดกับตัวเองว่าฉันทำได้ดีกว่านี้แล้ว ฉันสามารถลดแบบสอบถาม MySQL ของฉัน ฉันสามารถใช้ MVC ทำให้ขยายได้ง่ายขึ้น (ไม่จำเป็นต้องขยายในขณะนี้) ฉันตัดสินใจที่จะเขียนโครงการใหม่โดยใช้ CodeIgniter ฉันชอบกรอบ แต่จากนั้นฉันก็ถูกกีดกันเพราะการลดการสืบค้น MySQL ของฉันฉันต้องเรียนรู้การเข้าร่วมขั้นสูง และนี่คือปัญหา เมื่อใดก็ตามที่ฉันทำงานอย่างถูกต้องฉันอยู่ในวงล้อการเรียนรู้คง และหัวข้อต่าง ๆ เช่นการรวม MySQL ขั้นสูงต้องใช้เวลาในการเรียนรู้และจากนั้นใช้เวลาในการดำเนินการ ฉันไม่ทำงานให้ บริษัท ฉันทำทุกอย่างคนเดียว ดังนั้นฉันคิดว่าถ้าฉันทำงานเป็นนักพัฒนา PHP สำหรับ บริษัท จะมีทีมแยกต่างหากที่จัดการ SQL …

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