วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

11
ฉันไม่เข้าใจว่า TDD ช่วยให้ฉันได้รับการออกแบบที่ดีได้อย่างไรถ้าฉันต้องการการออกแบบเพื่อเริ่มการทดสอบ
ฉันพยายามคลุมศีรษะด้วย TDD โดยเฉพาะในส่วนของการพัฒนา ฉันได้ดูหนังสือบางเล่ม แต่หนังสือที่ฉันพบส่วนใหญ่จัดการกับส่วนทดสอบ - ประวัติของ NUnit ทำไมการทดสอบจึงดี Red / Green / Refactor และวิธีการสร้างเครื่องคำนวณสตริง สิ่งที่ดี แต่นั่นคือ "เพียงแค่" การทดสอบหน่วยไม่ใช่ TDD โดยเฉพาะฉันไม่เข้าใจว่า TDD ช่วยให้ฉันได้รับการออกแบบที่ดีได้อย่างไรถ้าฉันต้องการการออกแบบเพื่อเริ่มการทดสอบ เพื่ออธิบายให้นึกภาพ 3 ข้อเหล่านี้: แคตตาล็อกต้องมีรายการผลิตภัณฑ์ แค็ตตาล็อกควรจดจำผลิตภัณฑ์ที่ผู้ใช้ดู ผู้ใช้ควรสามารถค้นหาผลิตภัณฑ์ได้ ณ จุดนี้มีหนังสือหลายเล่มดึงกระต่ายเวทมนตร์ออกมาจากหมวกและกระโดดลงไปใน "การทดสอบบริการผลิตภัณฑ์" แต่พวกเขาไม่ได้อธิบายว่าพวกเขาสรุปได้อย่างไรว่ามีบริการผลิตภัณฑ์ในตอนแรก นั่นคือส่วน "การพัฒนา" ใน TDD ที่ฉันพยายามเข้าใจ จำเป็นต้องมีการออกแบบที่มีอยู่ แต่สิ่งที่อยู่นอกบริการ - เอนทิตี้ (นั่นคือ: มีผลิตภัณฑ์ดังนั้นควรมี ProductService) ไม่พบ (เช่นข้อกำหนดที่สองต้องการให้ฉันมีแนวคิดบางอย่างของ ผู้ใช้ แต่ฉันจะใส่ฟังก์ชั่นการเตือนไว้ที่ไหนและค้นหาคุณสมบัติของ ProductService …
50 java  c#  .net  tdd 

14
การออกแบบ RESTful API ฉันจะกลับมาได้อย่างไรหากไม่มีแถว?
ขณะนี้ฉันกำลังเขียนรหัส API สำหรับเครือข่ายสังคมด้วย Slim Framework คำถามของฉันคืออะไรแนวปฏิบัติที่ดีที่สุดเมื่อไม่มีแถวที่จะส่งคืนในโครงสร้าง json คืออะไร ให้บอกว่าการโทรนี้/ v1 / get / ภาพยนตร์ส่งคืน 2 แถวจากชื่อภาพยนตร์ตาราง: [ {"name": "Ghostbusters"}, {"name": "Indiana Jones"} ] แต่ฉันโทรหา/ v1 / get / หนังสือและไม่มีแถวในตารางนั้น ฉันควรคืนโครงสร้างว่างเปล่าไหม [ ] ... หรือว่าจะเป็นข้อความและรหัสข้อผิดพลาดดีกว่า [ "errors": { "message": "no matches found", "code": 134 } ] ข้อปฏิบัติที่ดีกว่าคืออะไร (API จะใช้ในแอพ iOS และ …

9
ทำไมการเปรียบเทียบค่าสตริงของโอเปอเรเตอร์ == จึงไม่ทำให้เป็น Java
โปรแกรมเมอร์ Java ทุกคนรู้ดีว่าคุณต้องใช้ String.equals () เพื่อเปรียบเทียบสตริงแทนที่จะเป็น == เพราะ == ตรวจสอบความเท่าเทียมกันอ้างอิง เมื่อฉันจัดการกับสตริงเวลาส่วนใหญ่ที่ฉันกำลังตรวจสอบความเท่าเทียมกันของค่ามากกว่าความเท่าเทียมกันอ้างอิง ดูเหมือนว่าสำหรับฉันแล้วมันจะง่ายกว่านี้หากภาษาอนุญาตให้เปรียบเทียบค่าสตริงโดยใช้ == จากการเปรียบเทียบตัวดำเนินการ == ของ C # จะตรวจสอบความเท่าเทียมกันของค่าสำหรับสตริง s และถ้าคุณต้องการตรวจสอบความเท่าเทียมกันของการอ้างอิงคุณสามารถใช้ String.ReferenceEquals อีกจุดสำคัญคือสตริงไม่เปลี่ยนรูปดังนั้นจึงไม่มีอันตรายใด ๆ ที่จะทำโดยอนุญาตให้ใช้คุณลักษณะนี้ มีเหตุผลใดเป็นพิเศษหรือไม่ที่สิ่งนี้ไม่ได้นำไปใช้ใน Java?

4
Entity Framework พร้อมระบบขนาดใหญ่ - จะแบ่งรุ่นอย่างไร
ฉันทำงานกับฐานข้อมูล SQL Server ที่มีมากกว่า 1,000 ตารางและอีกไม่กี่ร้อยครั้งและขั้นตอนที่เก็บไว้หลายพันรายการ เรากำลังมองหาที่จะเริ่มใช้ Entity Framework สำหรับโครงการใหม่ของเราและเรากำลังทำงานกับกลยุทธ์ของเราในการทำเช่นนั้น สิ่งที่ฉันวางสายคือวิธีที่ดีที่สุดในการแบ่งตารางออกเป็นรุ่นที่แตกต่างกัน (EDMX หรือ DbContext ถ้าเราใช้รหัสก่อน) ฉันสามารถนึกถึงกลยุทธ์บางอย่างได้ทันทีจากค้างคาว: แยกตามสคีมา เรามีตารางของเราแบ่งออกเป็นสกีมาโหล เราสามารถทำหนึ่งแบบต่อสคีมา แม้ว่ามันจะไม่สมบูรณ์แบบก็ตามเนื่องจาก dbo ยังคงมีขนาดใหญ่มากพร้อมกับ 500+ ตาราง / มุมมอง ปัญหาอีกประการหนึ่งคือหน่วยงานบางอย่างจะจบลงด้วยการทำธุรกรรมที่ครอบคลุมหลายรุ่นซึ่งเพิ่มความซับซ้อนแม้ว่าฉันจะถือว่า EF ทำให้ตรงไปตรงมา แยกตามเจตนา แทนที่จะกังวลเกี่ยวกับสกีมาแบ่งโมเดลตามเจตนา ดังนั้นเราจะมีรูปแบบที่แตกต่างกันสำหรับแต่ละแอปพลิเคชันหรือโครงการหรือโมดูลหรือหน้าจอขึ้นอยู่กับวิธีที่เราต้องการได้รับเม็ด ปัญหาที่ฉันเห็นด้วยคือมีบางตารางที่จำเป็นต้องใช้ในทุกกรณีเช่น User หรือ AuditHistory อย่างหลีกเลี่ยงไม่ได้ เราเพิ่มสิ่งเหล่านั้นในทุกรุ่น (ละเมิด DRY ที่ฉันคิด) หรือเป็นรูปแบบแยกต่างหากที่ใช้โดยทุกโครงการหรือไม่ อย่าแยกเลย - โมเดลยักษ์ตัว นี้เห็นได้ชัดว่าง่ายจากมุมมองการพัฒนา แต่จากการวิจัยของฉันและสัญชาตญาณของฉันดูเหมือนว่ามันจะทำงานได้อย่างยอดเยี่ยมทั้งในเวลาออกแบบระยะเวลาการคอมไพล์และเวลาทำงาน วิธีที่ดีที่สุดในการใช้ EF กับฐานข้อมูลขนาดใหญ่เช่นนี้คืออะไร? …

8
การแย่งชิง - วิธีการนำเรื่องราวของผู้ใช้ที่สมบูรณ์บางส่วนไปยัง Sprint ถัดไปโดยไม่บิดเบือนการค้าง
เราใช้ Scrum และบางครั้งพบว่าเราไม่สามารถทำเรื่องราวของผู้ใช้ให้จบได้ในการวิ่งที่วางแผนไว้ ในรูปแบบการต่อสู้ที่แท้จริงเราจัดส่งซอฟต์แวร์ต่อไปและพิจารณารวมเรื่องของผู้ใช้ในการวิ่งครั้งต่อไปในช่วงการวางแผน Sprint ถัดไป เนื่องจากเรื่องราวของผู้ใช้ที่เรากำลังดำเนินการอยู่นั้นเสร็จสมบูรณ์บางส่วนเราจะประเมินได้อย่างถูกต้องในเซสชันการวางแผน Sprint ครั้งถัดไปอย่างไร เราได้พิจารณาแล้ว: a) การปรับจำนวนคะแนนสตอรี่ลงเพื่อแสดงเฉพาะงานที่ยังคงทำให้เรื่องราวของผู้ใช้เสร็จสมบูรณ์ น่าเสียดายที่สิ่งนี้จะทำให้การรายงาน Backlog ผลิตภัณฑ์ล้มเหลว b) ปิดเรื่องราวของผู้ใช้ที่เสร็จสมบูรณ์บางส่วนและเพิ่มใหม่เพื่อใช้งานคุณสมบัติที่เหลือซึ่งจะมีคะแนนเรื่องราวน้อยลง สิ่งนี้จะส่งผลต่อความสามารถในการมองย้อนกลับไปในสิ่งที่เราไม่ได้ทำในการวิ่งครั้งนั้นและดูเหมือนจะใช้เวลานาน c) ไม่ต้องกังวลกับ a หรือ b และคาดเดาต่อไปในระหว่างการวางแผน Sprint ว่าสิ่งต่าง ๆ เช่น "เรื่องราวของผู้ใช้อาจเป็นจุดเรื่องราว X แต่ฉันรู้ว่ามันเสร็จ 95% ดังนั้นฉันแน่ใจว่าเราสามารถใส่ได้"

