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

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

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

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

7
IntelliJ ดีกว่า Eclipse อย่างไร [ปิด]
ฉันรู้ว่ามีคำถามเช่นตัวแก้ไข / IDE ที่คุณชื่นชอบคืออะไร? แต่ไม่มีใครตอบคำถามนี้: ทำไมใช้เงินกับIntelliJเมื่อEclipseฟรี ฉันเป็นแฟนตัวยงของ IntelliJ แต่ฉันไม่ได้ลอง Eclipse ฉันใช้ IntelliJ สำหรับโครงการที่เป็น Java, JSP, HTML / CSS, Javascript, PHP และ Actionscript และเวอร์ชันล่าสุด 9 นั้นยอดเยี่ยมสำหรับพวกเขาทั้งหมด เพื่อนร่วมงานหลายคนในอดีตบอกฉันว่าพวกเขาเชื่อว่า Eclipse จะ "เหมือนกันมาก" กับ IntelliJ แต่เพื่อตอบโต้จุดนั้นฉันได้นั่งอยู่ข้างหลังนักพัฒนาที่ใช้ Eclipse ซึ่งดูเหมือนว่าจะไม่มีประสิทธิภาพเท่าที่ควร task) และฉันไม่เคยพบสิ่งนี้กับ IntelliJ คุณลักษณะเหล่านี้อาจอยู่ในรูปแบบต่อคุณลักษณะแต่คุณลักษณะอาจถูกทำลายโดยประสบการณ์ของผู้ใช้ที่ไม่ดีและฉันสงสัยว่าเป็นไปได้หรือไม่ที่ IntelliJ นั้นสามารถรับและค้นพบคุณสมบัติที่ช่วยประหยัดเวลาได้ง่ายขึ้น สำหรับผู้ใช้ที่คุ้นเคยกับ Eclipse แล้วนอกจากต้นทุนที่แท้จริงของ IntelliJ แล้วยังมีค่าใช้จ่ายในการเรียนรู้แอพใหม่ Eclipse ได้รับผู้ใช้จำนวนมากที่ไม่ต้องการใช้จ่าย $ 250 ใน …
67 java  ide  eclipse  intellij 

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

9
โปรแกรมเมอร์สามเณรผิดหวังเพราะไม่มีคำศัพท์ในคอมไพเลอร์ผิดพลาด
เพื่อนในครอบครัวของฉันขอความช่วยเหลือจากเขาเมื่อเขาเรียนรู้การเขียนโปรแกรม (ในภาษา C) ในขณะที่เรากำลังพูดถึงเขาแสดงความไม่พอใจเกี่ยวกับการมีเวลาที่ยากลำบากในการทำความเข้าใจข้อความแสดงข้อผิดพลาดที่คอมไพเลอร์ของเขา (GCC) ให้เขาเมื่อเขาทำผิด เขาไม่เข้าใจคำศัพท์ทั้งหมดที่ใช้และบางครั้งเป็นการรวมกันของพวกเขาซึ่งอยู่นอกเหนือความเข้าใจของเขา เขาถามฉันว่า "ทำไมคอมไพเลอร์ของเอกสารถึงไม่รวมคำอธิบายข้อความผิดพลาดอีกต่อไปแล้ว?" - และฉันไม่มีคำตอบที่ดีสำหรับเขา ฉันเอง - ในฐานะโปรแกรมเมอร์ที่มีประสบการณ์มาก - ไม่ค่อยเกิดขึ้นในสถานการณ์นี้ แต่สิ่งที่เกิดขึ้นได้ยากเหล่านั้นเกิดขึ้น - ข้อความแสดงข้อผิดพลาดแปลกใหม่ที่ฉันไม่เคยพบมาก่อน ฉันจัดการโดยค้นหาข้อความแสดงข้อผิดพลาดในเครื่องมือค้นหา แต่ดูเหมือนจะไม่ได้ผลสำหรับเขา - โดยเฉพาะอย่างยิ่งเนื่องจากข้อผิดพลาดที่เขาพบพบบ่อยและเกิดขึ้นในหลายกรณีที่แตกต่างกันซึ่งเขามีปัญหาเกี่ยวกับเขา ด้วยตัวเอง ดังนั้นโปรแกรมเมอร์มือใหม่ควรเข้าหาความท้าทายในการทำความเข้าใจข้อความแสดงข้อผิดพลาดของคอมไพเลอร์อย่างไร? โดยเฉพาะกับการรวมกันของ C และ GCC?

