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

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

7
มีคำหลักหรือโอเปอเรเตอร์สำหรับ“ หรือ” หรือไม่?
มีผู้ประกอบการเทียบเท่าหรือไม่? ตัวอย่างเช่นสีโปรดของฉันไม่ได้เป็นสีเขียวหรือสีน้ำเงิน และรหัสจะเทียบเท่ากับ: // example one if (color!="green" && color!="blue") { } // example two if (x nor y) { // x is false and y is false }
56 operators 

5
ฉันควรส่งคืนสถานะ HTTP 400 (คำขอไม่ถูกต้อง) หากพารามิเตอร์ถูกต้องทางไวยากรณ์ แต่ละเมิดกฎทางธุรกิจหรือไม่
บอกว่าฉันมีปลายทาง REST ที่ใช้จำนวนเต็มเป็นพารามิเตอร์: /makeWaffles?numberOfWaffles=3 ในกรณีนี้ฉันต้องการให้ตัวเลขเป็นบวกเพราะฉันไม่สามารถลบจำนวนวาฟเฟิลได้ (และการขอ 0 วาฟเฟิลเป็นการเสียเวลา) ดังนั้นฉันต้องการปฏิเสธคำขอใด ๆ ที่ไม่มีจำนวนเต็มบวก ฉันต้องการปฏิเสธคำขอที่มีจำนวนเต็มที่เกินจำนวนสูงสุด (สมมติว่าเป็น MAX_INTEGER) ในกรณีที่มีคนขอวาฟเฟิลในจำนวนที่ไม่เป็นบวกฉันควรส่งคืนสถานะ HTTP 400 (คำขอไม่ถูกต้อง) หรือไม่ ความคิดเริ่มต้นของฉันคือใช่: ไม่ใช่หมายเลขที่ถูกต้องสำหรับฉันที่จะทำตามคำขอ อย่างไรก็ตามRFCไม่ได้กล่าวถึงกฎเกณฑ์ทางธุรกิจว่าเป็นเหตุผลในการ: รหัสสถานะ 400 (คำขอไม่ถูกต้อง) บ่งชี้ว่าเซิร์ฟเวอร์ไม่สามารถหรือไม่สามารถประมวลผลคำขอเนื่องจากสิ่งที่ถูกมองว่าเป็นข้อผิดพลาดของลูกค้า (เช่นไวยากรณ์คำขอที่ผิดรูปแบบ, กรอบข้อความคำขอที่ไม่ถูกต้องหรือการกำหนดเส้นทางคำขอหลอกลวง) กฎทางธุรกิจไม่ได้อยู่ภายใต้ตัวอย่างใด ๆ มันถูกต้องทางไวยากรณ์มีการวางกรอบอย่างเหมาะสมและไม่ได้กำหนดเส้นทางคำขอที่หลอกลวง ดังนั้นฉันควรคืนสถานะ HTTP 400 (คำขอไม่ถูกต้อง) หากพารามิเตอร์ถูกต้องทางไวยากรณ์ แต่ละเมิดกฎทางธุรกิจหรือไม่ หรือมีสถานะที่เหมาะสมกว่าที่จะกลับมา?
56 api-design  http 

4
มีเหตุผลที่ดีในการใช้งานซอฟต์แวร์ 32 บิตแทนที่จะเป็น 64 บิตบนเครื่อง 64 บิตหรือไม่?
มีเหตุผลที่ดีในการจัดหาเวอร์ชั่น 32 บิตพร้อมกับซอฟต์แวร์ 64- บิตรุ่นใดที่มีเป้าหมายที่เครื่องเดสก์ท็อปสมัยใหม่เรียกใช้ระบบปฏิบัติการ 64- ​​บิตสมัยใหม่บนฮาร์ดแวร์ 64 บิตหรือไม่? ดูเหมือนว่าซอฟต์แวร์ 64 บิตจะมีประสิทธิภาพมากขึ้นอนุญาตให้ใช้หน่วยความจำได้สูงขึ้นหากจำเป็น ฯลฯ Apple ยังใช้โปรเซสเซอร์ 64- บิตสำหรับโทรศัพท์แม้ว่าจะมี RAM เพียง 1-2 GB หรือต่ำกว่า 4 GB จำกัด สำหรับ CPU แบบ 32 บิต

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

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

