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

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

3
วิธีการคูกุฏิ? [ปิด]
ฉันต้องการออกจากการดำรงอยู่ของ "กุฏิ" "9-5 และทำสิ่งที่ฉันสามารถทำงานจากที่บ้านออกเมื่อฉันชอบ ฯลฯ อย่าเข้าใจฉันผิด ... ฉันไม่รังเกียจที่จะทำงานหนัก แต่ฉันแค่ไม่ได้เพลิดเพลินไปกับสิ่งต่าง ๆ ขององค์กรที่กำหนดเวลาทำงานวันหยุดพักผ่อนรหัสชุดสถานที่ทำงาน ฯลฯ ฉันคิดว่ามันเป็นไปได้เพราะนักพัฒนาคนอื่น ๆ กำลังดึงสิ่งนี้ออกมา แต่จนถึงตอนนี้มันอยู่ในช่วง "ความฝัน" และฉันไม่รู้ว่าจะเดินหน้าต่อไปอย่างไร ฉันไม่ทราบว่าฉันต้องการเป็นอิสระหรือไม่เริ่ม บริษัท ของตัวเองหรืออะไร ในกรณีที่เป็นเรื่องสำคัญฉันได้ทำงานใน. Net / MVC ในช่วงไม่กี่ปีที่ผ่านมา (ทั้งเดสก์ท็อปและเว็บ) แต่มีประสบการณ์กับภาษาอื่นเช่น Java, C ++, Perl และอื่น ๆ ฉันไม่ได้มีประสบการณ์อะไรมากนักกับการออกแบบเว็บไซต์เพราะทุกงานของฉันคนอื่น ๆ ก็จัดการกับมันในขณะที่ฉันทำงานเกี่ยวกับการเขียนโปรแกรม เพียงเพื่อให้เป็นรูปธรรมมากขึ้นตามที่ฉันต้องการ ... ฉันตื่นขึ้นมาในวันอังคารแบบสุ่มในเดือนมิถุนายนและเป็นวันที่งดงาม ฉันล่วงหน้ากำหนดการโครงการของฉันและฉันไม่รู้สึกอยากทำงาน ... ฉันอยากไปปีนเขา ฉันต้องการอิสระในการทำเช่นนั้นโดยไม่ต้องจัดการกับ PHB สถานการณ์อื่น ... ฉันรู้สึกอยากทำงาน แต่ฉันอยากไปเยี่ยมเพื่อนเก่าหรือญาติเป็นเวลาหนึ่งสัปดาห์ใน Bismarck …

24
วิธีการรับเงินจากลูกค้าที่ไม่เต็มใจ? [ปิด]
ฉันทำเว็บไซต์นี้เสร็จ 4 เดือนที่ผ่านมา (ฉันต้องการให้เว็บไซต์ไม่ระบุชื่อ - หากโพสต์นี้เกิดขึ้นจากการค้นหาโดยลูกค้าของ Google มันจะส่งผลเสียต่อธุรกิจของพวกเขา) เราทำซ้ำหลายครั้งลูกค้าเรียกร้องมาก (และไม่มีจมูก) ฉันปฏิบัติตามทุกสิ่งที่ต้องการรวมถึงขนาดตัวอักษรของส่วนท้ายที่ทำลายรูปลักษณ์ที่สวยงามไปสักหน่อย (และพวกเขายุ่งกับสีด้วยทำให้ดูเป็นเด็กและอันตรายมืออาชีพ) อย่างไรก็ตามลูกค้าเป็นมิตรมากในระหว่างกระบวนการทั้งหมด หลังจากได้รับข้อกำหนดทั้งหมดฉันยอมรับเพื่อสร้างเว็บไซต์ในราคา 950 ปอนด์และฉันเรียกเก็บเงินจากเขาล่วงหน้า 150 ปอนด์ดังนั้นเขาจึงไม่ต้องการประกันตัวหลังจากที่เริ่มทำงาน ความต้องการยังคงเปลี่ยนแปลงอยู่ตลอดเวลาฉันทำการปรับเปลี่ยนและทำให้เว็บไซต์เสร็จสมบูรณ์ในเวลาเพียง 5 วันช้ากว่าวันที่ที่ตกลงกันทั้งๆที่มีการเปลี่ยนแปลงข้อกำหนดทั้งหมด นั่นคือสี่เดือนที่ผ่านมา พวกเขาไม่เคยโทรกลับหรือตอบอีเมลของฉันตั้งแต่นั้นมา ฉันจะรับเงินคืนจากพวกเขาได้อย่างไร ฉันต้องการคำแนะนำเกี่ยวกับเรื่องนี้จริง ๆ นี่เป็นครั้งที่สองที่มีคนไม่จ่ายเงินให้ฉัน คะแนนที่ควรสังเกต: เราไม่ได้เซ็นสัญญาใด ๆ - ลูกค้าเป็นเพื่อนของเพื่อน ฉันยังคงรหัสผ่านสำหรับ ftp, cpanel และทุกอย่าง ฉันไม่ต้องการทำให้ไซต์ล้มเหลว อย่างใดมันก็ดูเหมือนจะไม่จริยธรรมสำหรับฉัน ฉันโพสต์สิ่งนี้ใน Stack Overflow และถูกปิดฉันถูกเปลี่ยนเส้นทางที่นี่ แก้ไข ขอบคุณทุกคนที่ให้การสนับสนุนอย่างมาก ฉันคิดว่าฉันควรจะมีรายละเอียดเพิ่มเติม: ลูกค้ากำลังโฮสต์เว็บไซต์; ในขณะที่ฉันทำให้พวกเขาลงทะเบียนและใช้บัตรเดบิตของตัวเองเพื่อซื้อชื่อโดเมน webspace และทุกอย่างฉันมีรหัสผ่านสำหรับ cpanel …