10
การออกแบบไวยากรณ์ - ทำไมต้องใช้วงเล็บเมื่อไม่มีการส่งอาร์กิวเมนต์?
ในหลายภาษาไวยากรณ์function_name(arg1, arg2, ...)ถูกใช้เพื่อเรียกใช้ฟังก์ชัน เมื่อเราต้องการที่จะเรียกฟังก์ชั่นโดยไม่ขัดแย้งใด ๆ function_name()ที่เราต้องทำ ฉันคิดว่ามันแปลกที่คอมไพเลอร์หรือสคริปต์ล่ามจะต้อง()ประสบความสำเร็จในการตรวจสอบว่าเป็นการเรียกใช้ฟังก์ชัน หากตัวแปรรู้จักกันว่า callable ทำไมถึงไม่function_name;พอ? ในบางภาษาเราสามารถทำได้: function_name 'test';หรือแม้แต่function_name 'first' 'second';เรียกฟังก์ชั่นหรือคำสั่ง ฉันคิดว่าวงเล็บจะดีกว่านี้หากพวกเขาต้องการเพียงแค่ประกาศลำดับความสำคัญและในสถานที่อื่นเป็นทางเลือก ตัวอย่างเช่นการทำif expression == true function_name;ควรถูกต้องตามที่if (expression == true) function_name();ควร สิ่งที่น่ารำคาญที่สุดในความคิดของฉันคือทำ'SOME_STRING'.toLowerCase()เมื่อไม่มีข้อโต้แย้งที่ชัดเจนโดยฟังก์ชันต้นแบบ ทำไมนักออกแบบถึงเลือกคนที่เรียบง่าย'SOME_STRING'.lower? คำเตือน:อย่าเข้าใจฉันผิดฉันชอบไวยากรณ์ C-like! ;) ฉันแค่ถามว่ามันจะดีกว่า ต้อง()มีข้อได้เปรียบด้านประสิทธิภาพหรือไม่หรือทำให้เข้าใจรหัสได้ง่ายขึ้น? ฉันอยากรู้จริงๆว่าเหตุผลคืออะไร

9
ที่เก็บควรส่งคืน IQueryable หรือไม่
IQueryableฉันได้รับการเห็นมากของโครงการที่มีพื้นที่เก็บข้อมูลที่ส่งกลับกรณีของ สิ่งนี้อนุญาตให้ตัวกรองเพิ่มเติมและการเรียงลำดับสามารถทำได้บนIQueryableโดยรหัสอื่นซึ่งแปลเป็น SQL ที่แตกต่างกันที่ถูกสร้างขึ้น ฉันอยากรู้ว่าแบบนี้มาจากไหนและเป็นความคิดที่ดีหรือไม่ ความกังวลที่ใหญ่ที่สุดของฉันคือการที่IQueryableสัญญาว่าจะตีฐานข้อมูลในภายหลังเมื่อมีการแจกแจง นี่หมายความว่าจะเกิดข้อผิดพลาดนอกที่เก็บ นี่อาจหมายถึงข้อยกเว้น Entity Framework เกิดขึ้นในเลเยอร์อื่นของแอปพลิเคชัน ฉันยังพบปัญหากับชุดผลลัพธ์ที่ใช้งานหลายรายการ (MARS) ในอดีต (โดยเฉพาะเมื่อใช้ธุรกรรม) และวิธีการนี้ดูเหมือนว่าจะทำให้เกิดเหตุการณ์นี้บ่อยขึ้น ฉันได้เรียกAsEnumerableหรือToArrayตอนท้ายของแต่ละนิพจน์ LINQ ของฉันเสมอเพื่อให้แน่ใจว่ามีการเข้าใช้ฐานข้อมูลก่อนที่จะออกจากที่เก็บรหัส ฉันสงสัยว่าการส่งคืนIQueryableอาจมีประโยชน์ในแบบ Building Block สำหรับชั้นข้อมูลหรือไม่ IQueryableฉันได้เห็นรหัสฟุ่มเฟือยสวยบางคนที่มีพื้นที่เก็บข้อมูลการเรียกเก็บข้อมูลอื่นที่จะสร้างที่ยิ่งใหญ่

