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

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

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

12
เมื่อใดจึงควรใช้ C ผ่าน C ++ และ C ++ เหนือ C
ฉันได้รับการแนะนำให้รู้จักกับวิทยาการคอมพิวเตอร์มานานกว่าหนึ่งปีแล้วและจากประสบการณ์ของฉันดูเหมือนว่าทั้ง C และ C ++ ถือว่าเป็นภาษาที่ "เร็วมาก" ในขณะที่คนอื่น ๆ เช่น Python และภาษาสคริปต์นั้นมักจะค่อนข้างช้ากว่า . แต่ฉันเคยเห็นหลาย ๆ กรณีที่โครงการซอฟต์แวร์หรือแม้แต่เล็ก ๆ จะแทรกไฟล์ที่มีจำนวน n ของไฟล์เหล่านั้นจะถูกเขียนใน C และไฟล์ m จำนวนหนึ่งจะถูกเขียนใน C ++ (ฉันยังสังเกตเห็นว่าไฟล์ C ++ มักจะมีส่วนหัวที่สอดคล้องกันในขณะที่ไฟล์ C ไม่มาก) แต่ประเด็นหลักของการสอบถามของฉันคือการรับความรู้สึกโดยทั่วไปของสัญชาตญาณเมื่อมันเหมาะสมที่จะใช้ C มากกว่า C ++ และเมื่อดีกว่าที่จะใช้ C ++ เหนือ C นอกเหนือจากข้อเท็จจริงที่ว่า (1) C ++ เป็นวัตถุเชิงในขณะที่ C ไม่ใช่และ (2) …
164 c++  c 

19
มีเหตุผลใดที่จะใช้ C ++ แทน C, Perl, Python และอื่น ๆ ? [ปิด]
ในฐานะนักพัฒนา Linux (ฝั่งเซิร์ฟเวอร์) ฉันไม่รู้ว่าที่ไหนและเพราะเหตุใดฉันจึงควรใช้ C ++ เมื่อฉันจะไปแสดงตัวเลือกแรกและสุดท้ายคือ C เมื่อ "ประสิทธิภาพ" ไม่ใช่ปัญหาหลักภาษาการเขียนโปรแกรมเช่น Perl และ Python จะเป็นตัวเลือกที่ดี เกือบทุกแอพพลิเคชั่นโอเพนซอร์ซที่ฉันรู้จักในพื้นที่นี้เขียนด้วยภาษา C, Perl, Python, Bash script, AWKหรือแม้แต่ PHP แต่ไม่มีใครใช้ C ++ ฉันไม่ได้พูดถึงเรื่องอื่น ๆ เช่น GUI หรือเว็บแอปพลิเคชันฉันแค่พูดถึง Linux, CLI และ daemons มีเหตุผลที่น่าพอใจในการใช้ C ++ หรือไม่?

9
เหตุใดฉันจึงควรใช้คลาสโรงงานแทนการสร้างวัตถุโดยตรง
ฉันได้เห็นประวัติของโครงการห้องสมุดคลาสС # และ Java หลายรายการบน GitHub และ CodePlex และฉันเห็นแนวโน้มของการเปลี่ยนไปใช้คลาสของโรงงานซึ่งต่างจากการอินสแตนซ์วัตถุโดยตรง เหตุใดฉันจึงควรใช้คลาสของโรงงานอย่างกว้างขวาง ฉันมีห้องสมุดที่ค่อนข้างดีที่ซึ่งวัตถุต่าง ๆ ถูกสร้างขึ้นในแบบสมัยเก่า - โดยการเรียกใช้คลาสก่อสร้างสาธารณะ ในช่วงสุดท้ายผู้เขียนได้ทำการเปลี่ยนแปลงอย่างรวดเร็วของการสร้างสาธารณะทั้งหมดของหลายพันชั้นเรียนเป็นภายในและยังสร้างชั้นโรงงานขนาดใหญ่ที่มีCreateXXXวิธีการคงที่หลายพันที่เพียงแค่ส่งคืนวัตถุใหม่โดยการเรียกตัวสร้างภายในของชั้นเรียน API โครงการภายนอกใช้งานไม่ได้ เหตุใดการเปลี่ยนแปลงเช่นนี้จึงมีประโยชน์ อะไรคือประเด็นของการปรับโครงสร้างด้วยวิธีนี้ ประโยชน์ของการแทนที่การเรียกไปยังตัวสร้างคลาสสาธารณะด้วยการเรียกใช้เมธอดสแตติกจากโรงงานคืออะไร? ฉันควรใช้ช่างก่อสร้างสาธารณะเมื่อใดและฉันควรใช้โรงงานเมื่อใด