28
เมื่อใดที่เหมาะสมในการสร้างภาษาโปรแกรมของฉันเอง
มีประเภทของแอพพลิเคชั่นนักฆ่า, คลาสของปัญหาอัลกอริทึม, ฯลฯ ซึ่งจะดีกว่าในระยะยาวเพื่อสร้างภาษาของตัวเอง? PS: เพื่อให้แน่ใจว่าฉันหมายถึงภาษาการเขียนโปรแกรมใหม่และคอมไพเลอร์ไม่ใช่คอมไพเลอร์ใหม่สำหรับภาษาที่มีอยู่ แก้ไข : ขอบคุณสำหรับคำตอบ คุณสามารถให้ตัวอย่างบางส่วนได้โดยไม่จำเป็นต้องสร้าง DSL หรือกรณีที่ DSL อาจเป็นแนวคิดที่ดีได้หรือไม่?

3
ทำไม PATCH ถึงไม่เป็น idempotent?
ฉันสงสัยเกี่ยวกับเรื่องนี้ สมมติว่าฉันมีuserทรัพยากรด้วยidและnameสาขา ถ้าฉันต้องการอัปเดตฟิลด์ฉันสามารถทำคำขอแพทช์กับทรัพยากรเช่นนี้ได้ PATCH /users/42 {"name": "john doe"} จากนั้นแอปพลิเคชันจะอัปเดตชื่อผู้ใช้ 42 แต่ทำไมถ้าฉันทำซ้ำคำขอนี้ผลลัพธ์จะแตกต่างกันอย่างไร อ้างอิงจากRFC 5789 PATCH นั้นไม่ปลอดภัยหรือ idempotent

4
เหตุใด VMs จึงจำเป็นต้องเป็น "เครื่องซ้อน" หรือ "เครื่องลงทะเบียน" ฯลฯ
(นี่เป็นคำถามที่มือใหม่มาก) ฉันได้ศึกษาเกี่ยวกับ Virtual Machines เล็กน้อยแล้ว ปรากฎว่าส่วนมากของพวกเขาได้รับการออกแบบคล้ายกับคอมพิวเตอร์ทางกายภาพหรือทางทฤษฎี ฉันอ่านว่า JVM เป็น 'เครื่องซ้อน' หมายความว่า (และแก้ไขให้ฉันถ้าฉันผิด) คือมันเก็บทุกอย่างไว้ใน 'หน่วยความจำชั่วคราว' บนสแต็กและทำการดำเนินการบนสแต็กนี้สำหรับ opcodes ทั้งหมด ตัวอย่างเช่นซอร์สโค้ด2 + 3จะถูกแปลเป็น bytecode คล้ายกับ: push 2 push 3 add คำถามของฉันคือ: JVMs อาจเขียนโดยใช้ C / C ++ และเช่นนั้น ถ้าเป็นเช่นนั้นทำไม JVM ไม่รันโค้ด C ต่อไปนี้: 2 + 3.. ? ฉันหมายความว่าเหตุใดจึงต้องใช้สแต็กหรือใน 'รีจิสเตอร์' VM อื่น ๆ - …