8
ประเด็นเรื่องการแก้ไขข้อผิดพลาด: เหมาะสำหรับการต่อสู้หรือไม่?
ฉันแค่สงสัยว่าเราควรกำหนดเรื่องให้กับงานซ่อมบั๊กหรือไม่ JIRA ซึ่งเป็นซอฟต์แวร์ติดตามปัญหาของเราไม่มีฟิลด์จุดเรื่องราวสำหรับปัญหาประเภทBug (เฉพาะสำหรับStory s และEpicเท่านั้น) เราควรเพิ่มประเภทของปัญหาBugไปยังประเภทของปัญหาที่เกี่ยวข้องในฟิลด์Story Pointsหรือไม่ ข้อดีและข้อเสียคืออะไร? มันจะเหมาะสำหรับการต่อสู้แย่งชิงกันหรือไม่
50 agile  scrum  bug  user-story 

9
ข้อความคอมไพล์ควรพูดถึงไฟล์ที่ถูกแก้ไขหรือไม่
ในบรรทัดแรกของข้อความคอมมิทคอมมิตฉันมีนิสัยพูดถึงไฟล์ที่แก้ไขหากการเปลี่ยนแปลงไม่ครอบคลุมหลายไฟล์ตัวอย่างเช่น: Add [somefunc] to [somefile] นี่เป็นสิ่งที่ดีที่จะทำหรือไม่จำเป็น?
50 git 

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

