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

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

7
ในทางปฏิบัติเก้าสิบเก้า
90 เปอร์เซ็นต์แรกของรหัสบัญชีสำหรับ 90 เปอร์เซ็นต์แรกของเวลาในการพัฒนา ส่วนที่เหลืออีก 10 เปอร์เซ็นต์ของรหัสบัญชีคิดเป็น 90 เปอร์เซ็นต์ของเวลาในการพัฒนา - Tom Cargill, Bell Labs ในทางปฏิบัติหมายความว่าอย่างไร โปรแกรมเมอร์รายนั้นทำงานเป็นกอบเป็นกำและพวกเขาให้ผลประโยชน์ 180% หรือ?

7
ควรหลีกเลี่ยง STL ในแอปพลิเคชันขนาดใหญ่หรือไม่
นี่อาจฟังดูเป็นคำถามแปลก ๆ แต่ในแผนกของฉันเรากำลังมีปัญหากับสถานการณ์ต่อไปนี้: เรากำลังทำงานที่นี่ในแอปพลิเคชันเซิร์ฟเวอร์ซึ่งกำลังขยายใหญ่ขึ้นเรื่อย ๆ แม้ในจุดที่เรากำลังพิจารณาที่จะแบ่งออกเป็นส่วนต่าง ๆ (ไฟล์ DLL) การโหลดแบบไดนามิกเมื่อจำเป็นและการขนถ่ายในภายหลังเพื่อให้สามารถจัดการได้ ปัญหาด้านประสิทธิภาพ แต่: ฟังก์ชั่นที่เราใช้กำลังผ่านพารามิเตอร์อินพุตและเอาต์พุตเป็นวัตถุ STL และตามที่กล่าวไว้ในคำตอบ Stack Overflowนี่เป็นความคิดที่แย่มาก (โพสต์นั้นมีวิธีแก้ปัญหาและแฮ็กบางอย่าง แต่ทั้งหมดนั้นดูไม่ค่อยจะแข็งนัก) เห็นได้ชัดว่าเราสามารถแทนที่พารามิเตอร์อินพุต / เอาต์พุตด้วยประเภท C ++ มาตรฐานและสร้างวัตถุ STL จากสิ่งที่อยู่ภายในฟังก์ชั่น แต่สิ่งนี้อาจทำให้ประสิทธิภาพลดลง สรุปว่าในกรณีที่คุณกำลังพิจารณาที่จะสร้างแอพพลิเคชั่นซึ่งอาจมีขนาดใหญ่ขึ้นซึ่งพีซีเครื่องเดียวไม่สามารถจัดการได้อีกต่อไปคุณจะต้องไม่ใช้ STL เป็นเทคโนโลยีเลย? พื้นหลังเพิ่มเติมเกี่ยวกับคำถามนี้: ดูเหมือนจะมีความเข้าใจผิดเกี่ยวกับคำถาม: ปัญหาคือสิ่งต่อไปนี้: แอปพลิเคชันของฉันใช้ประสิทธิภาพจำนวนมาก (CPU, หน่วยความจำ) ในการทำงานให้เสร็จและฉันต้องการแยกงานนี้ ออกเป็นส่วนต่าง ๆ (เนื่องจากโปรแกรมถูกแบ่งออกเป็นหลาย ๆ ฟังก์ชั่นแล้ว) มันไม่ยากเลยที่จะสร้าง DLLs ออกจากแอปพลิเคชั่นของฉันและวางฟังก์ชั่นบางอย่างในตารางการส่งออกของ DLL เหล่านั้น สิ่งนี้จะส่งผลในสถานการณ์ต่อไปนี้: +-----------+-----------+---- …
24 c++  stl 