13
เหตุใดจึงเป็นความคิดที่ดีสำหรับเลเยอร์แอปพลิเคชัน“ ต่ำกว่า” ที่ไม่ควรระวังสำหรับเลเยอร์ "สูง"
ในแอปพลิเคชันเว็บ MVC ทั่วไป (ออกแบบมาอย่างดี) ฐานข้อมูลไม่ทราบรหัสรุ่นรหัสรุ่นไม่ทราบรหัสคอนโทรลเลอร์และรหัสควบคุมไม่ทราบรหัสมุมมอง (ฉันคิดว่าคุณสามารถเริ่มได้ไกลถึงฮาร์ดแวร์หรืออาจจะยิ่งกว่านั้นอีกและรูปแบบอาจเหมือนกัน) ไปอีกทิศทางหนึ่งคุณสามารถลงไปหนึ่งชั้น มุมมองสามารถรับรู้ถึงคอนโทรลเลอร์ แต่ไม่ใช่โมเดล คอนโทรลเลอร์สามารถรับรู้ถึงโมเดล แต่ไม่ใช่ฐานข้อมูล รูปแบบสามารถรับรู้ถึงฐานข้อมูล แต่ไม่ใช่ระบบปฏิบัติการ (อะไรที่ลึกกว่านั้นอาจไม่เกี่ยวข้อง) ฉันสามารถเข้าใจได้อย่างสังหรณ์ใจว่าทำไมนี่เป็นความคิดที่ดี แต่ฉันไม่สามารถพูดได้ ทำไมรูปแบบทิศทางเดียวของการวางแนวคิดที่ดีนี้

