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

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

14
เป็นวิธีปฏิบัติทั่วไปหรือไม่ที่จะลดการใช้งาน JavaScript เมื่อสร้างเว็บไซต์ [ปิด]
ฉันเป็นนักพัฒนาเว็บมาเกือบ 10 ปีแล้วและฉันก็ติดนิสัยที่จะพยายามไม่ใช้ JavaScript ทุกครั้งที่ทำได้ ฉันไม่ได้พูดถึงการสร้างเว็บแอปที่นี่ แต่เป็นเว็บไซต์ที่ขับเคลื่อนด้วยฐานข้อมูล นี่เป็นวิธีที่ดี / เคารพหรือไม่?
32 javascript 

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

10
มันคุ้มค่าที่จะย้ายจากเทคโนโลยีของไมโครซอฟท์ไปเป็น Linux, NodeJS และกรอบโอเพนซอร์สอื่น ๆ เพื่อประหยัดเงินสำหรับการเริ่มต้นธุรกิจหรือไม่? [ปิด]
ฉันกำลังมีส่วนร่วมในการเริ่มต้นฉันเป็นนักพัฒนาเพียงคนเดียวที่เกี่ยวข้องในขณะนี้และคนอื่น ๆ กำลังทิ้งการตัดสินใจทางเทคโนโลยีทั้งหมดให้ฉันในขณะนี้ สำหรับงานประจำวันของฉันฉันทำงานที่บ้านซอฟต์แวร์ที่ใช้เทคโนโลยีของ Microsoft เป็นประจำทุกวันเราใช้. NET, SqlServer, Windows Server ฯลฯ อย่างไรก็ตามฉันตระหนักดีว่าการเริ่มต้นเราจำเป็นต้องลดต้นทุนลงและหลังจากมี ดูค่าใช้จ่ายในการโฮสต์สำหรับ Windows โดยย่อฉันรู้สึกตกใจเมื่อเห็นราคาของเซิร์ฟเวอร์เฉพาะ ที่ถูกที่สุดที่ฉันพบคือ£ 100 ต่อเดือน หากธุรกิจจำเป็นต้องขยายในอนาคตและท้ายที่สุดเราต้องการเซิร์ฟเวอร์หลายตัวเราสามารถลงเอยด้วยการจ่าย 10,000 ปอนด์ต่อปีในการออกใบอนุญาต SQL Server / Windows Server เป็นต้น จากนั้นฉันก็ดูราคาของ Linux โฮสติ้งสำหรับเซิร์ฟเวอร์เฉพาะและเห็นว่าราคาถูก waaaaaay ต่ำกว่า windows hosting ที่แห่งหนึ่งเสนอเครื่องที่มี 2 คอร์น้อยกว่า 20 ปอนด์ต่อเดือน นี่ทำให้ฉันคิดว่าวิธีที่จะไปคือโอเพ่นซอร์สบน Linux ขณะที่ฉันเขียน Javascript จำนวนมากในที่ทำงาน (ฉันกำลังทำงานในแอพแบ็คโบนหน้าเดียวในขณะนี้) ฉันคิดว่าบางที NodeJS และเว็บเฟรมอย่าง Express จะน่าใช้ …

