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

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

9
เหตุใดจึงควรใช้ระบบไฟล์สำหรับบันทึกแทน RDBMS
คำถามควรชัดเจนจากชื่อ ตัวอย่างเช่น Apache บันทึกการเข้าถึงและบันทึกข้อผิดพลาดในไฟล์แทน RDBMS ไม่ว่าจะมีการใช้งานขนาดใหญ่หรือขนาดเล็กเพียงใดก็ตาม สำหรับ RDMS เราเพียงแค่ต้องเขียนแบบสอบถาม SQL และมันจะทำงานในขณะที่สำหรับไฟล์ที่เราต้องตัดสินใจในรูปแบบเฉพาะแล้วเขียน regex หรืออาจจะแยกวิเคราะห์เพื่อจัดการกับพวกเขา และสิ่งเหล่านั้นอาจล้มเหลวในกรณีพิเศษหากไม่ได้รับการดูแลที่ดี ดูเหมือนว่าทุกคนจะชอบระบบไฟล์เพื่อบำรุงรักษาบันทึก ฉันไม่ได้ลำเอียงกับวิธีการใด ๆ เหล่านี้ แต่ฉันอยากจะรู้ว่าทำไมมันถึงมีประสบการณ์เช่นนี้ มันคือความเร็วหรือการบำรุงรักษาหรืออย่างอื่น?

8
ทำไมคลาสไม่ควรถูกออกแบบให้“ เปิด”?
เมื่ออ่านคำถาม Stack Overflow และรหัสอื่น ๆ ข้อสรุปทั่วไปเกี่ยวกับวิธีการออกแบบคลาสจะปิดลง ซึ่งหมายความว่าโดยเริ่มต้นใน Java และ C # ทุกอย่างเป็นส่วนตัวฟิลด์เป็นที่สิ้นสุด, วิธีการบางอย่างเป็นที่สิ้นสุดและบางครั้งการเรียนเป็นที่สิ้นสุดแม้กระทั่ง แนวคิดเบื้องหลังนี้คือการซ่อนรายละเอียดการใช้งานซึ่งเป็นเหตุผลที่ดีมาก อย่างไรก็ตามด้วยการมีอยู่protectedในภาษา OOP ส่วนใหญ่และความแตกต่างนี้ไม่ทำงาน ทุกครั้งที่ฉันต้องการเพิ่มหรือเปลี่ยนฟังก์ชั่นการเรียนฉันมักจะถูกขัดขวางโดยส่วนตัวและสุดท้ายที่ทุกที่ รายละเอียดการใช้งานที่นี่มีความสำคัญ: คุณกำลังดำเนินการและขยายการดำเนินงาน อย่างไรก็ตามเนื่องจากฉันไม่สามารถเข้าถึงเขตข้อมูลส่วนตัวและสุดท้ายและวิธีการฉันมีสามตัวเลือก: อย่าขยายชั้นเรียนเพียงแก้ไขปัญหาที่นำไปสู่รหัสที่ซับซ้อนมากขึ้น คัดลอกและวางทั้งคลาสการฆ่ารหัสนำมาใช้ใหม่ แยกโครงการ นั่นไม่ใช่ตัวเลือกที่ดี เหตุใดจึงไม่protectedใช้ในโครงการที่เขียนเป็นภาษาที่รองรับ เหตุใดบางโครงการจึงห้ามไม่ให้สืบทอดจากคลาสของพวกเขาอย่างชัดเจน
44 code-reuse 

4
เพราะเหตุใด + จึงไม่ดีสำหรับการต่อข้อมูล
ทุกคนยังคงบอกว่าหนึ่งในปัญหาของ JavaScript กำลังใช้+[ ตัวอย่าง ] สำหรับการต่อสตริง บางคนบอกว่าไม่ได้ใช้ปัญหา+มันเป็นประเภทข่มขู่ [ดูความคิดเห็นจากตัวอย่างก่อนหน้านี้] แต่ภาษาที่พิมพ์อย่างรุนแรงใช้ + สำหรับการเรียงต่อกันและประเภทการรวมตัวโดยไม่มีปัญหาใด ๆ ตัวอย่างเช่นใน C #: int number = 1; MyObject obj = new MyObject(); var result = "Hello" + number + obj; // is equivalent to string result = "hello" + number.ToString() + obj.ToString(); ดังนั้นทำไมการต่อสตริงใน JavaScript จึงเป็นปัญหาใหญ่
44 javascript 