7
การเขียนโปรแกรมกับกลุ่มคนที่ฉันไม่เคยพบมาก่อน
ฉันได้รับมอบหมายโครงการกลุ่มจากวิชาวิทยาการคอมพิวเตอร์ AP ของฉันและฉันต้องทำงานกับคนอื่นอีกสามคน ฉันไม่เคยพูดคุยกับพวกเขามาก่อนฉันไม่ทราบระดับความสามารถของพวกเขาและทั้งหมดที่ฉันมีคือที่อยู่อีเมลของพวกเขา งานที่ได้รับการสรุปรวมคือ: "ในฐานะทีมคุณจะต้องทำหน่วยความจำอย่างน้อยสามหน่วยเป็นคลาส ... " ฉันจะลองและกลายเป็น "กัปตันทีม" เพราะไม่มีใครพยายามติดต่อกัน แต่ฉันอยากรู้: จะทำยังไงดี ฉันได้ส่งอีเมลพวกเขาและถามพวกเขาว่ามีวิธีการสื่อสารที่พวกเขาต้องการมากกว่าการส่งอีเมลถึงกันหรือไม่ แต่เมื่อเราเริ่มโครงการจริง ๆ แล้วฉันจะต้องคิดออกว่าใครกำลังทำอะไรอยู่ ฉันควรทำอย่างไร? ฉันจะ "รับผิดชอบ" และนำสามคนที่ฉันไม่เคยพบมาได้อย่างไร นี่คือข้อความที่ตัดตอนมาจากการมอบหมายจริง: ดังนั้นคุณจะต้องหารือเกี่ยวกับบทบาทต่างๆที่สมาชิกแต่ละคนในทีมจะใช้ในโครงการนี้ในช่วงต้นสัปดาห์ คุณสามารถสื่อสารผ่าน Pronto (หรือ IM กระดานดำ) อีเมล wiki กลุ่ม google บล็อกหรือวิธีอื่น ๆ ที่คุณเห็นว่าเหมาะสม หากสมาชิกกลุ่มไม่เข้าร่วมกลุ่มภายในสิ้นสัปดาห์ให้ผู้สอนของคุณทราบและพวกเขาจะให้คำแนะนำเพิ่มเติม ... เนื่องจากในตอนท้ายของโครงการจะเป็นการประเมินทีมที่คุณจะให้คะแนนสมาชิกในทีมแต่ละคนที่มีส่วนช่วยในการทำโครงการนี้ให้เสร็จพร้อมกับเกรดที่แนะนำ แก้ไข: หลายคนแนะนำว่าฉันพบพวกเขาในร้านกาแฟหรืออะไรทำนองนั้น ปัญหาเดียวก็คือพวกเราทุกคนอยู่ในสถานะที่แตกต่างกัน ฉันคิดว่าหนึ่งในนั้นไม่ได้รับอนุญาตให้ใช้ Facebook / Skype / twitter ดังนั้นฉันจึงต้องหันไปใช้การส่งข้อความผ่าน yahoo messenger …