4
การจัดการข้อยกเว้นสไตล์การทำงาน
ฉันได้รับการบอกว่าในการเขียนโปรแกรมทำงานไม่ควรโยนและ / หรือสังเกตข้อยกเว้น ควรคำนวณการคำนวณที่ผิดพลาดแทนค่าล่าง ในภาษาไพ ธ อน (หรือภาษาอื่นที่ไม่สนับสนุนการเขียนโปรแกรมเชิงฟังก์ชันอย่างสมบูรณ์) เราสามารถส่งคืนNone(หรืออีกทางเลือกหนึ่งที่ถือว่าเป็นค่าที่ต่ำที่สุด แต่Noneไม่ปฏิบัติตามคำจำกัดความอย่างเคร่งครัด) เมื่อใดก็ตามที่บางสิ่งผิดปกติ ดังนั้นหนึ่งจะต้องสังเกตข้อผิดพลาดในสถานที่แรกคือ def fn(*args): try: ... do something except SomeException: return None สิ่งนี้เป็นการละเมิดความบริสุทธิ์หรือไม่ และถ้าเป็นเช่นนั้นหมายความว่าเป็นไปไม่ได้ที่จะจัดการกับข้อผิดพลาดใน Python อย่างแท้จริงหรือไม่? ปรับปรุง ในความคิดเห็นของเขา Eric Lippert ทำให้ฉันนึกถึงอีกวิธีหนึ่งในการรักษาข้อยกเว้นใน FP แม้ว่าฉันจะไม่เคยเห็นแบบนั้นใน Python ในทางปฏิบัติ แต่ฉันก็เล่นกับมันเมื่อฉันศึกษา FP เมื่อปีที่แล้ว optionalฟังก์ชันใด ๆ-decorated จะส่งคืนOptionalค่าซึ่งสามารถว่างได้สำหรับเอาต์พุตปกติเช่นเดียวกับรายการข้อยกเว้นที่ระบุ (ข้อยกเว้นที่ไม่ระบุยังคงสามารถยุติการดำเนินการได้) Carryสร้างการประเมินผลที่ล่าช้าซึ่งแต่ละขั้นตอน (ล่าช้าเรียกฟังก์ชัน) อย่างใดอย่างหนึ่งได้รับการว่างเอาท์พุทจากขั้นตอนก่อนและก็ผ่านมันบนหรือประเมินตัวเองผ่านใหม่Optional ในตอนท้ายของค่าสุดท้ายเป็นเรื่องปกติหรือไม่Optional Emptyนี่คือtry/exceptบล็อกที่ซ่อนอยู่หลังมัณฑนากรดังนั้นข้อยกเว้นที่ระบุสามารถถือได้ว่าเป็นส่วนหนึ่งของลายเซ็นประเภทส่งคืน class Empty: def …