5
คุณจะโน้มน้าวผู้บริหารให้“ ลงทุน” ในการทดสอบหน่วยได้อย่างไร
คุณโน้มน้าวผู้จัดการของคุณให้ทดสอบหน่วยได้อย่างไร โดย "ใช้" ฉันหมายถึงได้รับอนุญาตให้พัฒนาเช็คอินเพื่อควบคุมแหล่งที่มาและรักษาการทดสอบหน่วยในช่วงเวลาอื่น ๆ การคัดค้านการจัดการทั่วไปคือ: ลูกค้าไม่ได้ชำระเงินสำหรับการทดสอบหน่วย โครงการไม่อนุญาตให้มีเวลาสำหรับการทดสอบหน่วย หนี้ทางเทคนิค? หนี้สินทางเทคนิคคืออะไร คุณรู้จักคำคัดค้านอื่น ๆ หรือไม่? คุณมีคำตอบอะไร ขอบคุณล่วงหน้า!

2
แนวทางที่ชัดเจนสำหรับการจัดการข้อผิดพลาดที่กำหนดเองใน ASP.NET MVC 3 มีอะไรบ้าง
กระบวนการในการจัดการข้อผิดพลาดที่กำหนดเองใน ASP.NET MVC (3 ในกรณีนี้) ดูเหมือนว่าจะถูกทอดทิ้งอย่างไม่น่าเชื่อ ฉันได้อ่านคำถามและคำตอบต่าง ๆ ที่นี่บนเว็บหน้าช่วยเหลือสำหรับเครื่องมือต่าง ๆ (เช่น Elmah) แต่ฉันรู้สึกว่าฉันได้เข้าสู่แวดวงที่สมบูรณ์และยังไม่มีทางออกที่ดีที่สุด ด้วยความช่วยเหลือของคุณบางทีเราสามารถกำหนดวิธีการมาตรฐานใหม่สำหรับการจัดการข้อผิดพลาด ฉันต้องการให้สิ่งต่าง ๆ เรียบง่ายและไม่ทำให้เกิดปัญหามากเกินไป นี่คือเป้าหมายของฉัน: สำหรับข้อผิดพลาดเซิร์ฟเวอร์ / ข้อยกเว้น: แสดงข้อมูลการดีบักใน dev แสดงหน้าข้อผิดพลาดที่เป็นมิตรในการผลิต บันทึกข้อผิดพลาดและส่งอีเมลถึงผู้ดูแลระบบในการผลิต ส่งคืนรหัสสถานะ HTTP 500 สำหรับข้อผิดพลาด 404 ไม่พบ: แสดงหน้าข้อผิดพลาดที่เป็นมิตร บันทึกข้อผิดพลาดและส่งอีเมลถึงผู้ดูแลระบบในการผลิต ส่งคืนรหัสสถานะ HTTP 404 มีวิธีในการบรรลุเป้าหมายเหล่านี้ด้วย ASP.NET MVC หรือไม่?

6
สามารถจดสิทธิบัตรอัลกอริทึมได้หรือไม่ [ปิด]
ดังนั้นอัลกอริทึมจะสามารถจดสิทธิบัตร? ฉันเห็นข้อความนี้ซึ่งทำให้ฉันคิดว่า: ทุกคนจะงดเว้นจากการจดสิทธิบัตรการปรับปรุงจุดเส้นขอบรูปแบบเป็นเวลาอย่างน้อยหลายปีพูดจนถึง 2021 เพื่อให้นักพัฒนาโครงการ Outliner รู้สึกอิสระที่จะใช้ความคิดของพวกเขา นำมาจากโครงการcodeplexนี้

16
คุณจะอธิบาย“ รหัสที่สวยงาม” ให้กับผู้ที่ไม่ใช่โปรแกรมเมอร์ได้อย่างไร [ปิด]
เมื่อพูดกับเพื่อนที่ไม่ใช่โปรแกรมเมอร์ฉันได้พูดถึงแนวคิดของ "รหัสที่สวยงาม" และเธอต้องการที่จะเข้าใจความหมายของสิ่งนั้น แต่ฉันก็รู้สึกว่าจะอธิบายให้คนที่ไม่มี บริบทใด ๆ เมื่อโค้ดทั้งหมดดูเหมือนว่าไม่มีความหมายต่อใครสักคนคุณจะอธิบายได้อย่างไรว่าอะไรทำให้โค้ดชิ้นหนึ่งสวยกว่าอีกรหัสหนึ่ง การเปรียบเทียบอาจมีประโยชน์เช่นกัน
44 aesthetics 

23
ทำไมโปรแกรมเมอร์ที่ดีจึงมีเว็บไซต์ที่น่าเกลียด [ปิด]
นี่เป็นกฎของเมอร์ฟีหรือเปล่า? บางทีถ้าฉันต้องการจ้างนินจานักเขียนโปรแกรมที่ดีฉันควรตรวจสอบเว็บไซต์ของเขาใน "แสดงเว็บไซต์ของคุณและฉันจะบอกว่าคุณเก่งแค่ไหน" แก้ไข: ไปที่แท็บผู้ใช้ระดับสูงของ stackoverflow และคุณจะเห็น