10
ทำไมคำถาม“ ให้ห้าสิ่งที่คุณเกลียดเกี่ยวกับ C #” นั้นตอบยากในระหว่างการสัมภาษณ์? [ปิด]
ในพอดคาสต์ 73โจเอลสปอลสกี้และเจฟฟ์แอทวู้ดพูดคุยกันในหมู่เรื่องอื่น ๆ "ห้าสิ่งที่ทุกคนควรเกลียดเกี่ยวกับภาษาโปรแกรมที่พวกเขาโปรดปราน": หากคุณพอใจกับห่วงโซ่เครื่องมือปัจจุบันของคุณคุณก็ไม่จำเป็นต้องเปลี่ยน อย่างไรก็ตามหากคุณไม่สามารถเขียนห้าสิ่งที่คุณเกลียดเกี่ยวกับภาษาการเขียนโปรแกรมที่คุณชื่นชอบฉันก็เถียงว่าคุณยังไม่รู้ดีพอที่จะตัดสิน มันเป็นเรื่องดีที่จะตระหนักถึงทางเลือกและมีสุขภาพที่ดีสำหรับทุกสิ่งที่คุณใช้ ฉันถามคำถามนี้กับผู้สมัครที่ฉันสัมภาษณ์ ไม่มีใครสามารถอ้างอย่างน้อยสิ่งหนึ่งที่พวกเขาเกลียดเกี่ยวกับ C # ¹ ทำไม? คำถามนี้ยากมากขนาดไหน เป็นเพราะบริบทเครียดของการสัมภาษณ์ว่าคำถามนี้เป็นไปไม่ได้ที่จะตอบโดยผู้ให้สัมภาษณ์? มีคำถามเกี่ยวกับคำถามนี้ซึ่งทำให้แย่สำหรับการสัมภาษณ์หรือไม่? เห็นได้ชัดว่ามันไม่ได้หมายความว่า C # นั้นสมบูรณ์แบบ ฉันมีรายการห้าสิ่งที่ฉันเกลียดเกี่ยวกับ C #: การขาดจำนวนตัวแปรชนิดใน generics (คล้ายกับparamsอาร์กิวเมนต์) Action<T>, Action<T1, T2>, Action<T1, T2, T3>, ⁞ อย่างจริงจัง ?! Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, …
32 c#  interview 

2
เมื่อใช้ Git จะใช้สาขาหลักสำหรับการพัฒนาที่แนะนำหรือไม่?
อย่างแรกพื้นหลังบางอย่างเราอยู่ในกระบวนการเคลื่อนย้ายทีมโครงการทั้งหมดของเราไปใช้ git และอยู่ในขั้นตอนการวางแนวทางสำหรับวิธีการจัดเก็บที่เก็บเพื่อให้สาขาบางแห่งสามารถตรวจสอบการรวมกลุ่มอย่างต่อเนื่องและ การปรับใช้อัตโนมัติไปยังเซิร์ฟเวอร์ทดสอบ ขณะนี้มีสองรุ่นที่กำลังพัฒนา: ได้รับอิทธิพลอย่างมากจากบทความ nvie.com เกี่ยวกับการประสบความสำเร็จในการแยกย่อยด้วยสาขาหลักซึ่งเป็นรหัสที่เสถียรที่สุด, สาขาการพัฒนาสำหรับโค้ด edge bleeding และสาขาการรวมสำหรับโค้ดที่พร้อมสำหรับการทดสอบ QA โมเดลสำรองที่สาขาหลักเป็นตัวแทนของรหัสการพัฒนา edge edge, Branch Integration สำหรับรหัสที่พร้อมสำหรับการทดสอบ QA และสาขาการผลิตสำหรับรหัสที่เสถียรที่พร้อมสำหรับการปรับใช้ ณ จุดนี้มันเป็นส่วนหนึ่งของความหมายเกี่ยวกับสิ่งที่สาขาหลักหมายถึง แต่กำลังทำการพัฒนาที่แข็งขันในสาขาหลักจริง ๆ แล้วเป็นการปฏิบัติที่ดีหรือไม่จริงหรือไม่เกี่ยวข้องกัน?
32 git  branching 

3
ภาษาที่ใช้งานได้ทั้งหมดใช้การรวบรวมขยะหรือไม่
มีภาษาที่ใช้งานได้ซึ่งอนุญาตให้ใช้ความหมายของสแต็ก - การทำลายที่กำหนดขึ้นโดยอัตโนมัติเมื่อสิ้นสุดขอบเขตหรือไม่?

4
เป็นไปได้ไหมที่จะรวบรวม Java เป็นรหัสเครื่อง? (ไม่ใช่ไบต์)
คุณสามารถคอมไพล์ Java โดยตรงในรหัสเครื่องได้หรือไม่? ฉันต้องการทำสิ่งนี้ดังนั้นฉันจึงสามารถควบคุมได้ว่าจะใช้แพลตฟอร์มใดและไม่รู้ว่า C, C ++ เป็นต้น
32 java 