5
เหตุใดการดีบักแบบย้อนกลับจึงไม่ค่อยได้ใช้ [ปิด]
gdb นำการสนับสนุนสำหรับการดีบักแบบย้อนกลับในปี 2009 (ด้วย gdb 7.0) ฉันไม่เคยได้ยินมาก่อนจนกระทั่งปี 2012 ตอนนี้ฉันพบว่ามีประโยชน์อย่างมากสำหรับปัญหาการดีบักบางประเภท ฉันหวังว่าฉันเคยได้ยินมาก่อน แก้ไขให้ถูกต้องหากฉันผิด แต่ความประทับใจของฉันคือเทคนิคยังไม่ค่อยมีใครใช้และคนส่วนใหญ่ไม่รู้ว่ามีอยู่จริง ทำไม? คุณรู้จักชุมชนการเขียนโปรแกรมใด ๆ ที่มีการใช้การดีบักแบบย้อนกลับหรือไม่? ข้อมูลพื้นฐาน: Stackoverflow: การดีบักแบบย้อนกลับทำงานอย่างไร gdb ใช้คำว่า "reverse debugging" แต่ผู้ขายรายอื่นใช้คำอื่น ๆ สำหรับเทคนิคที่เหมือนกันหรือคล้ายกัน: Microsoft เรียกมันว่าIntelliTraceหรือ "Historical Debugging" มี Java reverse debugger ที่เรียกว่าOmniscient Debuggerแม้ว่ามันอาจจะไม่ทำงานใน Java 6 อีกต่อไป มีตัวแก้ไขการย้อนกลับ Java อื่น ๆ ดีบักเกอร์ของ OCaml (ocamldebug) เรียกมันว่าการเดินทางข้ามเวลา
56 debugging 

6
เมื่อใดควรใช้การอ้างอิงที่อ่อนแอใน. Net
ฉันไม่ได้เจอกับสถานการณ์ที่ฉันต้องการใช้ WeakReference ใน. Net แต่โดยส่วนตัวแล้วความเชื่อที่ได้รับความนิยมดูเหมือนว่าควรจะใช้ในแคช ดรจอน Harrop ให้กรณีที่ดีมากกับการใช้งานของ WeakReferences ในแคชของเขาในคำตอบไปนี้คำถาม ฉันมักจะได้ยินนักพัฒนา AS3 พูดคุยเกี่ยวกับการใช้การอ้างอิงที่อ่อนแอเพื่อบันทึกในหน่วยความจำ แต่จากการสนทนาที่ฉันมีมันดูเหมือนว่าจะเพิ่มความซับซ้อนโดยไม่จำเป็นต้องบรรลุเป้าหมายที่กำหนดไว้และพฤติกรรมของรันไทม์ค่อนข้างไม่แน่นอน มากเสียจนหลายคนยอมแพ้และจัดการการใช้หน่วยความจำอย่างระมัดระวังมากขึ้น / เพิ่มประสิทธิภาพรหัสของพวกเขาเพื่อให้หน่วยความจำน้อยมาก (หรือทำให้การแลกเปลี่ยนรอบ CPU และหน่วยความจำขนาดเล็กลง) ดร. จอน Harrop ยังชี้ให้เห็นในคำตอบของเขาว่าการอ้างอิงที่อ่อนแอของ. Net นั้นไม่นุ่มนวลและมีการรวบรวมการอ้างอิงที่อ่อนแอใน gen0 จากการอ้างอิงของMSDNการอ้างอิงที่ไม่รัดกุมจะช่วยให้คุณสามารถสร้างวัตถุใหม่ได้but the state of the object remains unpredictable.! จากลักษณะเหล่านี้ฉันไม่สามารถนึกถึงสถานการณ์ที่การอ้างอิงที่อ่อนแอจะมีประโยชน์บางทีใครบางคนสามารถทำให้ฉันเข้าใจได้