7
ฉันไม่ใช่โปรแกรมเมอร์ที่ดี (ในเชิงตรรกะ) ฉันจะแก้ไขได้อย่างไร [ปิด]
ตกลงดังนั้นนี่คือปัญหาของฉัน: ฉันทำงานให้กับ บริษัท ใหญ่บางแห่งมีงานทำอย่างไร (ตรงไปตรงมาเพราะการสัมภาษณ์เป็นเรื่องง่าย) ไม่ใช่ว่าฉันไม่รู้เรื่องของฉันฉันเข้าใจ Java เป็นอย่างดีมันเป็นห้องสมุด ฯลฯ แต่เมื่อฉันพยายามที่จะแก้ปัญหาตรรกะบางอย่างฉันก็พบว่ามันยากที่จะหาวิธีแก้ปัญหา ตัวอย่างเช่นconversion of decimal to romanเมื่อฉันเห็นวิธีแก้ปัญหาฉันพบว่ามันเป็นปัญหาง่ายๆ แต่ฉันไม่สามารถใช้งานได้หลังจากผ่านไป 1-2 ชั่วโมง! ฉันรู้สึกว่าฉันโง่และไม่คุ้มที่จะเป็นวิศวกรซอฟต์แวร์ ความสามารถในการแก้ปริศนาควรมาจากโปรแกรมที่ยอดเยี่ยม แต่เมื่อฉันพยายามที่จะไขปริศนาบางอย่างฉันไม่สามารถหาทางแก้ปัญหาได้และฉันแค่ google ทำมันให้ได้! .... และฉันก็เกลียดมัน! เมื่อได้รับปัญหา (เช่นใช้งานคุณสมบัติ xyz) ในที่ทำงานฉันค่อนข้างเร็วในเรื่องนี้และเคารพในสถานที่ทำงานของฉันสำหรับเรื่องนั้น แต่ฉันไม่ได้ภูมิใจในเรื่องนี้เลย เพราะเมื่อฉันพยายามที่จะแก้ปัญหาทางคณิตศาสตร์หรือตรรกะปัญหาท้าทายที่ชาญฉลาดฉันคลำหา ฉันยังรู้สึกว่าฉันรักสิ่งที่ฉันทำ (เป็นวิศวกร) แต่รู้สึกเศร้าจริง ๆ ที่ฉันไม่สามารถแก้ปัญหาตรรกะที่ยากลำบากบางอย่างที่เพื่อนของฉันคิดขึ้นมาได้ ฉันรู้สึกขวัญเสีย :( TL: DR: ฉันเข้าใจสิ่งต่าง ๆ จากมุมมองที่ใช้งานได้จริง (การนำคุณลักษณะไปใช้ในผลิตภัณฑ์ของเรา) แต่เมื่อพยายามแก้ไขปัญหาจากการพูดว่า ProjectEuler ฉันรู้สึกแย่มาก! และฉันต้องลับสมองของฉัน! ดังนั้นคำถามของฉันคือ: ฉันจะแก้ไขได้อย่างไร …

5
การจัดระเบียบที่เก็บ Git ด้วยโมดูลย่อยที่ซ้อนกันทั่วไป
ฉันเป็นแฟนตัวยงของGit ย่อยโมดูล ฉันชอบที่จะสามารถติดตามการพึ่งพาพร้อมกับเวอร์ชันเพื่อให้คุณสามารถย้อนกลับไปเป็นเวอร์ชันก่อนหน้าของโครงการของคุณและมีเวอร์ชันที่สอดคล้องกันของการพึ่งพาเพื่อสร้างอย่างปลอดภัยและเรียบร้อย ยิ่งไปกว่านั้นมันง่ายกว่าที่จะปล่อยไลบรารี่ของเราเป็นโครงการโอเพ่นซอร์สเนื่องจากประวัติของไลบรารี่นั้นแยกจากแอพพลิเคชั่นที่ขึ้นอยู่กับพวกมัน ฉันกำลังตั้งค่าเวิร์กโฟลว์สำหรับหลายโครงการในที่ทำงานและฉันสงสัยว่ามันจะเป็นอย่างไรถ้าเราใช้วิธีนี้แบบสุดขั้วแทนที่จะมีโครงการเสาหินเดียว ฉันรู้อย่างรวดเร็วมีความสามารถที่มีศักยภาพของเวิร์มในจริงๆโดยใช้โมดูลย่อย เผื่อว่าคู่ของการใช้งาน: studioและplayerและขึ้นอยู่กับห้องสมุดcore, graphและnetworkที่อ้างอิงมีดังนี้ core เป็นแบบสแตนด์อโลน graphขึ้นอยู่กับcore(โมดูลย่อยที่./libs/core) networkdepdends on core(โมดูลย่อยที่./libs/core) studioขึ้นอยู่กับgraphและnetwork(โมดูลย่อยที่./libs/graphและ./libs/network) playerขึ้นอยู่กับgraphและnetwork(โมดูลย่อยที่./libs/graphและ./libs/network) สมมติว่าเรากำลังใช้CMakeและแต่ละโครงการเหล่านี้มีการทดสอบหน่วยและงานทั้งหมด แต่ละโครงการ (รวมถึงstudioและplayer) จะต้องสามารถรวบรวมได้แบบสแตนด์อโลนเพื่อดำเนินการวัดรหัสการทดสอบหน่วย ฯลฯ สิ่งที่เป็นแบบเรียกซ้ำgit submodule fetchแล้วคุณจะได้รับโครงสร้างไดเรกทอรีต่อไปนี้: studio/ studio/libs/ (sub-module depth: 1) studio/libs/graph/ studio/libs/graph/libs/ (sub-module depth: 2) studio/libs/graph/libs/core/ studio/libs/network/ studio/libs/network/libs/ (sub-module depth: 2) studio/libs/network/libs/core/ ขอให้สังเกตว่าcoreถูกโคลนสองครั้งในstudioโครงการ นอกเหนือจากพื้นที่ดิสก์นี้เสียผมมีปัญหาการสร้างระบบเพราะผมกำลังสร้างcoreสองครั้งและผมอาจจะได้รับสองรุ่นต่าง ๆ coreของ คำถาม ฉันจะจัดระเบียบโมดูลย่อยเพื่อให้ได้รับการอ้างอิงเวอร์ชันและบิลด์แบบสแตนด์อโลนโดยไม่ได้รับสำเนาย่อยของโมดูลย่อยทั่วไปหลาย ๆ ชุดได้อย่างไร …
50 git  cmake  submodules 

3
ทำไมข้อกำหนดข้อยกเว้นไม่ดี?
ย้อนกลับไปที่โรงเรียนเมื่อ 10 ปีก่อนพวกเขาสอนให้คุณใช้เครื่องมือระบุข้อยกเว้น เนื่องจากพื้นหลังของฉันเป็นหนึ่งในนั้นโปรแกรมเมอร์ Torvaldish C ที่หลีกเลี่ยงการดื้อ C ++ ยกเว้นว่าถูกบังคับให้ฉันลงเอยด้วยการใช้ C ++ เป็นระยะ ๆ และเมื่อฉันยังคงใช้ตัวระบุข้อยกเว้นเนื่องจากนั่นคือสิ่งที่ฉันได้รับการสอน อย่างไรก็ตามโปรแกรมเมอร์ C ++ ส่วนใหญ่ดูเหมือนจะขมวดคิ้วเมื่อตัวระบุข้อยกเว้น ฉันได้อ่านการอภิปรายและข้อโต้แย้งต่าง ๆ จาก C ++ ผู้เชี่ยวชาญด้านการเช่นนี้ เท่าที่ฉันเข้าใจมันเดือดลงถึงสามสิ่ง: ตัวระบุข้อยกเว้นใช้ระบบชนิดที่ไม่สอดคล้องกับภาษาที่เหลือ ("ระบบชนิดเงา") หากฟังก์ชั่นของคุณที่มีตัวระบุข้อยกเว้นมีข้อผิดพลาดอื่นใดนอกจากสิ่งที่คุณได้ระบุไว้โปรแกรมจะถูกยกเลิกในรูปแบบที่ไม่ดีและไม่คาดคิด ตัวระบุข้อยกเว้นจะถูกลบออกในมาตรฐาน C ++ ที่กำลังจะมาถึง ฉันพลาดอะไรบางอย่างที่นี่หรือนี่คือเหตุผลทั้งหมดเหรอ? ความคิดเห็นของฉัน: เกี่ยวกับ 1): แล้วอะไรล่ะ C ++ อาจเป็นภาษาการเขียนโปรแกรมที่ไม่สอดคล้องกันมากที่สุดที่เคยมีมา เรามีมาโคร, goto / label, horde (hoard?) ของพฤติกรรมที่ไม่ได้กำหนด - / …

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