3
เหตุใด HTTP จึงไม่เปลี่ยนเส้นทาง POST
การเปลี่ยนเส้นทาง HTTP ทำได้โดยใช้รหัส HTTP 301 และ 302 (อาจเป็นรหัสอื่น) และฟิลด์ส่วนหัวที่เรียกว่า "ตำแหน่ง" ซึ่งมีที่อยู่ของสถานที่ใหม่ที่จะไป อย่างไรก็ตามเบราว์เซอร์จะส่งคำขอ "GET" ไปยัง URL นั้นเสมอ อย่างไรก็ตามหลายครั้งคุณต้องเปลี่ยนเส้นทางผู้ใช้ของคุณไปยังโดเมนอื่นผ่านทาง POST (ตัวอย่างเช่นการชำระเงินธนาคาร) นี่เป็นสถานการณ์ทั่วไปและเป็นข้อกำหนดจริงๆ ไม่มีใครรู้ว่าทำไมความต้องการทั่วไปดังกล่าวจึงถูกเพิกเฉยในข้อกำหนด HTTP วิธีแก้ปัญหาคือการส่งแบบฟอร์ม (พร้อมพารามิเตอร์ในเขตข้อมูลที่ซ่อนอยู่) พร้อมชุดการดำเนินการไปยังตำแหน่งเป้าหมาย (ค่าของฟิลด์ส่วนหัวLocation ) และใช้setTimeoutเพื่อส่งแบบฟอร์มไปยังตำแหน่งเป้าหมาย

26
การค้นหาตัวอย่างรหัสอย่างสม่ำเสมอเป็นสัญญาณของนักพัฒนาซอฟต์แวร์ที่ไม่ดีหรือไม่ [ปิด]
ฉันเป็นนักเรียน CS ที่มีประสบการณ์หลายปีใน C และ C ++ และในช่วงไม่กี่ปีที่ผ่านมาฉันทำงานกับ Java / Objective C เพื่อพัฒนาแอพอย่างต่อเนื่องและตอนนี้ฉันได้เปลี่ยนไปใช้การพัฒนาเว็บและเน้นที่ทับทิมเป็นหลัก Rails และฉันมาถึงสำนึกว่า (เช่นเดียวกับการพัฒนาแอพจริงๆ) ฉันอ้างอิงวิธีอื่น ๆ ของรหัสมากเกินไป ฉันใช้ฟังก์ชั่นของ Google อย่างต่อเนื่องในหลาย ๆ สิ่งที่ฉันคิดว่าฉันควรจะทำได้ตั้งแต่เริ่มต้นและมันทำให้ฉันมั่นใจเล็กน้อย พื้นฐานพื้นฐานไม่ใช่ปัญหาฉันเกลียดที่จะใช้สิ่งนี้เป็นตัวอย่าง แต่ฉันสามารถเรียกใช้ผ่าน javabat ในทั้ง java / python ที่ sprint - เห็นได้ชัดว่าไม่ใช่ความสำเร็จและสิ่งที่ฉันหมายถึงคือฉันมีฐานที่แข็งแกร่งสำหรับพื้นฐาน ฉันคิด? ฉันรู้ว่าสิ่งที่ฉันจำเป็นต้องใช้โดยทั่วไป แต่การอ้างอิงไวยากรณ์อย่างต่อเนื่อง จะรักคำแนะนำและข้อมูลเกี่ยวกับเรื่องนี้เพราะมันถือฉันกลับค่อนข้างแน่นหนาในแง่ของการหางานในสาขานี้แม้ว่าฉันจะจบการศึกษาระดับปริญญาของฉัน เหตุผลหลักของฉันสำหรับการถามไม่ได้เกี่ยวกับการจ้างงานจริง ๆ แต่ยิ่งกว่านั้นฉันไม่ต้องการเป็นคนเดียวที่ Hackathon ไม่ได้ตอกรหัส nonstop และนั่งอยู่ที่นั่นพร้อมกับแท็บ Google 20 / github …

22
การอ้างอิง Null เป็นสิ่งที่เลวร้ายจริง ๆ หรือไม่?
ฉันได้ยินมาว่าการรวมการอ้างอิงโมฆะในภาษาการเขียนโปรแกรมเป็น "ความผิดพลาดพันล้านดอลลาร์" แต่ทำไม แน่นอนว่าพวกเขาสามารถทำให้ NullReferenceExceptions ได้ แต่อย่างนั้น องค์ประกอบของภาษาใด ๆ สามารถเป็นแหล่งของข้อผิดพลาดหากใช้ไม่ถูกต้อง และทางเลือกคืออะไร? ฉันคิดว่าแทนที่จะพูดสิ่งนี้: Customer c = Customer.GetByLastName("Goodman"); // returns null if not found if (c != null) { Console.WriteLine(c.FirstName + " " + c.LastName + " is awesome!"); } else { Console.WriteLine("There was no customer named Goodman. How lame!"); } คุณสามารถพูดสิ่งนี้: …