9
ในขณะที่ (จริง) และวงแตก - รูปแบบการต่อต้าน?
พิจารณารหัสต่อไปนี้: public void doSomething(int input) { while(true) { TransformInSomeWay(input); if(ProcessingComplete(input)) break; DoSomethingElseTo(input); } } สมมติว่ากระบวนการนี้เกี่ยวข้องกับขั้นตอนที่ จำกัด แต่ขึ้นอยู่กับอินพุต ลูปได้รับการออกแบบมาเพื่อยุติด้วยตัวเองอันเป็นผลมาจากอัลกอริธึมและไม่ได้ออกแบบให้รันแบบไม่สิ้นสุด (จนกว่าจะถูกยกเลิกโดยเหตุการณ์ภายนอก) เนื่องจากการทดสอบเพื่อดูว่าการวนซ้ำควรจบอยู่กลางชุดตรรกะของขั้นตอนหรือไม่ขณะที่ลูปตัวเองในขณะนี้ไม่ได้ตรวจสอบสิ่งใดที่มีความหมาย การตรวจสอบจะดำเนินการแทนในตำแหน่ง "เหมาะสม" ภายในอัลกอริทึมเชิงแนวคิด ฉันได้รับการบอกว่านี่เป็นโค้ดที่ไม่ดีเพราะมันมีข้อผิดพลาดมากกว่าเนื่องจากสภาพตอนจบไม่ได้ถูกตรวจสอบโดยโครงสร้างลูป เป็นการยากกว่าที่จะทราบว่าคุณจะออกจากลูปอย่างไรและสามารถเชิญบั๊กเนื่องจากสภาพการแตกหักอาจถูกข้ามหรือข้ามไปโดยไม่ตั้งใจเนื่องจากการเปลี่ยนแปลงในอนาคต ตอนนี้รหัสสามารถโครงสร้างดังนี้ public void doSomething(int input) { TransformInSomeWay(input); while(!ProcessingComplete(input)) { DoSomethingElseTo(input); TransformInSomeWay(input); } } อย่างไรก็ตามการทำซ้ำการเรียกไปยังวิธีการในรหัสละเมิด DRY; หากTransformInSomeWayถูกแทนที่ด้วยวิธีอื่นในภายหลังการโทรทั้งสองจะต้องพบและเปลี่ยนแปลง (และความจริงที่ว่ามีสองอาจไม่ชัดเจนในรหัสที่ซับซ้อนมากขึ้น) คุณสามารถเขียนเช่น: public void doSomething(int input) { var complete …

6
การให้ผู้ใช้เขียนรายงานบั๊กที่ดีและมีประโยชน์
ไม่มีใครรู้วิธีที่ดีในการทำให้ผู้ใช้สามารถเขียนรายงานบั๊กแบบกึ่งดี (อ่าน: มีประโยชน์ ) ได้หรือไม่? เราต้องการรวบรวมบางสิ่งที่สมเหตุสมผลสำหรับผู้ใช้ส่วนใหญ่ (อ่านและเข้าใจง่าย) แต่ให้ข้อมูลที่เป็นประโยชน์แก่นักพัฒนาเช่นกัน มันไม่ทำงานเมื่อฉันคลิกปุ่มสีน้ำเงิน! Ahhh ฉันเพิ่งเสียงานไปหนึ่งสัปดาห์ ... ทำให้มันใช้ได้ ไม่มีประโยชน์มากอย่างที่มันเป็น ฉันเริ่มที่จะแก้ไขเกี่ยวกับรายการ แต่คิดว่าจะตรวจสอบกับพวกคุณว่ามีวิธีการที่คล้ายกันอยู่แล้ว

8
การเรียนรู้ C ++ ผ่าน Qt Framework จริง ๆ การเรียนรู้ C ++ [ปิด]
ปัญหาที่ฉันมีคือหนังสือ C ++ ส่วนใหญ่ที่ฉันอ่านใช้เวลาเกือบตลอดไปในเรื่องของไวยากรณ์และพื้นฐานของภาษาเช่นforลูปwhile, อาร์เรย์, รายการ, ตัวชี้ ฯลฯ แต่ดูเหมือนว่าพวกเขาไม่เคยสร้างสิ่งใดที่เรียบง่ายพอที่จะใช้สำหรับการเรียนรู้ แต่ยังมีประโยชน์พอที่จะทำให้คุณเข้าใจปรัชญาและพลังของภาษา จากนั้นฉันก็สะดุดกับQTซึ่งเป็นห้องสมุดที่น่าทึ่ง! แต่ทำงานผ่านการสาธิตที่พวกเขามีดูเหมือนว่าตอนนี้ฉันอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออก ฉันรู้สึกเหมือนลูกชายของเศรษฐีขับรถรอบในรถสปอร์ตที่ได้รับเงินอุดหนุนจากพ่อ เช่นฉันสามารถสร้างซอฟต์แวร์ที่ยอดเยี่ยม แต่ไม่มีเงื่อนงำสิ่งที่เกิดขึ้นภายใต้ประทุน ตัวอย่างของภาวะที่กลืนไม่เข้าคายไม่ออกของฉันใช้งานในการสร้างเว็บเบราว์เซอร์ที่เรียบง่าย ใน C ++ บริสุทธิ์ฉันไม่รู้ด้วยซ้ำว่าจะเริ่มต้นยังไงกับไลบรารี่ Qt ที่สามารถทำได้ภายในโค้ดไม่กี่บรรทัด ฉันไม่ได้บ่นเกี่ยวกับเรื่องนี้ ฉันแค่สงสัยว่าจะเติมความรู้ที่ว่างเปล่าระหว่างโครงสร้างพื้นฐานของภาษาและอินเทอร์เฟซระดับสูงที่กรอบ Qt ให้ได้อย่างไร

12
วิทยาศาสตร์คอมพิวเตอร์และการเขียนโปรแกรมต่างกันอย่างไร
ฉันใหม่ด้านวิทยาการคอมพิวเตอร์และการเขียนโปรแกรมและฉันสงสัยว่ามีความแตกต่างระหว่างวิทยาการคอมพิวเตอร์และการเขียนโปรแกรมหรือไม่? และคุณจะเลือกเรียนเพียงหนึ่งในมหาวิทยาลัยหรือทั้งคู่?

9
ทำไมตัวระบุไม่ควรเริ่มต้นด้วยตัวเลข
ภาษาการเขียนโปรแกรมส่วนใหญ่ดูเหมือนจะได้รับการออกแบบให้ไม่อนุญาตให้หนึ่งประกาศตัวระบุที่ขึ้นต้นด้วยตัวเลข ฉันแค่อยากรู้อยากเห็นเหตุผล ฉันค้นหาเว็บแล้ว แต่ไม่พบคำอธิบายที่น่าพอใจ
32 naming  variables 

11
typedefs และ #defines
เราทุกคนเคยใช้typedefและ#defineครั้งเดียวแน่นอน วันนี้ในขณะที่ทำงานกับพวกเขาฉันเริ่มไตร่ตรองในบางสิ่ง พิจารณาสถานการณ์ด้านล่าง 2 สถานการณ์เพื่อใช้intประเภทข้อมูลที่มีชื่ออื่น: typedef int MYINTEGER และ #define MYINTEGER int เช่นเดียวกับสถานการณ์ข้างต้นเราสามารถทำสิ่งต่าง ๆ ได้โดยใช้ #define และทำได้เช่นเดียวกันโดยใช้ typedef แม้ว่าวิธีการที่เราทำแบบเดียวกันอาจแตกต่างกันมาก #define ยังสามารถทำการกระทำของ MACRO ซึ่ง typedef ไม่สามารถทำได้ แม้ว่าเหตุผลพื้นฐานสำหรับการใช้งานนั้นแตกต่างกัน แต่การทำงานต่างกันอย่างไร เมื่อใดที่ควรจะเป็นที่ต้องการมากกว่ากันเมื่อทั้งสองสามารถใช้? อีกอย่างหนึ่งรับประกันได้ว่าจะเร็วกว่าสถานการณ์อื่นหรือไม่ (เช่น #define เป็นคำสั่งของตัวประมวลผลล่วงหน้าดังนั้นทุกอย่างจะทำเร็วกว่าการคอมไพล์หรือรันไทม์)

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

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

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