19
สิ่งที่ต้องทำเกี่ยวกับ "หยุดจุดโรค"?
ฉันสังเกตเห็นพฤติกรรมในตัวเองว่าฉันเรียกว่า "stopping point syndrome" ... หมายความว่าฉันไม่สามารถหยุดทำงานได้จนกว่าจะถึง "stopping point" (หรือฉันหมดแรง) กล่าวอีกนัยหนึ่งถ้าฉันอยู่ในโซนที่ทำงานเกี่ยวกับการทำให้คุณสมบัติเสร็จสมบูรณ์ฉันจะไม่หยุดจนกว่าจะเสร็จสิ้น หากเป็นข้อผิดพลาดที่ฉันกำลังทำอยู่เอฟเฟกต์นี้จะเด่นชัดยิ่งขึ้น ... ฉันจะไม่หยุดจนกว่าจะได้รับการแก้ไขหรืออย่างน้อยก็เข้าใจ แม้ว่าฉันจะทำงานจากแล็ปท็อปและมี VPN และสามารถกลับบ้านได้อย่างง่ายดายและรับงานในภายหลังในเย็นวันนั้นความจริงนั้นไม่ได้ช่วยให้ฉันออกจากงาน ... มันเหมือนว่าฉันกลัวว่าฉันจะตายก่อนที่ฉันจะพบจุดบกพร่อง . ฉันมีเวลายากมากที่จะอธิบายเรื่องนี้กับสมาชิกในครอบครัวที่ไม่สามารถเข้าใจได้ว่าทำไมฉันถึงไม่กลับบ้านจากการทำงานในเวลาเดียวกันและบางครั้งก็กลับบ้านเวลา 23.00 น. แม้แต่ผู้จัดการก็ยังงงกับสิ่งนี้และฉันสังเกตว่าเพื่อนร่วมงานส่วนใหญ่ของฉันไม่มีปัญหาในการทำงานในเวลาเดียวกันทุกวัน ไม่มีใครมีปัญหานี้หรือไม่? ฉันควรจะกังวลเกี่ยวกับเรื่องนี้และ / หรือพยายามที่จะเปลี่ยน? ถ้าเป็นเช่นนั้นได้อย่างไร

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

30
“ คุณมีข้อสงสัยสำหรับเราไหม” ในการสัมภาษณ์ [ปิด]
คุณรู้จัก บริษัท ที่คาดหวังค่อนข้างดี แต่ถูกถามว่า "คุณมีคำถามใด ๆ สำหรับเรา" เพื่อแสดงความสนใจคำถามที่คุณชื่นชอบในการตอบคืออะไร
44 interview 