24
วิธีการที่สง่างามในการจัดการถ้า (ถ้ามี) อย่างอื่น
นี่เป็นอาการง่อยเล็กน้อย แต่ทุกครั้งที่ฉันต้องเขียนโค้ดแบบนี้การทำซ้ำจะทำให้ฉันรำคาญใจ แต่ฉันไม่แน่ใจว่าวิธีแก้ปัญหาใด ๆ จะไม่แย่ลง if(FileExists(file)) { contents = OpenFile(file); // <-- prevents inclusion in if if(SomeTest(contents)) { DoSomething(contents); } else { DefaultAction(); } } else { DefaultAction(); } มีชื่อสำหรับตรรกะชนิดนี้หรือไม่? ฉันเป็น OCD ด้วยหรือเปล่า ฉันเปิดให้คำแนะนำรหัสชั่วร้ายเพียงเพื่อความอยากรู้อยากเห็นของ ...

8
การพัฒนาเว็บแอปพลิเคชันสำหรับอายุการใช้งานที่ยาวนาน (20+ ปี)
ฉันกำลังพัฒนาเว็บแอปพลิเคชันสำหรับการวางแผนที่ดินของรัฐบาล แอปพลิเคชันส่วนใหญ่ทำงานในเบราว์เซอร์โดยใช้ Ajax เพื่อโหลดและบันทึกข้อมูล ฉันจะทำการพัฒนาเบื้องต้นแล้วจึงสำเร็จการศึกษา (เป็นงานของนักเรียน) หลังจากนี้ส่วนที่เหลือของทีมจะเพิ่มคุณสมบัติตามโอกาสที่ต้องการ พวกเขารู้วิธีการเขียนโค้ด แต่ส่วนใหญ่เป็นผู้เชี่ยวชาญด้านการวางแผนที่ดิน เมื่อพิจารณาถึงการเปลี่ยนแปลงของเทคโนโลยีจาวาสคริปต์ฉันจะเขียนโค้ดที่ยังคงใช้งานได้ 20 ปีจากนี้ได้อย่างไร ฉันควรใช้ไลบรารีเทคโนโลยีและแนวคิดการออกแบบใด (หรือหลีกเลี่ยง) เพื่อพิสูจน์รหัสของฉันในอนาคต

10
มีเหตุผลที่เฉพาะเจาะจงหรือไม่ในการอ่านการออกแบบไวยากรณ์นิพจน์ปกติหรือไม่?
โปรแกรมเมอร์ทุกคนดูเหมือนจะยอมรับว่าการอ่านโค้ดมีความสำคัญมากกว่าการใช้ซินเทอร์แบบสั้นซึ่งทำงานอยู่ แต่ต้องการผู้พัฒนาระดับสูงในการตีความด้วยความถูกต้องในระดับใด ๆ มีเหตุผลสำหรับสิ่งนี้หรือไม่? เราทุกคนยอมรับว่าดีกว่าselfDocumentingMethodName() e()เหตุใดจึงไม่ควรใช้กับนิพจน์ทั่วไปด้วย ดูเหมือนว่าแทนที่จะออกแบบไวยากรณ์ของตรรกะหนึ่งบรรทัดโดยไม่มีโครงสร้างองค์กร: var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})(0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; และนี่ไม่ใช่การแยก URL อย่างเข้มงวดแม้แต่! แต่เราสามารถสร้างโครงสร้างไปป์ไลน์ที่จัดระเบียบและสามารถอ่านได้ตัวอย่างเช่น: string.regex .isRange('A-Z' || 'a-z') .followedBy('/r'); ไวยากรณ์ใดที่มีประโยชน์มากน้อยเพียงใดสำหรับนิพจน์ทั่วไปที่เสนอนอกเหนือจากการดำเนินการที่สั้นที่สุดและไวยากรณ์เชิงตรรกะ ในท้ายที่สุดมีเหตุผลทางเทคนิคเฉพาะสำหรับการอ่านการออกแบบไวยากรณ์นิพจน์ที่ไม่ดีหรือไม่?

14
มีอะไรผิดปกติกับการอ้างอิงแบบวงกลม?
ฉันมีส่วนร่วมในการอภิปรายการเขียนโปรแกรมในวันนี้ที่ฉันทำงบบางอย่างที่โดยทั่วไปถือว่าจริงที่อ้างอิงวงกลม (ระหว่างโมดูลชั้นเรียนสิ่งที่) โดยทั่วไปจะไม่ดี เมื่อฉันผ่านเข้าไปในสนามของฉันเพื่อนร่วมงานของฉันถามว่า "มีอะไรผิดปกติกับการอ้างอิงแบบวงกลม" ฉันมีความรู้สึกที่แข็งแกร่งในเรื่องนี้ แต่มันยากสำหรับฉันที่จะพูดอย่างกระชับและเป็นรูปธรรม คำอธิบายใด ๆ ที่ฉันอาจเกิดขึ้นมีแนวโน้มที่จะพึ่งพารายการอื่น ๆ ที่ฉันพิจารณาความจริง ("ไม่สามารถใช้ในการแยกดังนั้นไม่สามารถทดสอบ", "พฤติกรรมที่ไม่รู้จัก / ไม่ได้กำหนดเป็นรัฐกลายพันธุ์ในวัตถุที่เข้าร่วม" ฯลฯ .) แต่ฉันชอบที่จะได้ยินเหตุผลที่ชัดเจนว่าเพราะเหตุใดการอ้างอิงแบบวงกลมจึงไม่ดีซึ่งไม่ได้ใช้ความเชื่ออย่างที่สมองของฉันทำเองใช้เวลาหลายชั่วโมงกว่าจะแก้ให้เข้าใจแก้ และขยายรหัสบิตต่าง ๆ แก้ไข:ฉันไม่ได้ถามเกี่ยวกับการอ้างอิงแบบวงกลมที่เป็นเนื้อเดียวกันเช่นที่อยู่ในรายการที่ลิงก์สองเท่าหรือตัวชี้ไปยังผู้ปกครอง คำถามนี้ถามเกี่ยวกับการอ้างอิงแบบวงกลม "ขอบเขตที่กว้างขึ้น" เช่น libA การโทร libB ซึ่งโทรกลับไปที่ libA แทน 'โมดูล' สำหรับ 'lib' หากคุณต้องการ ขอบคุณสำหรับคำตอบทั้งหมด!

17
Windows Azure เทียบกับ Amazon EC2 กับ Google App Engine
จากมุมมองของนักพัฒนาคุณควรพิจารณาแพลตฟอร์มใดสำหรับแอปพลิเคชั่นเว็บโซเชียลขนาดใหญ่ หากคุณสามารถให้รายละเอียดบางอย่างเกี่ยวกับสิ่งที่คุณคิดว่าเป็นจุดแข็งของทางเลือกที่จะดี

19
เหตุใดอินเทอร์เฟซจึงมีประโยชน์
ฉันเรียนและเขียนโปรแกรม C # มาระยะหนึ่งแล้ว แต่ถึงกระนั้นฉันก็ไม่สามารถใช้ประโยชน์จากอินเทอร์เฟซได้ พวกเขานำมาที่โต๊ะน้อยเกินไป นอกเหนือจากการจัดเตรียมลายเซ็นของฟังก์ชันพวกเขาไม่ทำอะไรเลย ถ้าฉันจำชื่อและลายเซ็นของฟังก์ชั่นที่จำเป็นต้องใช้งานได้ก็ไม่จำเป็นต้องทำ พวกเขาอยู่ที่นั่นเพียงเพื่อให้แน่ใจว่าฟังก์ชั่นดังกล่าว (ในอินเทอร์เฟซ) ถูกนำไปใช้ในคลาสที่สืบทอด C # เป็นภาษาที่ยอดเยี่ยม แต่บางครั้งมันทำให้คุณรู้สึกว่าไมโครซอฟท์คนแรกสร้างปัญหา (ไม่อนุญาตให้มีการสืบทอดหลายครั้ง) จากนั้นให้โซลูชันซึ่งค่อนข้างน่าเบื่อ นั่นคือความเข้าใจของฉันซึ่งขึ้นอยู่กับประสบการณ์การเขียนโปรแกรมที่ จำกัด คุณทำอะไรในส่วนต่อประสาน คุณใช้ประโยชน์จากมันบ่อยแค่ไหนและอะไรทำให้คุณทำเช่นนั้น?
158 interfaces 

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

12
ทำไมมันถึงสำคัญที่ HTML และ CSS ไม่ใช่ภาษาโปรแกรม?
ตัวอย่างที่นี่: ฉันควรรู้ภาษาใดถ้าฉันสนใจสร้างเว็บแอปพลิเคชัน ใช่ฉันเข้าใจว่า HTML และ CSS ไม่ทัวริงเสร็จสมบูรณ์ ใช่ฉันเข้าใจว่าพวกเขาเป็นภาษาที่ไม่เปิดเผย แต่ทำไมผู้คนถึงตบตาหัวด้วยความจริง (และชัดเจนชัดเจน) ข้อเท็จจริงนี้เมื่อพวกเขาถามคำถามเกี่ยวกับภาษาเหล่านี้?
158 terminology 

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