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

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

5
จะให้เพื่อนร่วมทีมรู้ได้อย่างไรว่าการเปลี่ยนแปลงของฉันกับวัตถุเป็นอย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว สมมติว่าฉันมีวัตถุ PHP สมมติว่า: companyObj class companyObj { private company_name; private company_address; public function print_contact() { //logic } } นี่คือสิ่งที่ฉันเขียนและแชร์กับเพื่อนร่วมทีม ตอนนี้ฉันต้องการทำให้มีประสิทธิภาพมากขึ้นเช่นนี้ class companyObj { private company_name; private company_address; private company_contact_person; public function print_contact() { //logic updated } } ตอนนี้ฉันจะแจ้งเพื่อนร่วมทีมของฉันได้อย่างไรว่าวัตถุของฉันมีคุณสมบัติมากกว่าที่พวกเขาสามารถตั้งค่าได้ แทนที่จะส่งอีเมลให้กับทุกคนในทีมพัฒนาฉันจะทำให้ทีมรู้ได้อย่างไรว่าเกิดอะไรขึ้นเมื่อฉันไม่ต้องการให้เพื่อนร่วมทีมเสียเวลาเพื่อดูว่ามีการเปลี่ยนแปลงอะไรในระดับซอร์สโค้ด

3
วิธีการประมาณความเร็วในการวิ่งด้วยความจุของทีมที่แตกต่างกันอย่างไร
เราเป็นทีมเล็ก ๆ ของ 4 devs ค่อนข้างสีเขียวใน Scrum มาจากทั่วประเทศเรามักจะหยุดวันหยุดหรือทั้งสัปดาห์เพื่อกลับบ้าน ดังนั้นความสามารถของทีมของเราจึงเปลี่ยนไปอย่างมากจากการทำซ้ำหนึ่งรอบไปอีกอันเนื่องมาจากใบไม้ประจำปีซึ่งนำไปสู่ความเร็วที่แตกต่างกันมากจากการทำซ้ำหนึ่งไปยังอีก เราจะอธิบายความสามารถของทีมเมื่อประมาณความเร็วในการประชุมวางแผนอย่างไร ข้อมูลประวัติจะสะท้อนความสามารถที่แตกต่างกันมากและเราไม่สามารถรอได้ทั้งปีเพื่อหาค่าเฉลี่ยสำหรับความเร็วในการประมาณการของเรา

3
ค่าที่คำนวณได้และการอ่านอย่างง่าย - ความเจ็บปวดที่จู้จี้สำหรับการออกแบบโดเมนของฉัน!
ปัญหาที่ฉันเผชิญอย่างต่อเนื่องคือวิธีจัดการกับค่าที่คำนวณโดยตรรกะของโดเมนในขณะที่ยังทำงานได้อย่างมีประสิทธิภาพกับที่เก็บข้อมูล ตัวอย่าง: ฉันกำลังส่งคืนรายการผลิตภัณฑ์จากที่เก็บของฉันผ่านบริการ รายการนี้ถูก จำกัด โดยข้อมูลเลขหน้าจากคำขอ DTO ที่ส่งโดยลูกค้า นอกจากนี้ DTO ยังระบุพารามิเตอร์การเรียงลำดับ (enum ที่เหมาะกับลูกค้า) ในสถานการณ์ง่าย ๆ ทุกอย่างใช้งานได้ดี: บริการส่งเพจและเรียงลำดับนิพจน์ไปยัง repo และ repo ออกแบบสอบถามที่มีประสิทธิภาพไปยังฐานข้อมูล ทุกอย่างพังทลายลงมาเมื่อฉันต้องเรียงลำดับค่าที่สร้างขึ้นในหน่วยความจำจากโมเดลโดเมนของฉัน ตัวอย่างเช่นระดับสินค้ามีวิธี IsExpired () ที่ส่งกลับค่าบูลตามตรรกะทางธุรกิจ ตอนนี้ฉันไม่สามารถจัดเรียงและเพจที่ระดับ repo ได้ทุกอย่างจะต้องทำในหน่วยความจำ (ไม่มีประสิทธิภาพ) และบริการของฉันจะต้องทราบความซับซ้อนของเวลาที่จะออก params เหล่านี้ไปยัง repo และเมื่อทำการเรียงลำดับ / การเพจ ตัวเอง รูปแบบเดียวที่ดูเหมือนสมเหตุสมผลสำหรับฉันคือการจัดเก็บสถานะของเอนทิตีใน db (ทำให้ IsExpired () เป็นฟิลด์แบบอ่านอย่างเดียวและอัปเดตผ่านตรรกะโดเมนก่อนการบันทึก) ถ้าฉันแยกตรรกะนี้เป็นที่เก็บ "read model / dto" และ …

7
ใช้งานจริงของการเขียนโปรแกรมฟังก์ชั่น? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังพยายามทำความคุ้นเคยกับภาษาต่าง ๆ เพื่อทำความเข้าใจกับสิ่งที่แต่ละคนเก่งมาก จนถึงตอนนี้ฉันได้ขลุกเป็น C - ภาษาขั้นตอน, C ++ และ java - ภาษาที่พิมพ์แบบคงที่ Object Oriented language และ groovy - เป็นภาษา Object Oriented ที่พิมพ์แบบไดนามิก ภาษาโปรแกรมทุกภาษาอาจเริ่มตอบสนองความต้องการ และฉันคิดว่าทุกภาษาดีมากอย่างน้อยหนึ่งอย่างเพราะมันกลายเป็นมาตรฐานในพื้นที่หรือสาขาที่เฉพาะเจาะจง เช่น C, C ++ กลายเป็นมาตรฐานในด้านต่างๆเช่นเบราว์เซอร์หรือการพัฒนาเกม Python ในโลก Linux สำหรับความสามารถในการเขียนสคริปต์อย่างง่าย Java ในโลกธุรกิจ ฯลฯ ตอนนี้ฉันสนใจที่จะเรียนรู้ภาษาโปรแกรมการทำงานเช่น Clojure หรือ Lisp ดังนั้นภาษาการเขียนโปรแกรมเชิงฟังก์ชั่นที่ใช้ในสถานการณ์โลกจริง ฉันไม่คิดว่าจะใช้ …

4
มีอะไรผิดปกติในการส่งคืน hashtable จากวิธีสาธารณะและเมื่อไหร่ที่ควรทำเช่นนั้น
อะไรคือปัญหาการออกแบบในการคืนค่า hashtable จากวิธีสาธารณะเมื่อคุณต้องการคืนหลายรายการแทนที่จะสร้างคลาสและคืนค่าวัตถุของสิ่งนั้น หากมีปัญหาแล้วภายใต้สถานการณ์ใดที่เหมาะสมที่จะทำเช่นนั้น คำตอบของคำถามนี้เปลี่ยนไปอย่างไรขึ้นอยู่กับว่าภาษานั้นเป็นแบบไดนามิกหรือไม่? แก้ไข:นี่คือการชี้แจงว่าคีย์จะคงที่และเป็นส่วนหนึ่งของรหัสไม่ใช่ข้อมูล สิ่งที่เรามักจะสร้างชั้นเรียน คำถามคือทำไมการใช้ hashtable ไม่ถูกต้องหากสร้างคลาสจริง ๆ แล้วเป็นตัวเลือกที่ถูกต้อง

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

7
คุณสมบัติที่จำเป็นสำหรับการวางแนววัตถุคืออะไร?
ฉันแค่สงสัยว่าคุณสมบัติหรือภาษาใดที่ห้องสมุดต้องมีเพื่อให้มันถูกกำหนดให้เป็น 'Object Oriented' คือการจัดวางวัตถุบางสิ่งบางอย่างที่สามารถมากขึ้นหรือน้อยกว่าจะประสบความสำเร็จในการใด ๆวัตถุประสงค์ทั่วไปการเขียนโปรแกรมภาษาที่มีคุณสมบัติที่ดี? หรือเป็นสิ่งที่สามารถทำได้ในภาษาที่โฆษณาเฉพาะที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ? ตัวอย่างเช่นดูที่รหัส C ต่อไปนี้: SDL_Surface* screen = SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE); SDL_FreeSurface( screen ); หรือรหัสที่กล่าวถึงที่นี่ ตอนนี้โค้ดด้านบนไม่ได้ใช้การสืบทอด, ความแปรปรวนแบบรันไทม์ (?), ฟังก์ชั่นเสมือนจริง ฯลฯ แต่ดูเหมือนว่า OOP จะค่อนข้างดีสำหรับฉัน Object-Orientation เป็นเพียงการเขียนโค้ดซึ่งขึ้นอยู่กับโครงสร้างข้อมูลที่สร้างขึ้นได้และสามารถทำลายได้เช่นอ็อบเจกต์คลาสคลาส structs เป็นต้นซึ่งไม่ต้องการรูปแบบหรือคุณสมบัติพิเศษใด ๆ ที่จัดทำโดยภาษาโปรแกรมหรือไลบรารี ?

2
ฉันจะดีบักข้อยกเว้นที่ไม่สามารถทำซ้ำได้ง่ายและเกิดขึ้นในสภาพแวดล้อมการผลิตได้อย่างไร
ฉันกำลังทำงานกับปัญหาที่เกิดข้อยกเว้นเฉพาะในสภาพแวดล้อมการผลิตของเรา ฉันไม่สามารถเข้าถึงสภาพแวดล้อมเหล่านี้และฉันไม่รู้ว่าข้อยกเว้นนี้หมายถึงอะไร ดูคำอธิบายข้อผิดพลาดฉันไม่สามารถเข้าใจสาเหตุได้ javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure ใครช่วยกรุณาแนะนำฉันเกี่ยวกับวิธีการแก้ไขปัญหานี้หรือไม่

9
มันสมเหตุสมผลหรือไม่ที่จะหลีกเลี่ยงเฟรมเวิร์กเมื่อสร้าง webapp ขนาดใหญ่ด้วย PHP?
ในฐานะนักพัฒนาแอปพลิเคชันเว็บ PHP เป็นเวลาหลายปีฉันมีส่วนแบ่ง MVC และกรอบงานของฉัน ตอนแรกฉันคิดว่าพวกเขาเป็นสิ่งที่ดีที่สุดตั้งแต่หั่นขนมปัง; ทุกอย่างดูเหมือนจะง่ายมากที่จะใช้ อย่างไรก็ตามในตอนนี้ดูเหมือนว่าแอพพลิเคชั่นจะมีความซับซ้อนมากขึ้นเท่าไหร่ความยุ่งยากในการแนะนำก็มากขึ้นดังนั้นฉันต้องพัฒนาวิธีแก้ปัญหาเพื่อเอาชนะมัน การแก้ปัญหาดังกล่าวมักจะค่อนข้างยุ่งยากและซับซ้อนเนื่องจากฉันต้องเจาะลึกลงไปในรหัสแกนหลักของเฟรมเวิร์กและทำการเปลี่ยนแปลงเพื่อให้มันทำงานตามที่ฉันต้องการ ตัวอย่างเช่นในหนึ่งในโครงการของฉันที่ฉันใช้ Slim (C) + Idiorm (M) + Twig (V) (ซึ่งฉันเชื่อว่ามีความยืดหยุ่นมาก) ฉันต้องสร้างฟังก์ชันที่กำหนดเองเพื่อแสดงข้อมูลแบบไดนามิกในเทมเพลตหลัก ไม่มีกรอบฉันสามารถรัน mysql_query () ในไฟล์ที่รวมไว้ได้ โอเคกรอบงานเจ๋ง ๆ ถ้าฉันสร้างเว็บไซต์โปรไฟล์ บริษัท ที่เรียบง่าย ฉันสามารถชักรหัสในคืนเดียวและพวกเขามักจะพร้อมในตอนเช้าและจำนวนของการฝึกการเขียนโปรแกรมที่ดีและรูปแบบการออกแบบที่ฉันได้เรียนรู้จากพวกเขานั้นมีค่ามาก แต่จริงๆแล้วสำหรับเว็บแอปพลิเคชันที่ซับซ้อนเช่นระบบจัดการโรงเรียนแบบ all-in-one เว็บกรอบมักจะได้รับในทางของกระบวนการทางธุรกิจของฉันเช่นในตัวอย่างข้างต้น ดังนั้นคำถามของฉันคือ: ใช่ไหมที่จะกลับไปสู่พื้นฐานและใช้รหัส PHP มาตรฐานและ libaries ในการทำโปรเจ็กต์ต่อไปของฉันซึ่งอาจมีกรอบและไลบรารีที่มีค่าใช้จ่ายสูงถึงพันล้านหากฉันสามารถใช้วิธีการเขียนโค้ดที่ดี ชอบ MVC ไหม ทีมพัฒนาของฉันค่อนข้างเล็ก: มีเพียงโปรแกรมเมอร์ 2 คนและนักออกแบบ 1 คน โปรแกรมเมอร์คนอื่นเห็นด้วยกับความคิดของฉันด้านบน

3
ทำไมเรามี. NET รสชาติมากมาย? มันเป็นสิ่งที่ดีหรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา NET Frameworkมี "รสชาติ" มากมาย: เต็ม ("ปกติ") ส่วนย่อยของโปรไฟล์ลูกค้า Silverlight ในเว็บเบราว์เซอร์ "Silverlight" บน Windows Phone กรอบขนาดกะทัดรัด WinRT เมื่อจำเป็นต้องใช้รหัส C # บนแพลตฟอร์มใหม่ดูเหมือนว่า Microsot ต้องการใช้ CLR แบบเต็มและตัดมันลงในชุดย่อยขนาดเล็กสร้างแอสเซมบลีและเคลื่อนย้ายชนิดใหม่แทนที่จะใช้ชุดประกอบที่มีอยู่เช่น BCL . ตัวอย่างเช่น Silverlight มีคลาส / วิธีการที่แตกต่างกันไปยัง WPF (แม้กระทั่งวิธีการบางอย่างที่มีลายเซ็นที่แตกต่างกันเล็กน้อยหรือการใช้งานที่แตกต่างกันมาก) แทนการอ้างอิงการใช้งานแบบเดียวList<T>กับ WPF นี่เป็นสถาปัตยกรรมในอุดมคติหรือเป็นสัญลักษณ์ของมรดกหรือไม่? BCL ไม่ควรรันบนทุกแพลตฟอร์มโดยมีเพียงไลบรารีการนำเสนอ / IO ที่แตกต่างกันในแต่ละอัน? หรือ BCL …

7
string.format กับตัวแปรเทียบกับตัวแปรอินไลน์
ข้อดี / ข้อเสีย (ถ้ามี) คืออะไรที่จะใช้ string output; int i = 10; output = string.Format("the int is {0}", i); กับ string output; int i = 10; output = "the int is " + i; ฉันได้ใช้ตัวอย่างหลังเสมอ แต่ดูเหมือนว่าบทเรียนออนไลน์ส่วนใหญ่จะใช้ตัวอย่าง string.format ฉันไม่คิดว่ามีความแตกต่างที่แท้จริงในแง่ของประสิทธิภาพความคิดเริ่มต้นของฉันคือ coder จึงไม่ต้องแยกสตริงเพื่อแทรกตัวแปร
9 c#  .net  vb.net  strings 

4
วิธีที่ดีที่สุดในการค้นหาข้อมูลจาก MS SQL Server ใน C #?
วิธีที่ดีที่สุดในการสืบค้นข้อมูลจาก MS SQL Server ใน C # คืออะไร ฉันรู้ว่ามันไม่ใช่วิธีปฏิบัติที่ดีที่จะมีคิวรี่ SQL ในโค้ด เป็นวิธีที่ดีที่สุดในการสร้างขั้นตอนการจัดเก็บและเรียกมันจาก C # ด้วยพารามิเตอร์หรือไม่ using (var conn = new SqlConnection(connStr)) using (var command = new SqlCommand("StoredProc", conn) { CommandType = CommandType.StoredProcedure }) { conn.Open(); command.ExecuteNonQuery(); conn.Close(); }
9 c#  sql  sql-server 

2
วิธีแห้งในการเขียน Javadoc บนวิธีโอเวอร์โหลด
ฉันต้องการเขียน Javadoc ด้วยวิธี DRY แต่เอกสาร oracle เกี่ยวกับJavadocกล่าวว่าเขียนสิ่งเดียวกันอีกครั้งในความคิดเห็นของเมธอด overload ฉันไม่สามารถหลีกเลี่ยงการทำซ้ำได้หรือไม่

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

4
รุ่นการควบคุมขึ้นอยู่กับการจัดเก็บแบบพกพา?
ฉันพัฒนาโครงการส่วนบุคคลบนเครื่องสองเครื่องโดยไม่ใช้เซิร์ฟเวอร์ที่ใช้ร่วมกันหรือการเชื่อมต่อเครือข่ายระหว่างสองเครื่อง ระบบควบคุมเวอร์ชันทั่วไปใด ๆ รองรับการใช้ที่เก็บข้อมูลแบบพกพา (เช่นอุปกรณ์แฟลช USB) อย่างเชื่อถือได้หรือไม่?

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