1
การรักษาโครงสร้างข้อมูล 1D เป็นกริด 2D
ฉันกำลังทำงานกับคลาสเนทีฟที่แสดงภาพ 2D เป็นอาร์เรย์ 1D หากคุณต้องการเปลี่ยนหนึ่งพิกเซลตัวอย่างเช่นตอนนี้คุณต้องได้รับดัชนีจากx,yพิกัด ดังนั้นสมมติว่าเรามีอาร์เรย์ 1D array1dดังนี้: array1d = [ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y ] ในบริบทของโปรแกรมของเราarray1dหมายถึงกริด 2D: a b c d e f g h i j k …

10
วิธีที่ดีที่สุดที่จะหลีกเลี่ยงการเขียนรหัส GUI ป่อง?
ฉันพบว่าเมื่อใดก็ตามที่ฉันทำงานกับรหัส GUI โค้ดจะมีแนวโน้มที่จะขยายตัวเร็วขึ้นจากนั้นก็เป็นรหัสประเภทอื่น มันก็ดูเหมือนยากที่จะ refactor ในขณะที่รหัสอื่น ๆ ที่ฉันสามารถสร้างใหม่ได้อย่างง่ายดาย - ฉันพบว่าฉันสามารถแยกคลาสที่ใหญ่กว่าออกเป็นส่วนเล็ก ๆ ของฟังก์ชั่น - กับกรอบงาน GUI ส่วนใหญ่ฉันมักจะผูกพันกับเฟรมเวิร์กที่ต้องใช้เครื่องมือ ใช้สิ่งอื่น ๆ อีกมากมายได้โดยตรงในวิดเจ็ต / การควบคุม / อะไรก็ตาม บางครั้งนี่อาจเป็นเพราะต้อง (ก) สืบทอดบางส่วนของวิดเจ็ต / การควบคุม / บางสิ่งบางอย่างหรือ (b) ต้องเข้าถึงวิธีการป้องกัน ยกตัวอย่างเช่นฉันต้องตอบสนองต่ออินพุตที่หลากหลายผ่านสัญญาณ / เหตุการณ์ / อะไรก็ตามจากเฟรมเวิร์กเพื่อใช้โหมดทั้งหมดของการโต้ตอบกับผู้ใช้ ฉันอาจต้องการเครื่องมือ GUI / การควบคุมเดียวเพื่อจัดการอินพุต / เอาต์พุตหลากหลายที่อาจรวมถึง: คลิกขวา / เมนูบริบท ตอบสนองต่อการเลือกจากเมนูบริบท - ซึ่งอาจเป็นจำนวนมาก วิธีพิเศษในการวาด …
48 refactoring  gui 

17
จะตรวจสอบหรือประเมินทักษะการแก้ไขจุดบกพร่องของบุคคลได้อย่างไร? [ปิด]
ทักษะประเภทใดที่กำหนดบุคคลที่สามารถดีบักรหัสได้อย่างง่ายดาย เมื่อก่อนเพื่อนของฉันทำการสัมภาษณ์กับโปรแกรมเมอร์ที่ค่อนข้างดี โปรแกรมเมอร์ได้รับการว่าจ้าง เขาสามารถเขียนรหัสที่ดีเข้าใจในกรอบงานและรูปแบบการออกแบบ สิ่งที่เขาพลาดคือทักษะการแก้ไขข้อบกพร่อง เขาไม่สามารถแก้ไขข้อบกพร่องได้ทั้งหมดและการค้นหาปัญหาด้วยรหัสของเขาหรือของคนอื่นเป็นความเจ็บปวดอย่างมากสำหรับเขา ตั้งแต่นั้นมาเรากำลังคิดว่าเราจะประเมินหรือประเมินทักษะการดีบักของบุคคลได้อย่างไร ดังนั้นคำถามแรกคือ: ทักษะใดเป็นตัวกำหนดว่าบุคคลสามารถดีบักซอฟต์แวร์ได้อย่างมีประสิทธิภาพหรือไม่ และข้อที่สอง: วิธีการทดสอบทักษะเหล่านั้นในระหว่างการสัมภาษณ์?