14
รักษาภาษาการเขียนโปรแกรมไว้ด้านหลังและแก้ไขข้อบกพร่อง
ขั้นแรกให้บริบท (สิ่งที่คุณส่วนใหญ่รู้อยู่แล้ว): ภาษาการเขียนโปรแกรมยอดนิยมทุกภาษามีวิวัฒนาการที่ชัดเจนเวลาส่วนใหญ่ถูกทำเครื่องหมายโดยเวอร์ชัน: คุณมี Java 5, 6, 7 ฯลฯ , PHP 5.1, 5.2, 5.3 ฯลฯ การปล่อยเวอร์ชันใหม่ทำให้ API ใหม่พร้อมใช้งานแก้ไขข้อบกพร่องเพิ่ม คุณสมบัติใหม่กรอบใหม่ ฯลฯ ดังนั้นทั้งหมด: ดี แต่ปัญหาของภาษา (หรือแพลตฟอร์ม) เกี่ยวกับอะไร? หากและเมื่อมีสิ่งผิดปกติในภาษานักพัฒนาอาจหลีกเลี่ยง (ถ้าพวกเขาสามารถ) หรือพวกเขาเรียนรู้ที่จะอยู่กับมัน ตอนนี้ผู้พัฒนาภาษาเหล่านั้นได้รับข้อเสนอแนะมากมายจากโปรแกรมเมอร์ที่ใช้ภาษาเหล่านั้น ดังนั้นจึงเป็นเรื่องที่เข้าใจได้ว่าเมื่อเวลา (และหมายเลขเวอร์ชั่น) ผ่านไปปัญหาในภาษาเหล่านั้นจะช้าลง แต่จะหายไปอย่างแน่นอน ก็ไม่ได้จริงๆ ทำไม? ความเข้ากันได้ย้อนหลังนั่นเป็นเหตุผล แต่ทำไมถึงเป็นเช่นนั้น? อ่านด้านล่างสำหรับสถานการณ์ที่เป็นรูปธรรมมากขึ้น วิธีที่ดีที่สุดที่ฉันสามารถอธิบายคำถามของฉันคือการใช้ PHP เป็นตัวอย่าง: PHP เป็นที่รักและเกลียดชังคนหลายพันคน ทุกภาษามีข้อบกพร่อง แต่เห็นได้ชัดว่า PHP นั้นพิเศษ ลองดูโพสต์บล็อกนี้ มันมีรายการที่ยาวมากของข้อบกพร่องที่เรียกว่าใน PHP …

5
jQuery เป็นตัวอย่างของ antipattern“ พระเจ้าวัตถุ” หรือไม่
ฉันต้องการถาม - ฉันเรียนรู้ช้า jQuery สิ่งที่ฉันเห็นเป็นตัวอย่างที่แน่นอนของพระเจ้าวัตถุต่อต้านรูปแบบ โดยพื้นฐานแล้วทุกอย่างจะเข้าสู่$ฟังก์ชั่นไม่ว่าจะเป็นอะไรก็ตาม ฉันพูดถูกและเป็น jQuery จริง ๆ แล้วเป็นตัวอย่างของรูปแบบการต่อต้านนี้หรือไม่

8
ฉันจะพิสูจน์หรือหักล้าง“ วัตถุพระเจ้า” ผิดได้อย่างไร?
สรุปปัญหา: เรื่องสั้นสั้นฉันได้รับรหัสฐานและทีมพัฒนาที่ฉันไม่ได้รับอนุญาตให้แทนที่และการใช้ God Objects เป็นปัญหาใหญ่ ก้าวไปข้างหน้าฉันต้องการให้เราทำปัจจัยอีกครั้ง แต่ฉันได้รับการผลักดันกลับจากทีมที่ต้องการทำทุกอย่างกับ God Objects "เพราะมันง่ายกว่า" และนี่หมายความว่าฉันจะไม่ได้รับอนุญาตให้ทำปัจจัยอีกครั้ง ฉันผลักดันการอ้างอิงประสบการณ์การพัฒนาเป็นเวลาหลายปีว่าฉันเป็นเจ้านายคนใหม่ที่ได้รับการว่าจ้างให้รู้จักสิ่งเหล่านี้และอื่น ๆ บริษัท ภายนอกในต่างประเทศทำบัญชีตัวแทนฝ่ายขายและตอนนี้อยู่ในระดับผู้บริหารและการประชุมของฉัน เป็นวันพรุ่งนี้และฉันต้องการที่จะใช้กระสุนทางเทคนิคจำนวนมากเพื่อสนับสนุนการปฏิบัติที่ดีที่สุดเพราะฉันรู้สึกว่ามันจะถูกลงในระยะยาว (และโดยส่วนตัวฉันรู้สึกว่าเป็นสิ่งที่บุคคลที่สามเป็นห่วง) สำหรับ บริษัท ปัญหาของฉันมาจากระดับเทคนิคฉันรู้ดีในระยะยาว แต่ฉันมีปัญหากับระยะสั้นพิเศษและ 6 เดือนในขณะที่บางสิ่งที่ฉัน "รู้" ฉันไม่สามารถพิสูจน์ได้ด้วยการอ้างอิงและแหล่งอ้างอิงภายนอก ของคนคนหนึ่ง (Robert C. Martin หรือลุงลุง Bob) นั่นคือสิ่งที่ฉันถูกขอให้ทำเพราะฉันได้รับการบอกว่ามีข้อมูลจากบุคคลหนึ่งและมีเพียงคนเดียวเท่านั้น (Robert C Martin) ไม่ดีพอที่จะโต้แย้ง . คำถาม: มีแหล่งข้อมูลอะไรบ้างที่ฉันสามารถอ้างอิงได้โดยตรง (ชื่อเรื่อง, ปีที่พิมพ์, หมายเลขหน้า, คำพูด) โดยผู้เชี่ยวชาญที่รู้จักกันดีในสาขาที่กล่าวอย่างชัดเจนว่าการใช้ "พระเจ้า" วัตถุ / คลาส / ระบบนี้ไม่ดี …