2
การกรองลูป foreach ด้วยเงื่อนไขที่ vs clause ต่อไป
ฉันเห็นโปรแกรมเมอร์บางคนใช้สิ่งนี้: foreach (var item in items) { if (item.Field != null) continue; if (item.State != ItemStates.Deleted) continue; // code } แทนที่จะใช้ที่ฉันปกติ: foreach (var item in items.Where(i => i.Field != null && i.State != ItemStates.Deleted)) { // code } ฉันเคยเห็นการรวมกันของทั้งสอง ฉันชอบการอ่านด้วยคำว่า 'ดำเนินการต่อ' โดยเฉพาะอย่างยิ่งกับเงื่อนไขที่ซับซ้อน มีความแตกต่างในประสิทธิภาพหรือไม่ ด้วยแบบสอบถามฐานข้อมูลฉันสมมติว่าจะมี สิ่งที่เกี่ยวกับรายการปกติ?

6
ความสามารถในการอ่านเป็นเหตุผลที่ถูกต้องหรือไม่ที่จะไม่ใช้พารามิเตอร์ const in (การอ้างอิง)
เมื่อเขียนฟังก์ชั่นบางอย่างฉันพบคำสำคัญ const ในพารามิเตอร์ดังนี้: void MyClass::myFunction(const MyObject& obj,const string& s1,const string& s2,const string& s3){ } มักทำให้เกิดการแบ่งบรรทัดออกเป็น 2 บรรทัดใน IDE หรือ vim ดังนั้นฉันต้องการลบคำหลัก const ทั้งหมดในพารามิเตอร์: void MyClass::myFunction(MyObject& obj,string& s1,string& s2,string& s3){ } นั่นเป็นเหตุผลที่ถูกต้องหรือไม่ที่จะไม่ใช้ const? มันสามารถบำรุงรักษาเพื่อให้วัตถุพารามิเตอร์ไม่เปลี่ยนแปลงด้วยตนเอง?

6
ทำไมคุณจะ 'รอ' วิธีการแล้วถามค่าส่งคืนทันที
ในบทความ MSDN นี้มีการให้รหัสตัวอย่างต่อไปนี้ (แก้ไขเล็กน้อยเพื่อความกะทัดรัด): public async Task<ActionResult> Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Department department = await db.Departments.FindAsync(id); if (department == null) { return HttpNotFound(); } return View(department); } FindAsyncวิธีการดึงDepartmentวัตถุโดยใช้ ID Task<Department>ของตนและผลตอบแทน จากนั้นแผนกจะถูกตรวจสอบทันทีเพื่อดูว่าเป็นโมฆะหรือไม่ ตามที่ฉันเข้าใจแล้วการขอค่าของภารกิจในลักษณะนี้จะบล็อกการเรียกใช้โค้ดจนกว่าจะส่งคืนค่าจากเมธอดที่รอคอยซึ่งส่งคืนการโทรแบบซิงโครนัสอย่างมีประสิทธิภาพ ทำไมคุณถึงทำเช่นนี้? มันจะง่ายกว่าFind(id)ไหมถ้าจะเรียกวิธีการซิงโครนัสถ้าคุณจะบล็อกทันทีล่ะ?
24 c#  .net  asp.net-mvc  async 

9
ฉันสามารถละเว้นคำสั่งไบต์ในระบบเครือข่ายได้อย่างปลอดภัยหรือไม่?
ฉันกำลังพัฒนาแอปพลิเคชันไคลเอนต์เซิร์ฟเวอร์ที่ไคลเอนต์จะทำงานบน Windows และเซิร์ฟเวอร์อาจอยู่บน Linux บางทีฉันจะย้ายพอร์ตไคลเอ็นต์ไปยัง Mac และ Linux ในภายหลัง แต่ยังไม่เสร็จ คอมพิวเตอร์ที่ใช้ในบ้านทุกวันนี้ใช้งานได้บนเครื่องเอนเดิ้ล ฉันไปสักพักหนึ่ง แต่ฉันไม่พบรายการอุปกรณ์ที่ทำงานบนเครื่องใหญ่ เท่าที่ฉันรู้ชิพ Motorola บางตัวยังคงใช้โทรศัพท์ขนาดใหญ่และอาจเป็นโทรศัพท์บางรุ่น (ฉันไม่ได้วางแผนที่จะย้ายแอพไปยังสมาร์ทโฟนดังนั้นจึงไม่สำคัญสำหรับฉัน) ดังนั้นทำไมฉันจึงจัดเรียงไบต์ของจำนวนเต็มทุกตัวทุกตัวย่อทุกตัวคูณคู่และอื่น ๆ สำหรับการอ่านและการเขียนเมื่อฉันรู้แล้วว่าทั้งเซิร์ฟเวอร์และไคลเอนต์ทำงานบนเอนเดเนี่ยนน้อย นั่นเป็นเพียงงานที่ไม่จำเป็นที่ต้องทำ ดังนั้นคำถามของฉันคือ: ฉันสามารถเพิกเฉยต่อความปลอดภัยและส่งข้อมูลแบบ end-endian ได้อย่างปลอดภัยหรือไม่ อะไรคือข้อเสีย?