3
คอมไพล์สามารถมีผู้ปกครองมากกว่า 2 คนได้หรือไม่?
ในเอกสารนี้มีการกล่าวถึง วัตถุกระทำอาจมีจำนวนผู้ปกครองใด ๆ แต่จากความเข้าใจของฉันกรณีเดียวที่ความมุ่งมั่นจะมีผู้ปกครองมากกว่า 1 คนคือเมื่อมีการรวมเกิดขึ้นและในกรณีนั้นจะมีผู้ปกครองสองคนเท่านั้น ดังนั้นคำถามของฉันคือความมุ่งมั่นมีผู้ปกครองมากกว่า 2 คนหรือไม่? ถ้าเป็นเช่นนั้นเมื่อไหร่?
48 git 

8
ทำไม NoSQL จึงเร็วกว่า SQL
เมื่อเร็ว ๆ นี้ฉันถูกถาม: ทำไม NoSQL จึงเร็วกว่า SQL ฉันไม่เห็นด้วยกับหลักฐานของคำถาม ... มันไร้สาระสำหรับฉันเป็นการส่วนตัว ฉันไม่เห็นการเพิ่มประสิทธิภาพโดยใช้ NoSQL แทน SQL อาจใช้ SQL มากกว่า NoSQL ใช่ แต่ไม่ใช่แบบนั้น ฉันขาดอะไรเกี่ยวกับ NoSQL ไหม?

6
อะไรคือค่าคงที่, พวกมันสามารถใช้อะไรได้บ้างและคุณเคยใช้มันในโปรแกรมของคุณหรือไม่?
ฉันกำลังอ่านโคเดอร์ในที่ทำงานและในนั้นมีการพูดคุยกันมากมายเกี่ยวกับค่าคงที่ เท่าที่ฉันเข้าใจมันค่าคงที่เป็นเงื่อนไขที่เก็บทั้งก่อนและหลังการแสดงออก สิ่งเหล่านี้มีประโยชน์ในการพิสูจน์ว่าลูปนั้นถูกต้องถ้าฉันจำหลักสูตรลอจิกได้อย่างถูกต้อง คำอธิบายของฉันถูกต้องหรือฉันพลาดอะไรไป? คุณเคยใช้มันในโปรแกรมของคุณหรือไม่? และถ้าเป็นเช่นนั้นพวกเขาได้ประโยชน์อย่างไร?
48 invariants 

6
ฟังก์ชั่น pure ที่ถูกบันทึกไว้นั้นถือว่าตัวเองบริสุทธิ์หรือไม่?
สมมติว่าเป็นฟังก์ชั่นบริสุทธิ์ที่ทำบางสิ่งที่มีราคาแพงเช่นการกลับรายการปัจจัยสำคัญของfn(x)x และขอบอกว่าเราทำให้รุ่น memoized memoizedFn(x)ของฟังก์ชั่นเดียวกันที่เรียกว่า มันจะส่งกลับผลลัพธ์เดียวกันสำหรับอินพุตที่กำหนด แต่จะเก็บแคชส่วนตัวของผลลัพธ์ก่อนหน้าเพื่อปรับปรุงประสิทธิภาพ การพูดอย่างเป็นทางการmemoizedFn(x)ถือว่าบริสุทธิ์หรือไม่ หรือมีชื่ออื่นหรือคำที่มีคุณสมบัติเหมาะสมที่ใช้เพื่ออ้างถึงฟังก์ชั่นดังกล่าวในการสนทนาของ FP? (เช่นฟังก์ชั่นที่มีผลข้างเคียงที่อาจส่งผลกระทบต่อความซับซ้อนในการคำนวณของการโทรครั้งต่อไป แต่อาจไม่ส่งผลกระทบต่อค่าส่งคืน)