5
เมื่อใดที่คุณไม่ควรใช้นิพจน์ปกติ [ปิด]
นิพจน์ทั่วไปเป็นเครื่องมือที่มีประสิทธิภาพในคลังแสงของโปรแกรมเมอร์ แต่มีบางกรณีที่ไม่ใช่ตัวเลือกที่ดีที่สุดหรือแม้แต่เป็นอันตรายทันที ตัวอย่างง่ายๆ # 1 คือการแยกวิเคราะห์ HTML ด้วย regexpซึ่งเป็นถนนที่รู้จักกันดีในข้อบกพร่องมากมาย อาจเป็นเช่นนี้ยังมีคุณสมบัติในการแยกโดยทั่วไป แต่มีพื้นที่อื่นที่ไม่ต้องไปสำหรับการแสดงผลปกติหรือไม่? ป.ล. : " คำถามที่คุณถามปรากฏเป็นเรื่องส่วนตัวและมีแนวโน้มที่จะถูกปิด " - ดังนั้นฉันต้องการเน้นย้ำว่าฉันสนใจตัวอย่างที่ทราบว่าการใช้ regexps ก่อให้เกิดปัญหา

1
วิธีที่ดีที่สุดในการรวมไฟล์ JavaScript โดยใช้แท็กสคริปต์คืออะไร
ฉันมักจะรวมไฟล์ JavaScript โดยใช้แท็กสคริปต์ดังต่อไปนี้ <script type="text/javascript" src="somefile.js"></script> ฉันเคยเห็นบางคนใช้คุณสมบัติภาษาเช่นกัน วันนี้ฉันพบว่ามีคนจำนวนมากที่ไม่ใช้แอตทริบิวต์ type ฉันเริ่มรู้สึกว่าถ้าจาวาสคริปต์เป็นภาษาสคริปต์เริ่มต้นแล้วฉันก็ควรละเว้นคุณสมบัติประเภท การละเว้นแอตทริบิวต์ประเภทจะดีหรือไม่ มันจะทำให้เกิดปัญหาใด ๆ ?
50 javascript 

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