7
ทำไมกรณีที่เลวร้ายที่สุดสำหรับฟังก์ชั่นนี้ O (n ^ 2)
ฉันพยายามสอนตัวเองถึงวิธีการคำนวณสัญกรณ์ BigO สำหรับฟังก์ชั่นโดยพลการ ฉันพบฟังก์ชันนี้ในตำราเรียน หนังสือยืนยันว่าฟังก์ชันนั้นเป็น O (n 2 ) มันให้คำอธิบายว่าทำไมถึงเป็นเช่นนี้ แต่ฉันพยายามที่จะติดตาม ฉันสงสัยว่าใครบางคนอาจแสดงคณิตศาสตร์ให้ฉันฟังได้ไหมว่าทำไมถึงเป็นเช่นนั้น ฉันเข้าใจว่ามันเป็นอะไรที่น้อยกว่า O (n 3 ) แต่ฉันไม่สามารถลงจอดบน O (n 2 ) ได้อย่างอิสระ สมมติว่าเราได้รับสามลำดับของตัวเลข A, B และ C เราจะสมมติว่าไม่มีลำดับแต่ละรายการมีค่าซ้ำกัน แต่อาจมีบางตัวเลขที่อยู่ในลำดับที่สองหรือสาม ปัญหาความไม่ลงรอยกันชุดสามทางคือการตรวจสอบว่าจุดตัดของทั้งสามลำดับนั้นว่างเปล่าหรือไม่นั่นคือไม่มีองค์ประกอบ x เช่น x x A, x ∈ B, และ x ∈ C อนึ่งนี่ไม่ใช่ปัญหาการบ้านสำหรับฉัน - เรือลำนั้นแล่นไปเมื่อหลายปีก่อน) ฉันแค่พยายามฉลาดขึ้น def disjoint(A, B, …
44 python  big-o 

5
ทำความเข้าใจความแตกต่างของสาขาระหว่าง SVN และ Git
ฉันเป็นผู้ใช้ของ SVN และตอนนี้ฉันกำลังเรียนรู้ Git ใน SVN ฉันมักจะเช็คเอาต์ repo บนเครื่องของฉันซึ่งรวมถึงสาขาทั้งหมดในโครงการของฉันและฉันเคยเลือกโฟลเดอร์สำหรับสาขาที่ฉันสนใจและทำงานที่นั่น ฉันเห็นความแตกต่างโดยใช้ Git ขณะนี้ฉันกำลังโคลน repo และโคลนสาขาเฉพาะโดยใช้ gitk โฟลเดอร์โปรเจ็กต์มีเฉพาะเนื้อหาสำหรับสาขานั้นและฉันไม่เห็นทุกสาขาเหมือนใน SVN ซึ่งทำให้ฉันสับสนเล็กน้อย ฉันไม่สามารถหาวิธีง่าย ๆ ในการดูสาขาทั้งหมดในที่เก็บในพื้นที่ของฉันโดยใช้ Git ฉันต้องการทราบว่ากระบวนการ Git ที่ฉันอธิบายนั้นเป็น "มาตรฐาน" หรือไม่และถูกต้องหรือไม่ นอกจากนี้ฉันต้องการทราบวิธีจัดการกับกระบวนการที่ฉันต้องการทำงานในสองสาขาในเวลาเดียวกันในกรณีเช่นฉันต้องสร้างโปรแกรมแก้ไขด่วนบนต้นแบบ แต่เก็บเนื้อหาของสาขาอื่นด้วย ข้อตกลงการใช้ชื่อที่แนะนำในการสร้างโฟลเดอร์ซึ่งรวมถึงการโคลนสาขาจาก repo ใน Git myproject-branchnameคืออะไร?
44 git  github 

3
สถาปัตยกรรมสะอาดของลุงบ๊อบ - คลาสเอนทิตี้ / โมเดลสำหรับแต่ละเลเยอร์
พื้นหลัง : ฉันกำลังพยายามใช้สถาปัตยกรรมที่สะอาดของลุงบ็อบในแอพ Android ของฉัน ฉันศึกษาโครงการโอเพนซอร์ซจำนวนมากที่พยายามแสดงวิธีการที่ถูกต้องและฉันพบว่ามีการนำไปใช้ที่น่าสนใจโดยใช้ RxAndroid สิ่งที่ฉันสังเกตเห็น: ในทุกเลเยอร์ (งานนำเสนอโดเมนและข้อมูล) มีคลาสโมเดลสำหรับเอนทิตีเดียวกัน (พูดถึง UML) นอกจากนี้ยังมีคลาส mapper ที่ดูแลการเปลี่ยนแปลงของวัตถุเมื่อใดก็ตามที่ข้อมูลข้ามเขตแดน (จากชั้นหนึ่งไปอีกชั้นหนึ่ง) คำถาม: มันจำเป็นต้องมีคลาสของโมเดลในทุกเลเยอร์หรือไม่เมื่อฉันรู้ว่าพวกมันทั้งหมดจะจบลงด้วยคุณลักษณะเดียวกันหากจำเป็นต้องใช้การดำเนินการ CRUD ทั้งหมดหรือไม่ หรือว่าเป็นกฎหรือแนวปฏิบัติที่ดีที่สุดเมื่อใช้สถาปัตยกรรมสะอาดหรือไม่

4
ทำไมนักพัฒนา C # ขึ้นบรรทัดใหม่การเปิดวงเล็บ [ปิด]
ฉันใช้เวลาส่วนใหญ่ในช่วงหลายปีที่ผ่านมาทำงานเป็นหลักกับ C # และ SQL โปรแกรมเมอร์ทุกคนที่ฉันทำงานด้วยในช่วงเวลานั้นอยู่ในนิสัยของการวางวงเล็บเปิดของคำสั่งฟังก์ชั่นหรือการควบคุมการไหลของบรรทัดใหม่ ดังนั้น ... public void MyFunction(string myArgument) { //do stuff } if(myBoolean == true) { //do something } else { //do something else } ฉันได้รับการหลงโดยพื้นที่ที่สิ้นเปลืองนี้โดยเฉพาะในงบ / อื่น ๆ และฉันรู้ว่ามีตัวเลือกอื่นใน C # รุ่นที่ใหม่กว่าเช่น: if(myBoolean == true) //do something on one line of code แต่ไม่ค่อยมีใครใช้พวกเขา ทุกคนทำสิ่งที่หยิก - …
44 java  c#  javascript  syntax 

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