9
เหตุใดจึงเกิดการวน (จริง) ในตัวสร้างที่ไม่ดีจริง ๆ
แม้ว่าคำถามทั่วไปขอบเขตของฉันจะค่อนข้าง C # เพราะฉันรู้ว่าภาษาอย่าง C ++ มีความหมายที่แตกต่างกันเกี่ยวกับการเรียกใช้คอนสตรัคเตอร์การจัดการหน่วยความจำพฤติกรรมที่ไม่ได้กำหนด ฯลฯ บางคนถามคำถามที่น่าสนใจซึ่งไม่ได้รับคำตอบสำหรับฉันง่ายๆ ทำไม (หรือเลยหรือ?) ถือได้ว่าเป็นการออกแบบที่ไม่ดีเพื่อให้ตัวสร้างคลาสเริ่มการวนซ้ำไม่สิ้นสุด (เช่นลูปเกม) มีแนวคิดบางอย่างที่แตกหักโดยสิ่งนี้: เช่นเดียวกับหลักการที่สร้างความประหลาดใจน้อยที่สุดผู้ใช้ไม่คาดหวังว่านวกรรมิกจะทำงานแบบนี้ การทดสอบหน่วยยากขึ้นเนื่องจากคุณไม่สามารถสร้างคลาสนี้หรือฉีดได้เนื่องจากไม่เคยออกจากลูป จุดสิ้นสุดของลูป (จบเกม) เป็นแนวคิดในเวลาที่คอนสตรัคสร้างเสร็จซึ่งก็แปลก ในทางเทคนิคแล้วคลาสนี้ไม่มีสมาชิกสาธารณะยกเว้นนวกรรมิกซึ่งทำให้เข้าใจได้ยากขึ้น (โดยเฉพาะภาษาที่ไม่มีการใช้งาน) แล้วมีปัญหาทางเทคนิค: คอนสตรัคเตอร์ไม่เคยเสร็จสิ้นดังนั้นจะเกิดอะไรขึ้นกับ GC ที่นี่? วัตถุนี้มีอยู่แล้วใน Gen 0 หรือไม่ การได้มาจากคลาสนั้นเป็นไปไม่ได้หรืออย่างน้อยก็ซับซ้อนมากเนื่องจากข้อเท็จจริงที่ว่าคอนสตรัคเตอร์ไม่ส่งคืน เห็นได้ชัดว่ามีบางสิ่งที่ไม่ดีหรือคดเคี้ยวมากกว่านี้หรือไม่?
47 c#  architecture 

8
ทำไมการเข้ารหัสชื่ออาร์กิวเมนต์ในชื่อฟังก์ชั่นจึงไม่เกิดขึ้นบ่อยนัก? [ปิด]
ในรหัสสะอาดผู้เขียนให้ตัวอย่างของ assertExpectedEqualsActual(expected, actual) VS assertEquals(expected, actual) กับอดีตอ้างว่ามีความชัดเจนมากขึ้นเพราะมันเอาความจำเป็นที่จะต้องจำที่ขัดแย้งไปและการใช้ผิดที่อาจเกิดขึ้นจากที่ แต่ฉันไม่เคยเห็นตัวอย่างของรูปแบบการตั้งชื่อเดิมในรหัสใด ๆ และดูหลังตลอดเวลา ทำไมผู้ไม่ใช้โคเดอร์จึงนำอดีตมาใช้ถ้าหากผู้เขียนอ้างว่าชัดเจนกว่าหลัง
47 clean-code 

9
การมีวันที่ส่งมอบคงที่สำหรับองค์ประกอบเป็นวิธีการทำงานแบบ "เปรียว" หรือไม่?
เราได้รับการบอกต่อไปว่าเราจะทำงานอย่างคล่องตัวในโครงการใหม่โดยผู้บริหารระดับสูง พวกเขาได้ตั้งค่าสแตนอัพการวางแผนการวิ่งการหวนรำลึก ฯลฯ ฯลฯ อย่างไรก็ตามตอนนี้พวกเขาได้วางแผนรายละเอียดงานทั้งหมดที่พวกเขาต้องการให้เราจัดส่งพร้อมกับวันที่กับแต่ละองค์ประกอบและวันที่แสดงอีกครั้ง หนึ่ง. แผนนี้ออกไปในไตรมาสที่ 2 ปี 2560 สำหรับฉันดูเหมือนว่า Waterfall ในแง่ที่เลวร้ายที่สุดแผนที่ไม่มีการป้อนข้อมูลจากทีมงานด้านเทคนิคได้ถูกวาดขึ้นมาโดยที่เรื่องราวบางอย่างในแผนไม่ชัดเจนมากและไม่มีทีมใดที่ถูกประเมินโดย Dev อย่างไรก็ตามฉันรู้ว่าข้อโต้แย้งของพวกเขาจะเป็น "ผู้มีส่วนได้ส่วนเสียระดับสูงต้องมีนัดและต้องมีแผนเราไม่สามารถทำงานจาก backlog ได้" สำหรับฉันนี่ดูเหมือนว่าผู้มีส่วนได้ส่วนเสียอาวุโสยังไม่ได้ซื้อเข้าสู่ Agile ดังนั้นเราจึงต้องล้มเหลวในการนำไปใช้ในระดับที่ต่ำกว่า นี่เป็นการตัดสินที่ยุติธรรมหรือฉันทำเกินจริงต่อแผนนี้หรือไม่?

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