12
นวกรรมิกที่ตรวจสอบความถูกต้องของข้อโต้แย้งนั้นละเมิด SRP หรือไม่?
ฉันพยายามปฏิบัติตาม Single Responsibility Principle (SRP) ให้มากที่สุดเท่าที่จะเป็นไปได้และคุ้นเคยกับรูปแบบที่แน่นอน (สำหรับ SRP เกี่ยวกับวิธีการ) อาศัยการมอบหมายอย่างมาก ฉันต้องการทราบว่าวิธีการนี้เป็นวิธีที่ดีหรือหากมีปัญหารุนแรงกับมัน ตัวอย่างเช่นในการตรวจสอบอินพุตให้กับ constructor ฉันสามารถแนะนำวิธีต่อไปนี้ ( Streamอินพุตเป็นแบบสุ่มอาจเป็นอะไรก็ได้) private void CheckInput(Stream stream) { if(stream == null) { throw new ArgumentNullException(); } if(!stream.CanWrite) { throw new ArgumentException(); } } วิธีนี้ (arguably) ทำมากกว่าหนึ่งอย่าง ตรวจสอบอินพุต โยนข้อยกเว้นที่แตกต่างกัน เพื่อให้เป็นไปตาม SRP ฉันจึงเปลี่ยนตรรกะเป็น private void CheckInput(Stream stream, params (Predicate<Stream> …

4
ระบบประเภท Haskell เป็นทางการเทียบเท่ากับ Java หรือไม่? [ปิด]
ฉันรู้ว่าบางสิ่งนั้นง่ายกว่า / ยากกว่าในหนึ่งภาษา แต่ฉันสนใจเฉพาะคุณลักษณะที่เกี่ยวข้องกับประเภทที่เป็นไปได้ในที่เดียวและเป็นไปไม่ได้ / ไม่เกี่ยวข้องในอีกภาษาหนึ่ง เพื่อให้มีความเฉพาะเจาะจงมากขึ้นเราจะไม่สนใจส่วนขยายประเภท Haskell เนื่องจากมีหลายสิ่งที่ทำอยู่ที่บ้า / เจ๋ง ๆ

13
เจ้านายของฉันมีคดีไม่ดีที่“ ไม่ได้คิดค้นที่นี่” [ปิด]
แผนกของฉันมีความเชี่ยวชาญในการแปลงข้อมูลลูกค้าเป็นสคีมาฐานข้อมูลของเราเพื่อให้พวกเขาสามารถใช้ซอฟต์แวร์ของเราได้ ตอนนี้เรามีแอปพลิเคชั่น C # ที่ใช้เวลาIDataReader(99% ของเวลาทั้งหมดSqlDataReader) ทำการทำความสะอาดและทำแผนที่แทรกเข้าไปในDataRowวัตถุแล้วใช้ a SqlBulkCopyเพื่อแทรกเข้าไปในฐานข้อมูลของเรา บางครั้ง (โดยเฉพาะอย่างยิ่งเมื่อฐานข้อมูลต้นทางมีรูปภาพเป็นvarbinaryวัตถุ) กระบวนการนี้สามารถชะงักงันได้ด้วยการถ่ายโอน SQL จากเซิร์ฟเวอร์ไปยังแอปเพื่อให้เลี้ยวขวาแล้วกลับไปที่เซิร์ฟเวอร์ ฉันรู้สึกว่าถ้าเราเขียนการแปลงใหม่เป็นแพ็คเกจ SSISมันสามารถเพิ่มความเร็วได้มากขึ้น อย่างไรก็ตามสิ่งกีดขวางที่ใหญ่ที่สุดที่ฉันยังคงดำเนินต่อไปคือเมื่อเจ้านายของฉันในแบบที่ไม่ได้รับการประดิษฐ์ที่นี่ผลักดันกลับและพูดว่า "จะเกิดอะไรขึ้นถ้า Microsoft หยุดให้การสนับสนุน SSIS เราจะมีรหัสล้าสมัย นี่ไม่ใช่ครั้งแรกที่ฉันกด "จะเกิดอะไรขึ้นถ้าพวกเขาลบคุณลักษณะนั้น ... ?" ตอบจากหัวหน้าของฉัน ฉันไม่มีเวลาเขียนการแปลงแบบเก่าสอนตัวเอง SSIS และเขียนวิธีใหม่ในการสาธิต / ทดสอบผลประโยชน์ (เราไม่มีคนใช้ SSIS ดังนั้นจะมีช่วงเวลาที่เราจะ ต้องเรียนรู้วิธีใช้) ฉันควรทำอย่างไรในสถานการณ์เช่นนี้? หยุดผลักดันเทคโนโลยีใหม่หรือไม่ รอจนกว่าเขาจะออกจากแผนก (ฉันเป็นคนที่สองมากที่สุดในแผนกหลังจากเขา แต่อาจเป็นปีก่อนที่เขาจะลาออก / เกษียณ)? ค้นหาวิธีใหม่ในการทำให้เขาหยุดกลัวเครื่องมือของบุคคลที่สามใช่ไหม

9
รูปแบบและรูปแบบต่อต้านการบันทึกแอปพลิเคชันคืออะไร [ปิด]
เมื่อเร็ว ๆ นี้ฉันต้องตรวจสอบปัญหาฟิลด์สำหรับแอปพลิเคชันองค์กรขนาดใหญ่ของเรา ฉันรู้สึกตกใจกับบันทึกที่ต้องใช้ในการพยายามค้นหาปัญหาและในตอนท้ายของวันบันทึกไม่ได้ช่วยในการระบุ / แยกข้อผิดพลาดทั้งหมด หมายเหตุ: ฉันเข้าใจว่าไม่ใช่ข้อบกพร่องทั้งหมดที่ค้นพบผ่านบันทึก สิ่งนี้ไม่เปลี่ยนความจริงที่ว่าบันทึกนั้นน่ากลัว มีปัญหาบางประการที่ชัดเจนเกี่ยวกับการบันทึกของเราที่เราสามารถพยายามแก้ไขได้ ฉันไม่ต้องการแสดงรายการไฟล์เหล่านี้ที่นี่และฉันไม่สามารถแสดงไฟล์บันทึกของเราเพื่อให้คุณสามารถให้คำแนะนำเกี่ยวกับสิ่งที่ต้องทำ แต่เพื่อที่จะประเมินว่าเรากำลังทำเรื่องเลวร้ายต่อหน้าการบันทึกผมอยากจะรู้ว่า: มีแนวทางอะไรบ้างถ้ามีเมื่อพูดถึงการบันทึกแอปพลิเคชันโดยเฉพาะแอปพลิเคชันขนาดใหญ่ มีรูปแบบใดที่เราควรทำตามหรือรูปแบบต่อต้านที่เราควรระวัง? นี่เป็นสิ่งสำคัญในการแก้ไขหรือสามารถแก้ไขได้หรือไฟล์บันทึกทั้งหมดมีขนาดใหญ่และคุณต้องการสคริปต์เพิ่มเติมเพื่อวิเคราะห์ หมายเหตุด้านข้าง: เราใช้ log4j
66 logging 

15
ฉันจะลาออกจากงานเนื่องจากแพลตฟอร์มของเรา: ฉันจะออกจากคำอธิบายที่เป็นประโยชน์เกี่ยวกับเรื่องนี้ได้อย่างไร [ปิด]
ฉันกำลังวางแผนที่จะออกจากงานปัจจุบันของฉันเพราะเราถูกล็อคด้วยการใช้Blubด้วยโครงร่าง Blub ระดับองค์กรและเว็บเซิร์ฟเวอร์ระดับ Blub บนโฮสติ้งที่ใช้ร่วมกันแบบปานกลาง เพื่อนร่วมงานของฉันเป็นมิตรและเจ้านายของฉันเป็นเจ้าของธุรกิจขนาดเล็กโดยเฉลี่ย - ฉันต้องการออกไปโดยสิ้นเชิงเนื่องจากเหตุผลทางเทคนิค ฉันรู้สึกเหมือนถูกแช่ใน Blub ไม่ดีต่อสมองของฉันและทำให้ฉันเป็นโปรแกรมเมอร์ที่แย่ลง เมื่อฉันไปฉันจะอธิบายเรื่องนี้กับเจ้านายและเพื่อนร่วมงานของฉันได้อย่างไร ฉันจะวลีคำร้องเรียนของฉันเกี่ยวกับ Blub อย่างมีประสิทธิภาพได้อย่างไร มีคำเตือนประเภทใดบ้างที่ฉันและฉันควรทิ้งไว้เพื่อเป็นตัวตายตัวแทนในเอกสารประกอบ (พยายามทำให้แน่ใจว่าฉันมีคุณสมบัติตรงตามมาตรฐาน )

11
วิธีปฏิบัติที่ดีที่สุดสำหรับการมอบรหัสดั้งเดิม
ในอีกไม่กี่เดือนเพื่อนร่วมงานจะย้ายไปที่โครงการใหม่และฉันจะสืบทอดโครงการหนึ่งของเขา เพื่อเตรียมความพร้อมผมได้สั่งซื้อไมเคิล Feathers' แล้วการทำงานอย่างมีประสิทธิภาพกับรหัสมรดก แต่หนังสือเล่มนี้และคำถามส่วนใหญ่เกี่ยวกับรหัสดั้งเดิมที่ฉันพบจนถึงขณะนี้มีความกังวลเกี่ยวกับกรณีที่รับรหัสตามที่เป็นอยู่ แต่ในกรณีนี้ฉันสามารถเข้าถึงนักพัฒนาดั้งเดิมได้จริงและเรามีเวลาสำหรับการส่งมอบอย่างเป็นระเบียบ พื้นหลังบางส่วนของรหัสฉันจะสืบทอด: มันใช้งานได้:ไม่มีบั๊กที่รู้จัก แต่เมื่อความต้องการด้านประสิทธิภาพเพิ่มขึ้นเรื่อย ๆ การเพิ่มประสิทธิภาพบางอย่างจะกลายเป็นสิ่งจำเป็นในอนาคตอันใกล้ ไม่มีเอกสาร:มีเอกสารจำนวนมากที่วิธีและระดับชั้น สิ่งที่รหัสควรจะทำในระดับที่สูงขึ้น แต่เป็นที่เข้าใจกันดีเพราะฉันได้เขียนกับ API ของมัน (เป็นกล่องดำ) มานานหลายปี เฉพาะการทดสอบบูรณาการระดับสูงกว่า:มีเพียงการทดสอบการรวมระบบที่ทดสอบการมีปฏิสัมพันธ์ที่เหมาะสมกับส่วนประกอบอื่น ๆ ผ่านทาง API (อีกครั้งกล่องดำ) ระดับต่ำมากเหมาะสำหรับความเร็ว:เนื่องจากรหัสนี้เป็นศูนย์กลางของระบบแอพพลิเคชั่นทั้งหมดจึงมีการปรับให้เหมาะสมหลายครั้งในช่วงหลายปีที่ผ่านมาและต่ำมาก (ส่วนหนึ่งมีตัวจัดการหน่วยความจำของตัวเองสำหรับ struct บางตัว / บันทึก) พร้อมกันและล็อคฟรี:ในขณะที่ฉันคุ้นเคยกับการเขียนโปรแกรมพร้อมกันและล็อคฟรีและมีส่วนร่วมในรหัสนี้จริง ๆ แล้วก็เพิ่มความซับซ้อนอีกชั้นหนึ่ง โค้ดเบสขนาดใหญ่:โปรเจ็กต์นี้มีโค้ดมากกว่าหมื่นบรรทัดดังนั้นจึงไม่มีทางที่ฉันจะสามารถอธิบายทุกอย่างให้ฉันได้ เขียนใน Delphi:ฉันแค่จะเอามันออกไปถึงแม้ว่าฉันไม่เชื่อว่าภาษาจะเป็นคำถามที่ตรงไปตรงมาเนื่องจากฉันเชื่อว่าปัญหาประเภทนี้จะเป็นผู้ไม่เชื่อเรื่องภาษา ฉันสงสัยว่าจะใช้เวลานานเท่าไหร่จนกว่าเขาจะจากไป นี่คือแนวคิดสองสามข้อ: รับทุกสิ่งที่จะสร้างบนเครื่องของฉัน:แม้ว่าทุกอย่างจะต้องถูกตรวจสอบในการควบคุมซอร์สโค้ด แต่ก็ยังไม่ลืมที่จะเช็คอินไฟล์เป็นครั้งคราวดังนั้นนี่อาจเป็นลำดับแรกของธุรกิจ การทดสอบเพิ่มเติม:ในขณะที่ฉันต้องการการทดสอบระดับหน่วยเพิ่มเติมเพื่อที่ว่าเมื่อฉันจะทำการเปลี่ยนแปลงข้อบกพร่องใด ๆ ที่ฉันแนะนำสามารถถูกดักจับ แต่เนิ่นๆรหัสที่ตอนนี้ไม่สามารถทดสอบได้ (คลาสขนาดใหญ่วิธีการที่ยาวมากเกินไป การพึ่งพาซึ่งกันและกัน) เอกสารอะไร:ฉันคิดว่าสำหรับผู้เริ่มต้นจะเป็นการดีที่สุดที่จะมุ่งเน้นไปที่เอกสารในพื้นที่เหล่านั้นในรหัสที่จะเข้าใจได้ยากเช่นเนื่องจากลักษณะต่ำ / มีการปรับให้เหมาะสมสูง ฉันกลัวว่ามีบางสิ่งในนั้นที่อาจดูน่าเกลียดและต้องการ refactoring …

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

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