5
วิธีการสร้างแบบจำลองการอ้างอิงแบบวงกลมระหว่างวัตถุที่ไม่เปลี่ยนรูปใน C #?
ในตัวอย่างโค้ดต่อไปนี้เรามีคลาสสำหรับวัตถุที่ไม่เปลี่ยนรูปซึ่งแสดงถึงห้อง ทิศเหนือทิศใต้ทิศตะวันออกและทิศตะวันตกเป็นตัวแทนออกไปสู่ห้องอื่น public sealed class Room { public Room(string name, Room northExit, Room southExit, Room eastExit, Room westExit) { this.Name = name; this.North = northExit; this.South = southExit; this.East = eastExit; this.West = westExit; } public string Name { get; } public Room North { get; } public Room South …

10
พารามิเตอร์ในการควบคุมว่าจะโยนข้อยกเว้นหรือส่งคืน null - แนวปฏิบัติที่ดี?
ฉันมักจะเจอวิธีการ / ฟังก์ชั่นที่มีพารามิเตอร์บูลีนเพิ่มเติมซึ่งควบคุมว่าข้อยกเว้นจะถูกโยนออกมาเมื่อความล้มเหลวหรือกลับมาเป็นโมฆะ มีการพูดคุยกันแล้วว่าตัวเลือกใดดีกว่ากันในกรณีนี้ดังนั้นอย่าไปสนใจที่นี่ ดูเช่นคืนค่าเวทย์มนตร์โยนข้อยกเว้นหรือคืนเท็จเมื่อล้มเหลว ให้เราสมมติว่ามีเหตุผลที่ดีว่าทำไมเราต้องการสนับสนุนทั้งสองวิธี โดยส่วนตัวแล้วฉันคิดว่าวิธีการดังกล่าวควรแยกออกเป็นสองส่วน: วิธีหนึ่งที่ทำให้เกิดข้อยกเว้นในความล้มเหลวอีกวิธีหนึ่งที่ส่งกลับค่า null เมื่อล้มเหลว ดังนั้นจะดีกว่ากัน? ตอบ: วิธีการหนึ่งที่มี$exception_on_failureพารามิเตอร์ /** * @param int $id * @param bool $exception_on_failure * * @return Item|null * The item, or null if not found and $exception_on_failure is false. * @throws NoSuchItemException * Thrown if item not found, and $exception_on_failure is …
24 exceptions 

10
มันเป็นรูปแบบการต่อต้านถ้าทรัพย์สินชั้นสร้างและส่งกลับตัวอย่างใหม่ของชั้นเรียนหรือไม่?
ฉันมีคลาสที่เรียกHeadingว่าทำสิ่งเล็ก ๆ น้อย ๆ แต่ก็ควรที่จะสามารถคืนค่าตรงกันข้ามกับค่าหัวเรื่องปัจจุบันซึ่งในที่สุดจะต้องใช้ผ่านการสร้างอินสแตนซ์ใหม่ของHeadingคลาสเอง ฉันสามารถมีคุณสมบัติแบบง่าย ๆ ที่เรียกว่าreciprocalให้ส่งคืนหัวเรื่องตรงข้ามของค่าปัจจุบันจากนั้นสร้างอินสแตนซ์ใหม่ของคลาสหัวเรื่องด้วยตนเองหรือฉันสามารถสร้างวิธีที่ต้องการcreateReciprocalHeading()สร้างอินสแตนซ์ใหม่ของคลาสหัวเรื่องโดยอัตโนมัติ ผู้ใช้งาน อย่างไรก็ตามหนึ่งในเพื่อนร่วมงานของฉันแนะนำให้ฉันเพียงแค่สร้างคุณสมบัติคลาสที่เรียกreciprocalว่าคืนค่าอินสแตนซ์ใหม่ของคลาสเองผ่านเมธอด getter คำถามของฉันคือ: มันเป็นรูปแบบต่อต้านหรือไม่สำหรับคุณสมบัติของคลาสที่จะทำเช่นนั้น? ฉันพบว่ามันใช้งานง่ายน้อยลงเพราะ: ในใจของฉันคุณสมบัติของคลาสไม่ควรส่งคืนอินสแตนซ์ใหม่ของคลาสและ ชื่อของคุณสมบัติซึ่งreciprocalไม่ได้ช่วยให้นักพัฒนาสามารถเข้าใจพฤติกรรมของมันได้อย่างสมบูรณ์โดยไม่ได้รับความช่วยเหลือจาก IDE หรือตรวจสอบลายเซ็นของ getter ฉันเข้มงวดเกินไปเกี่ยวกับคุณสมบัติของคลาสที่ควรทำหรือเป็นข้อกังวลที่ถูกต้อง? ฉันพยายามจัดการสถานะของคลาสผ่านฟิลด์และคุณสมบัติของมันตลอดจนพฤติกรรมของมันผ่านวิธีการของมันและฉันล้มเหลวในการดูว่าสิ่งนี้เหมาะกับนิยามของคลาสของคุณสมบัติอย่างไร

8
มันจะไม่เป็นประโยชน์ในการเขียนการทดสอบระหว่างการตรวจสอบรหัส?
เพื่อนร่วมงานของฉันเกิดขึ้นกับความคิดที่ฉันพบว่าน่าสนใจ มันจะไม่เป็นประโยชน์ในการเขียนการทดสอบในระหว่างการตรวจสอบโค้ดโดยผู้ที่ทำการตรวจสอบโดยสมมติว่าเราไม่ได้ทำ TDD? สำหรับคำถามนี้สมมติว่านี่เป็นโครงการทางวิชาการล้วนๆไม่มีชีวิตที่จะเสี่ยง ยิ่งกว่านั้นทีมคือ 4 คน ทุกคนรู้ภาษาและคุ้นเคยกับเครื่องมือ / ไลบรารี / กรอบงานทั้งหมดที่ใช้และสามารถเขียนแบบทดสอบได้ โดยทั่วไปแล้วคนที่ไม่ได้เป็นหัวหน้าเต็มสแต็คนำทีมวิศวกรนินจา แต่เป็นนักเขียนโค้ดที่ดี ข้อดีที่ฉันพบ: ส่งเสริมความเข้าใจที่ลึกซึ้งยิ่งขึ้นของรหัสระหว่างการทบทวนเพื่อเขียนการทดสอบที่มีความหมาย จากนั้นคุณสามารถเพิ่มการตรวจสอบโค้ดของการทดสอบเหล่านั้นโดยผู้เขียนโค้ดที่จะทดสอบ ข้อเสียฉันพบ: ข้อเสนอแนะวนซ้ำระหว่างการเขียนโค้ดและการทดสอบเพิ่มขึ้น แก้ไข: ฉันรู้ว่ามันจะไม่ทำงานได้ดีกับเว็บแอปพลิเคชัน "ปกติ" สิ่งที่ฉันมีอยู่ในใจคือกรณีมุมที่คุณใช้อัลกอริทึมทางวิทยาศาสตร์ที่ซับซ้อน สมมติว่ามีบางอย่างเช่นการใช้ไลบรารี่กราฟของตัวเอง NLP ฯลฯ ฉันสงสัยว่ารหัสที่เราเขียนนั้นแยกจากฐานข้อมูลและยากมากที่จะเข้าใจว่าจะไม่เพิ่มระดับการควบคุมอีกคนที่ต้องการเข้าใจแหล่งที่มา โค้ดและทำการทดสอบที่มีความหมายทำให้กระบวนการทั้งหมดมีความเป็นไปได้ที่จะเกิดข้อบกพร่องน้อยลงอย่างเห็นได้ชัดซึ่งไม่ทำให้แอปพลิเคชันเสียหาย แต่ในที่สุดก็ทำให้ผลลัพธ์ของคุณเป็นขยะ

9
การฉีดพึ่งพา: ฉันควรใช้กรอบ?
ฉันเพิ่งทำงานกับโครงการ Python ที่เราทำการฉีดอย่างหนัก (เพราะเราต้องเพื่อให้แอปทดสอบได้) แต่เราไม่ได้ใช้เฟรมเวิร์กใด ๆ บางครั้งมันก็น่าเบื่อนิดหน่อยเมื่อเทียบกับการพึ่งพาทั้งหมดด้วยตนเอง แต่โดยรวมแล้วก็ใช้งานได้ดี เมื่อวัตถุต้องถูกสร้างในหลาย ๆ ที่เราก็มีฟังก์ชั่น (บางครั้งเป็นวิธีการเรียนของวัตถุนั้น) เพื่อสร้างอินสแตนซ์การผลิต ฟังก์ชั่นนี้ถูกเรียกเมื่อใดก็ตามที่เราต้องการวัตถุนั้น ในการทดสอบเราทำสิ่งเดียวกัน: หากหลายครั้งเราจำเป็นต้องสร้าง 'รุ่นทดสอบ' ของวัตถุ (เช่นอินสแตนซ์จริงที่ถูกสำรองข้อมูลโดยวัตถุจำลอง) เรามีฟังก์ชั่นเพื่อสร้าง 'รุ่นทดสอบ' นี้ ของคลาสที่จะใช้ในการทดสอบ ดังที่ฉันพูดโดยทั่วไปแล้วสิ่งนี้ใช้ได้ดี ตอนนี้ฉันกำลังเข้าสู่โครงการ Java ใหม่และเรากำลังตัดสินใจว่าจะใช้เฟรมเวิร์ก DI หรือทำ DI ด้วยตนเอง (เช่นในโครงการก่อนหน้านี้) โปรดอธิบายว่าการทำงานกับกรอบงาน DI จะแตกต่างกันอย่างไรและในลักษณะใดมันจะดีกว่าหรือแย่กว่าการฉีด 'vanilla' แบบพึ่งพา แก้ไข: ฉันต้องการเพิ่มคำถาม: คุณเคยเห็นโครงการ 'ระดับมืออาชีพ' ที่ทำ DI ด้วยตนเองโดยไม่มีกรอบหรือไม่

3
อัลกอริทึมปฏิทิน / การวางแผน
ฉันประสบปัญหาฉันไม่แน่ใจว่าจะเข้าใกล้ได้อย่างไร ฉันต้องสร้างปฏิทินสำหรับพนักงานแต่ละคนมีข้อ จำกัด ในการทำงานเฉพาะ (บางคนเป็นเรื่องธรรมดา) สิ่งที่ฉันทำงานด้วย: ฉันมีหมอ แพทย์แต่ละคนจะต้องทำงาน 5 วัน / สัปดาห์ แพทย์แต่ละคนต้องทำงาน 1 คืน / สัปดาห์ แพทย์แต่ละคนจะต้องทำงานในจำนวนคืนที่เท่ากันเมื่อเทียบกับแพทย์คนอื่น ๆ (หรือใกล้เคียงที่สุด) แพทย์แต่ละคนจะต้องทำงานในคืนวันพฤหัสบดีและคืนวันอาทิตย์ในจำนวนเท่ากันเมื่อเทียบกับหมอคนอื่น ๆ แพทย์บางคนไม่สามารถทำงานได้ในบางวัน / คืน (ป้อนโดยผู้ใช้) แพทย์บางคนต้องการทำงานบางวัน / คืน (ป้อนโดยผู้ใช้) แพทย์บางคนต้องการที่จะไม่ทำงานบางวัน / คืน (ป้อนโดยผู้ใช้) ผู้ใช้ที่สงสัยคือบุคคลที่จัดการกับปฏิทินฉันกำลังพยายามสร้างโซลูชันที่จะสร้างปฏิทินโดยอัตโนมัติซึ่งเป็นไปตามข้อ จำกัด ทั้งหมด การแก้ปัญหาเป็นเพียงแค่การตั้งค่าขนาดใหญ่ป้อน "เพิ่มแพทย์" และ "เพิ่มข้อ จำกัด " สำหรับแพทย์แต่ละคนจากนั้นปุ่ม "สร้างปฏิทิน" มันพื้นฐานจริงๆสำหรับผู้ใช้ ปัญหาของฉัน: ฉันไม่แน่ใจว่าจะสร้างการวางแผนที่แท้จริงได้อย่างไรฉันได้อ่านเกี่ยวกับ Neural Networks, …

3
ฉันจะวินิจฉัย async / รอคอยการหยุดชะงักได้อย่างไร
ฉันกำลังทำงานกับ codebase ใหม่ที่ใช้ async / await อย่างหนัก คนส่วนใหญ่ในทีมของฉันก็ค่อนข้างใหม่สำหรับ async / คอย โดยทั่วไปเรามักจะยึดถือแนวทางปฏิบัติที่ดีที่สุดตามที่ระบุไว้โดย Microsoftแต่โดยทั่วไปต้องการบริบทของเราที่จะไหลผ่านการเรียกใช้ async และทำงานกับไลบรารีที่ไม่ConfigureAwait(false)ต้องการ รวมทุกสิ่งเหล่านั้นเข้าด้วยกันและเราพบ aslock deadlock ที่อธิบายไว้ในบทความ ... ทุกสัปดาห์ พวกเขาจะไม่ปรากฏขึ้นในระหว่างการทดสอบหน่วยเพราะแหล่งข้อมูลของเราเยาะเย้ย (มักจะผ่านTask.FromResult) ไม่เพียงพอที่จะเรียกการหยุดชะงัก ดังนั้นในระหว่างการทดสอบรันไทม์หรือการรวมการบริการบางอย่างเพิ่งออกไปทานอาหารกลางวันและไม่ส่งคืน นั่นจะฆ่าเซิร์ฟเวอร์และโดยทั่วไปก็ทำสิ่งต่าง ๆ เป็นระเบียบ ปัญหาคือการติดตามจุดที่เกิดข้อผิดพลาด (โดยปกติแล้วจะไม่เป็นแบบซิงค์ตลอดเวลา) โดยทั่วไปแล้วจะเกี่ยวข้องกับการตรวจสอบรหัสด้วยตนเองซึ่งใช้เวลานานและไม่สามารถใช้งานได้โดยอัตโนมัติ วิธีที่ดีกว่าในการวินิจฉัยสิ่งที่ทำให้เกิดการหยุดชะงักคืออะไร
24 c#  debugging  async 

6
สิ่งที่จะเรียก HTTP API ที่ไม่สงบ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว คุณจะเรียก API ที่ใช้ HTTP ใช้ URI เพื่อตั้งชื่อทรัพยากรและกริยา HTTP (PUT, POST, DELETE, GET ... ) เพื่อจัดการทรัพยากรเหล่านั้นอย่างไร ตามการร้องเรียนของ Roy Fieldingไม่ใช่การพักเนื่องจากไม่มีไฮเปอร์มีเดีย ภายในทีมของฉันทุกคนเรียกมันว่า "REST API" ฉันเรียกมันว่า "REST-like" แต่มันไม่ได้อธิบายและความหมายของมันนั้นคลุมเครือ ฉันค่อนข้างสับสนเกี่ยวกับเรื่องนี้เนื่องจากมีความขัดแย้งอย่างมากเกี่ยวกับ REST ฉันไม่ต้องการมีส่วนร่วมในสงครามไฟ แต่เพียงใช้คำที่ถูกต้อง
24 terminology  rest  api  http 

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