7
เหตุใดจึงมีคลาสสตริงจำนวนมากในหน้าของ std :: string?
สำหรับฉันแล้วดูเหมือนว่าไลบรารี C ++ ที่ใหญ่กว่านั้นจะสร้างประเภทสตริงของตัวเองขึ้นมา ในรหัสลูกค้าที่คุณอาจจะต้องใช้อย่างใดอย่างหนึ่งจากห้องสมุด ( QString, CString, fbstringฯลฯ ฉันแน่ใจว่าทุกคนสามารถชื่อไม่กี่) หรือเก็บแปลงระหว่างชนิดมาตรฐานและเป็นหนึ่งในการใช้ห้องสมุด (ซึ่งใช้เวลาส่วนใหญ่เกี่ยวข้องกับการ อย่างน้อยหนึ่งสำเนา) ดังนั้นมีความผิดพลาดบางอย่างหรือมีสิ่งผิดปกติstd::string(เช่นauto_ptrความหมายไม่ดี) หรือไม่? มีการเปลี่ยนแปลงใน C ++ 11 หรือไม่?
56 c++ 

12
การจับข้อยกเว้นทั่วไปเป็นสิ่งที่ไม่ดีจริง ๆ หรือ
ฉันมักจะเห็นด้วยกับคำเตือนการวิเคราะห์รหัสส่วนใหญ่และฉันพยายามที่จะปฏิบัติตามพวกเขา อย่างไรก็ตามฉันมีเวลายากขึ้นกับสิ่งนี้: CA1031: อย่าตรวจจับชนิดข้อยกเว้นทั่วไป ฉันเข้าใจเหตุผลของกฎนี้ แต่ในทางปฏิบัติถ้าฉันต้องการที่จะทำสิ่งเดียวกันโดยไม่คำนึงถึงข้อยกเว้นที่ถูกโยนออกไปทำไมฉันต้องจัดการแต่ละอย่างโดยเฉพาะ? นอกจากนี้หากฉันจัดการข้อยกเว้นเฉพาะจะเกิดอะไรขึ้นถ้ารหัสที่ฉันเรียกจะเปลี่ยนแปลงเพื่อให้เกิดข้อยกเว้นใหม่ในอนาคต ตอนนี้ฉันต้องเปลี่ยนรหัสเพื่อจัดการข้อยกเว้นใหม่นั้น ในขณะที่ถ้าฉันเพียงแค่จับExceptionรหัสของฉันไม่ต้องเปลี่ยน ตัวอย่างเช่นถ้า Foo เรียกบาร์และ Foo จำเป็นต้องหยุดการประมวลผลโดยไม่คำนึงถึงประเภทของข้อยกเว้นที่เกิดจาก Bar มีข้อได้เปรียบอะไรบ้างในการระบุประเภทของข้อยกเว้นที่ฉันจับได้ อาจเป็นตัวอย่างที่ดีกว่า: public void Foo() { // Some logic here. LogUtility.Log("some message"); } public static void Log() { try { // Actual logging here. } catch (Exception ex) { // Eat it. Logging failures shouldn't …
56 c#  design  exceptions 

9
คอมไพเลอร์ของ Intel ดีกว่าของ Microsoft หรือเปล่า [ปิด]
หลายปีก่อนฉันรู้สึกประหลาดใจเมื่อค้นพบว่า Intel ขายคอมไพเลอร์ที่เข้ากันได้กับ Visual Studio ฉันพยายามเป็นพิเศษสำหรับ C / C ++ รวมถึงเครื่องมือวินิจฉัยที่ยอดเยี่ยม แต่รหัสไม่ได้เป็นเพียงการคำนวณอย่างเข้มข้นที่จะสังเกตเห็นความแตกต่าง ความประทับใจเพียงอย่างเดียวคือ: Intel ทำเพื่อฉันจริง ๆ เพียงแค่ตอนนี้ว้าวเครื่องมือที่น่าทึ่งที่มีความละเอียดระดับนาโนวินาทีไม่น่าเชื่อ แต่การพิจารณาคดีสิ้นสุดลงและทีมไม่เคยพิจารณาการซื้ออย่างจริงจัง จากประสบการณ์ของคุณหากค่าลิขสิทธิ์ไม่สำคัญผู้ขายใดจะเป็นผู้ชนะ มันไม่ใช่คำถามที่กว้างหรือคลุมเครือเพื่อจุดประกายสงครามศักดิ์สิทธิ์ คำถามประเภทนี้เป็นเครื่องมือสองอย่างที่มองเห็นได้ชัดเจน ไม่มีใครชอบเมื่อเครื่องมือมีความลึกลับหรือความประหลาดใจ และตัวเลือกระหว่างดีที่สุดและดีที่สุดมักเป็นความเจ็บปวด ฉันยังเข้าใจหญ้าสีเขียวอยู่เสมออาร์กิวเมนต์ ฉันต้องการฟังเรื่องราวทั้งหมด "สิ่งที่ควรทำ" จะเกิดอะไรขึ้นถ้าหาก Intel เพิ่มประสิทธิภาพให้กับชิปในแต่ละเดือนและไม่ใช่ว่าเป้าหมายฮาร์ดแวร์ทุกอันจะทำงานได้ดีเท่ากับ Microsoft ที่คอมไพล์แล้ว? ถ้าฮาร์ดแวร์ของ AMD เป็นเป้าหมายและทุกอย่างจะช้าลงอย่างไม่มีเหตุผล หรือในทางกลับกันถ้าฮาร์ดแวร์ของ Intel มีโอกาสที่ไม่สามารถคาดเดาได้มากมายนักเขียนคอมไพเลอร์ของ Microsoft นั้นช้าเกินกว่าที่จะยอมรับและไม่เคยนำไปใช้ในคอมไพเลอร์ จะเกิดอะไรขึ้นถ้าทั้งคู่เหมือนกันจริง ๆ แล้วมี codebase เพียงอันเดียวที่ห่อไว้ในกล่องสองกล่องที่แตกต่างกันและอนุญาตให้ผู้ขายทั้งสองรายจากร้านค้าของบุคคลที่สาม และอื่น ๆ แต่บางคนก็รู้คำตอบ
56 compiler 

7
หลักการความรับผิดชอบเดี่ยว - ฉันจะหลีกเลี่ยงการแตกรหัสได้อย่างไร
ฉันกำลังทำงานกับทีมที่หัวหน้าทีมเป็นผู้สนับสนุนหลักการการพัฒนาที่มั่นคง อย่างไรก็ตามเขาขาดประสบการณ์จำนวนมากในการนำซอฟต์แวร์ที่ซับซ้อนออกจากประตู เรามีสถานการณ์ที่เขาใช้ SRP กับสิ่งที่เคยเป็นฐานรหัสที่ซับซ้อนอยู่แล้วซึ่งตอนนี้มีการแยกส่วนสูงมากและยากที่จะเข้าใจและตรวจแก้จุดบกพร่อง ตอนนี้เรามีปัญหาไม่เพียง แต่กับการกระจายตัวของรหัส แต่ยังรวมถึงการห่อหุ้มเป็นวิธีการภายในชั้นเรียนที่อาจเป็นส่วนตัวหรือได้รับการป้องกันได้รับการพิจารณาเพื่อเป็นตัวแทนของ 'เหตุผลในการเปลี่ยนแปลง' และได้รับการสกัด ไม่สอดคล้องกับเป้าหมายการห่อหุ้มของแอปพลิเคชัน เรามีตัวสร้างคลาสที่ใช้พารามิเตอร์อินเทอร์เฟซมากกว่า 20 ตัวดังนั้นการลงทะเบียน IoC และการแก้ปัญหาของเราจึงกลายเป็นสัตว์ประหลาดในตัวของมันเอง ฉันต้องการทราบว่ามี 'refactor อยู่ห่างจาก SRP' หรือไม่ที่เราสามารถใช้เพื่อช่วยแก้ไขปัญหาเหล่านี้ได้ ฉันได้อ่านแล้วว่ามันไม่ได้เป็นการละเมิด SOLID ถ้าฉันสร้างคลาสที่ว่างเปล่าแบบหยาบจำนวนมากที่ 'ห่อ' คลาสที่เกี่ยวข้องอย่างใกล้ชิดเพื่อให้เข้าถึงจุดรวมการทำงานของจุดเดียว (เช่นการเลียนแบบน้อย ใช้งานคลาสมากเกินไป SRP) นอกจากนั้นฉันไม่สามารถคิดถึงวิธีแก้ปัญหาที่จะช่วยให้เราสามารถดำเนินการต่อไปในการพัฒนาของเราในทางปฏิบัติในขณะที่ทำให้ทุกคนมีความสุข ข้อเสนอแนะใด ๆ

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

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