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

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

2
ลิขสิทธิ์ที่ดีที่สุดที่มีอยู่สำหรับซอร์สโค้ด [ปิด]
ฉันกำลังสร้างแอปพลิเคชั่นแบบปิดแหล่งที่มาด้วยตัวเอง (ไม่มี บริษัท ใหญ่อยู่ข้างหลังฉัน) และฉันสงสัยว่าจะปกป้องพวกเขาได้อย่างไร ที่ด้านบนสุดของไฟล์ซอร์สโค้ดทั้งหมดฉันมีประกาศลิขสิทธิ์ขั้นพื้นฐานสวย ๆ นี้: /******************************************************* * Copyright (C) 2010-2011 {name} <{email}> * * This file is part of {project}. * * {project} can not be copied and/or distributed without the express * permission of {name} *******************************************************/ อย่างไรก็ตามฉันเริ่มคิดว่ามันไม่เพียงพอ หากไม่มีเงินเพื่อหาทนายฉันสนใจใบอนุญาตแบบโอเพนซอร์ซที่บอกว่า "คุณสามารถใช้งานได้และนั่นก็คือมัน" การค้นหาหนึ่งยากมากเนื่องจากฉันสามารถค้นหาการเปรียบเทียบสิทธิ์การใช้งานโอเพนซอร์ซเท่านั้นหรือคำตอบ "ค้นหาทนายความ" มีใบอนุญาตแบบโอเพนซอร์ซที่ฉันสามารถใช้เพื่อระบุสิ่งที่คล้ายกับสิ่งนี้หรือไม่?

13
ฉันควรปรับเปลี่ยนรหัสที่ทำเครื่องหมายว่า“ ไม่เปลี่ยนแปลง” หรือไม่
ฉันกำลังจัดการกับ codebase ที่ใหญ่มากและฉันได้รับสองสามเดือนเพื่อ refactor รหัสที่มีอยู่ กระบวนการ refactor นั้นเป็นสิ่งจำเป็นเพราะในไม่ช้าเราจะต้องเพิ่มคุณสมบัติใหม่ ๆ ให้กับผลิตภัณฑ์ของเราและในตอนนี้เราไม่สามารถเพิ่มคุณสมบัติใด ๆ ได้อีกต่อไปโดยไม่ทำลายสิ่งอื่นใด ในระยะสั้น: ยุ่งรหัสขนาดใหญ่ที่เราหลายคนเคยเห็นในอาชีพของพวกเขา ในระหว่างการเปลี่ยนโครงสร้างเป็นครั้งคราวฉันพบชั้นเรียนวิธีการหรือบรรทัดของรหัสที่มีความคิดเห็นเช่น หมดเวลาตั้งค่าให้โมดูล A เวลาในการทำสิ่งต่างๆ หากไม่ได้ตั้งเวลาเช่นนี้มันจะหยุด หรือ อย่าเปลี่ยนสิ่งนี้ เชื่อฉันสิคุณจะทำลายสิ่งต่างๆ หรือ ฉันรู้ว่าการใช้ setTimeout ไม่ใช่วิธีปฏิบัติที่ดี แต่ในกรณีนี้ฉันต้องใช้ คำถามของฉันคือ: ฉันควร refactor รหัสเมื่อฉันพบคำเตือนดังกล่าวจากผู้เขียน (ไม่ฉันไม่สามารถติดต่อกับผู้เขียน)?

8
คุณจัดระเบียบโครงการอย่างไร [ปิด]
คุณมีรูปแบบเฉพาะของการจัดระเบียบโครงการหรือไม่? ตัวอย่างเช่นขณะนี้ฉันกำลังสร้างโครงการสำหรับโรงเรียนสองแห่งที่นี่ในโบลิเวียนี่คือวิธีที่ฉันจัดระเบียบ: TutoMentor (Solution) TutoMentor.UI (Winforms project) TutoMentor.Data (Class library project) คุณจัดระเบียบโครงการของคุณอย่างไร คุณมีตัวอย่างของสิ่งที่คุณจัดระเบียบและภาคภูมิใจหรือไม่? คุณสามารถแชร์ภาพหน้าจอของบานหน้าต่างโซลูชันได้หรือไม่ ในส่วน UI ของแอปพลิเคชันของฉันฉันมีปัญหาในการตัดสินใจเลือก schema ที่ดีเพื่อจัดระเบียบแบบฟอร์มต่าง ๆ และที่ที่พวกเขาอยู่ แก้ไข: สิ่งที่เกี่ยวกับการจัดระเบียบแบบฟอร์มต่าง ๆ ในโครงการ. UI ฉันควรจัดกลุ่มฟอร์มที่แตกต่างกันที่ไหน? การทำให้พวกเขาทั้งหมดอยู่ในระดับรากของโครงการเป็นความคิดที่ไม่ดี

22
ขั้นตอนการจัดเก็บวิธีปฏิบัติที่ไม่ดีที่หนึ่งใน บริษัท ที่ปรึกษาด้านไอทีรายใหญ่ที่สุดในโลก?
ฉันทำงานในโครงการหนึ่งใน บริษัท ให้คำปรึกษาด้านไอทีชั้นนำของโลกและได้รับการบอกเล่าจาก DBA ว่าวิธีปฏิบัติที่ดีที่สุดในการจัดเก็บของรัฐไม่ใช่วิธี "ปฏิบัติที่ดีที่สุด" ตรงกันข้ามกับทุกสิ่งที่ฉันเรียนรู้ ขั้นตอนการจัดเก็บจะช่วยให้คุณสามารถนำโค้ดกลับมาใช้ใหม่และการห่อหุ้ม (สองเสาหลักของการพัฒนาซอฟต์แวร์) การรักษาความปลอดภัย (คุณสามารถให้ / เพิกถอนการอนุญาตในแต่ละโปรแกรมที่เก็บไว้) ปกป้องคุณจากการโจมตีด้วยการฉีด SQL เริ่มต้นด้วย SQL Server 2008 ที่แม้แต่แบบสอบถาม SQL ทั่วไปจะถูกคอมไพล์หากมีการเรียกใช้เวลาเพียงพอ) เรากำลังพัฒนาแอพที่ซับซ้อนโดยใช้วิธีการพัฒนาซอฟต์แวร์ Agile ทุกคนคิดเหตุผลที่ดีว่าทำไมพวกเขาไม่ต้องการใช้ procs ที่เก็บไว้? ฉันเดาว่า DBAs ไม่ต้องการรักษา procs ที่เก็บไว้ แต่ดูเหมือนว่าจะมีวิธีเชิงลบมากเกินไปที่จะพิสูจน์การตัดสินใจในการออกแบบ

6
ทำไมภาษาที่เร็วกว่าและดีกว่า C ออกมา [ปิด]
ด้วยภาษาใหม่ "สมัยใหม่" ทุกวันนี้แล้วทำไม C ถึงได้รับการประกาศว่าเป็นเร็วที่สุดและ "ใกล้เคียงกับเครื่อง" มากที่สุด? ฉันไม่เชื่อจริง ๆ ว่ามีวิธีที่ถูกต้องเพียงอย่างเดียวในการทำสิ่งต่าง ๆ และ C ได้อยู่มาเป็นเวลานาน (ตั้งแต่ยุค 60!) เราไม่ได้คิดอะไรดีไปกว่าเขียนเมื่อเกือบ 50 ปีที่แล้วใช่ไหม ฉันทราบว่าภาษาสมัยใหม่มีระดับที่สูงขึ้นและดูแลงานบางอย่างเช่นการรวบรวมขยะและการจัดสรรหน่วยความจำและใช้ประโยชน์จากห้องสมุดและเช่นนั้น ฉันแค่ถามว่าทำไมไม่เคยมีตัวเลือกที่สองที่แท้จริงสำหรับซี เป็นไปได้ไหมที่ C นั้นสมบูรณ์แบบจนไม่มีวิธีอื่นใดในการใช้งานคอมพิวเตอร์ แก้ไขดูฉันไม่ได้พยายามเคาะ C หรือภาษาที่คุณโปรดปราน ฉันสงสัยว่าทำไม C กลายเป็นมาตรฐานและเหตุใดทางเลือกอื่น ๆ จึงไม่เกิดขึ้นและ C ก็แค่ "ยอมรับ"
147 c 

11
คุณเขียนรหัส“ ของจริง” ใน TDD เมื่อใด
ตัวอย่างทั้งหมดที่ฉันได้อ่านและดูในวิดีโอการฝึกอบรมมีตัวอย่างง่าย ๆ แต่สิ่งที่ฉันไม่เห็นถ้าฉันทำรหัส "ของจริง" หลังจากที่ฉันได้รับสีเขียว นี่คือส่วน "Refactor" หรือไม่ ถ้าฉันมีวัตถุที่ค่อนข้างซับซ้อนด้วยวิธีการที่ซับซ้อนและฉันเขียนการทดสอบและขั้นต่ำเปล่าเพื่อให้ผ่าน (หลังจากที่มันล้มเหลวครั้งแรกสีแดง) ฉันจะกลับไปและเขียนรหัสจริงเมื่อใด และฉันต้องเขียนโค้ดจริงเท่าไหร่ก่อนที่จะทดสอบซ้ำ ฉันเดาว่าอันสุดท้ายจะเป็นสัญชาตญาณมากกว่า แก้ไข: ขอบคุณทุกคนที่ตอบ คำตอบทั้งหมดของคุณช่วยฉันอย่างมาก ดูเหมือนจะมีแนวคิดที่แตกต่างกันในสิ่งที่ฉันถามหรือสับสนและอาจมี แต่สิ่งที่ฉันถามคือพูดว่าฉันมีแอปพลิเคชันสำหรับสร้างโรงเรียน ในการออกแบบของฉันฉันมีสถาปัตยกรรมที่ฉันต้องการเริ่มต้นด้วยเรื่องราวของผู้ใช้เป็นต้นไปเรื่อย ๆ จากที่นี่ฉันใช้เรื่องราวของผู้ใช้และสร้างการทดสอบเพื่อทดสอบเรื่องราวของผู้ใช้ ผู้ใช้บอกว่าเรามีคนลงทะเบียนสำหรับโรงเรียนและชำระค่าธรรมเนียมการลงทะเบียน ดังนั้นฉันคิดว่าวิธีที่จะทำให้ล้มเหลว ในการทำเช่นนั้นฉันออกแบบคลาสทดสอบสำหรับคลาส X (อาจเป็นนักเรียน) ซึ่งจะล้มเหลว จากนั้นฉันก็สร้างชั้นเรียน "นักเรียน" อาจจะเป็น "โรงเรียน" ฉันไม่รู้ แต่ไม่ว่าในกรณีใดการออกแบบ TD ก็บังคับให้ฉันต้องคิดผ่านเรื่องราว ถ้าฉันสามารถทำการทดสอบล้มเหลวได้ฉันรู้ว่าทำไมมันถึงล้มเหลว แต่สิ่งนี้จะทำให้ฉันผ่านพ้นไปได้ มันเกี่ยวกับการออกแบบ ฉันเปรียบสิ่งนี้กับความคิดเกี่ยวกับการเรียกซ้ำ การเรียกซ้ำไม่ใช่แนวคิดที่ยาก มันอาจจะยากกว่าที่จะติดตามมันในหัวของคุณ แต่ในความเป็นจริงส่วนที่ยากที่สุดคือการรู้เมื่อการเรียกซ้ำ "หยุด" เมื่อต้องหยุด (แน่นอนความคิดเห็นของฉัน) ดังนั้นฉันต้องคิดว่าอะไรจะหยุด การเรียกซ้ำก่อน มันเป็นเพียงการเปรียบเทียบที่ไม่สมบูรณ์และถือว่าการวนซ้ำซ้ำแต่ละครั้งนั้นเป็น "การผ่าน" อีกครั้งเพียงแค่ความเห็น …
147 tdd 

22
ติดอยู่เนื่องจาก“ รู้มากเกินไป” [ปิด]
บันทึกการสนทนาเพิ่มเติมได้ที่http://news.ycombinator.com/item?id=4037794 ฉันมีภารกิจการพัฒนาที่ค่อนข้างง่าย แต่ทุกครั้งที่ฉันพยายามโจมตีมันฉันจะวนเวียนอยู่ในความคิดลึก ๆ - มันจะขยายอนาคตได้อย่างไรลูกค้ารุ่นที่สองจะต้องได้อย่างไรมันจะส่งผลกระทบอย่างไรกับ "ไม่ทำงาน" แง่มุมต่างๆ (เช่นประสิทธิภาพการอนุญาต ... ) สถาปนิกจะอนุญาตให้เปลี่ยนแปลงได้อย่างไร ... ฉันจำตัวเองได้ไม่นานก่อนหน้านี้อายุน้อยกว่าและอาจจะกระตือรือร้นมากกว่าเดิม "ฉัน" แล้วฉันก็ไม่ได้คิดอะไรเกี่ยวกับสิ่งนั้น - เขาจะได้ไปข้างหน้าและเขียนอะไรแล้วเขียนใหม่แล้วเขียนมันอีกครั้ง (และอีกครั้ง ... ) วันนี้ "ฉัน" ลังเลมากขึ้นระวังตัวมากขึ้น วันนี้ฉันพบว่ามันง่ายกว่ามากที่จะนั่งและวางแผนและสั่งสอนคนอื่นเกี่ยวกับวิธีการทำสิ่งต่าง ๆ มากกว่าที่จะไปข้างหน้าและทำมันเอง - ไม่ใช่เพราะฉันไม่ชอบโค้ด - ตรงกันข้ามฉันชอบ! - แต่เพราะทุกครั้งที่ฉันนั่งที่แป้นพิมพ์ฉันก็ลงเอยในที่ที่น่ารำคาญเช่นเดียวกัน มันผิดหรือเปล่า? นี่เป็นวิวัฒนาการตามธรรมชาติหรือไม่หรือว่าฉันขับรถเข้าไปในรูต? การเปิดเผยที่เป็นธรรม - ในอดีตฉันเป็นนักพัฒนาวันนี้ตำแหน่งงานของฉันคือ "สถาปนิกระบบ" ขอให้โชคดีในการค้นหาความหมาย - แต่นั่นคือชื่อ ว้าว. ฉันไม่ได้คาดหวังว่าคำถามนี้จะสร้างคำตอบมากมาย ฉันจะพยายามสรุปมัน เหตุผล: การวิเคราะห์อัมพาต / เหนือวิศวกรรม / …

24
ข้อเสียของ Python คืออะไร [ปิด]
Python ดูเหมือนจะโกรธแค้นในทุกวันนี้และไม่ใช่เรื่องที่ไม่สมควรเพราะมันเป็นภาษาที่แท้จริงที่คนส่วนใหญ่ชอบที่จะได้รับปัญหาใหม่ในการแก้ปัญหา แต่ในฐานะที่เป็นนักปราชญ์เคยกล่าวไว้ว่า (เรียกเขาว่านักปราชญ์เท่านั้นเพราะฉันไม่รู้ว่าใครพูดจริง ๆ ไม่แน่ใจว่าเขาเป็นคนฉลาดเลย) เพื่อรู้ภาษาที่แท้จริงไม่เพียง แต่รู้ ไวยากรณ์, การออกแบบ, ฯลฯ , ข้อดี แต่ยังรวมถึงข้อเสียของมัน ไม่มีภาษาใดที่สมบูรณ์แบบบางคนดีกว่าคนอื่น ดังนั้นสิ่งที่จะเป็นในความคิดของคุณข้อเสียวัตถุประสงค์ของงูหลาม หมายเหตุ: ฉันไม่ได้ขอให้เปรียบเทียบภาษาที่นี่ (เช่น C # ดีกว่า Python เพราะ ... yadda yadda yadda) - มีวัตถุประสงค์มากกว่า (ในบางระดับ) ความคิดเห็นที่คุณลักษณะภาษาได้รับการออกแบบไม่ดีไม่ว่าจะเป็นอะไร บางอย่างที่คุณขาดไปและอื่น ๆ หากต้องใช้ภาษาอื่นเป็นการเปรียบเทียบ แต่เพียงเพื่อแสดงให้เห็นถึงจุดที่ยากที่จะอธิบายรายละเอียดอย่างอื่น (เช่นเพื่อความเข้าใจง่าย)

15
โปรแกรมเมอร์ 9 ถึง 5 คนดูถูกหรือเปล่า?
ฉันจะพิจารณาตัวเองเป็นโปรแกรมเมอร์ 9 ถึง 5 สิ่งที่ฉันหมายถึงคือฉันมีงานเขียนโปรแกรม แต่หลังจากออกจากงานแล้วฉันก็ออกจากงานที่นั่นและไม่นำกลับบ้าน ฉันสนุกกับการเลือกอาชีพมากและสนุกกับงานที่ทำในงานปัจจุบัน ฉันยังสนุกกับการเรียนรู้สิ่งใหม่ในสาขาของฉันเช่นเทคโนโลยีใหม่และความก้าวหน้าในอุตสาหกรรมการเขียนโปรแกรม มันเป็นเพียงนอกงานของฉันฉันมีงานอดิเรกอื่น ๆ ที่ฉันรู้สึกว่ามีความสำคัญมากกว่าและฉันต้องการที่จะอุทิศเวลาและพลังงานให้มากขึ้น ฉันยังรู้สึกว่าการอุทิศเวลาประมาณ 40 ชั่วโมงต่อสัปดาห์ให้กับหัวข้อเดียวนั้นค่อนข้างเหนื่อยล้าดังนั้นมีโปรแกรมเมอร์หลายคนที่ต้องการกลับบ้านจากงานเขียนโปรแกรมและเขียนโปรแกรมเพิ่มเติมหรือไม่ อาจเป็นเพียงแค่นายจ้างปัจจุบันของฉัน แต่ฉันรู้สึกว่าพวกเขามีเวลาน้อยสำหรับการพัฒนาอาชีพ วิธีเดียวที่ฉันจะติดตามเทคโนโลยีใหม่ล่าสุดและเทคนิคการเขียนโปรแกรมคือทำตามเวลาของฉันเองเพราะนายจ้างของฉันไม่ได้จัดสรรเวลาในระหว่างชั่วโมงทำงานเพื่อทำสิ่งต่าง ๆ เหล่านี้ (กำหนดเวลา == $$$) มีใครบ้างที่รู้สึกเช่นเดียวกันกับนายจ้างของพวกเขา? จากประสบการณ์ของคุณผู้จัดการและผู้ที่จ้างโปรแกรมเมอร์เห็นว่าโปรแกรมเมอร์ 9 ถึง 5 เป็นทรัพยากรที่มีค่าน้อยลงหรือไม่? ฉันรู้ว่าฉันสามารถปรับปรุงเรซูเม่ของฉันได้โดยการมีส่วนร่วมและโครงการโอเพ่นซอร์สเป็นต้น แต่ฉันแค่รู้สึกว่าฉันไม่มีเวลาว่าง สิ่งที่ตรงกันข้ามอาจกล่าวได้ว่าการอุทิศเวลาว่างให้กับวิชาอื่น ๆ เช่นศิลปะแสดงให้เห็นถึงความรอบรู้ที่เป็นลักษณะที่ต้องการของ บริษัท

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

30
คุณสามารถผลิตได้จริงกี่ชั่วโมงต่อวัน อย่างไร? [ปิด]
ฉันพบว่าฉันมีปัญหาอย่างมากในการแจ้งเตือน 8 ชั่วโมงต่อวัน ฉันได้ยินคนที่เคยเจรจาสัญญางานเพียง 4 ชั่วโมง / วันโดยยืนยันว่าพวกเขาไม่สามารถทำอะไรได้มากกว่านี้ในแปดชั่วโมง ฉันมักจะจมอยู่กับความง่วงนอนเบื่อหน่ายความฟุ้งซ่าน บางวันฉันดูเหมือนจะลุกโชนตลอดแปดชั่วโมงในการระเบิดของผลผลิต วันอื่น ๆ ฉันแทบจะทำอะไรไม่สำเร็จเลย เกือบทุกวันมันอยู่ที่ไหนสักแห่งระหว่างกันและฉันรู้สึกแย่ที่ต้องเสียเวลามากเพราะฉันไม่สามารถรวบรวมสมาธิเพื่อให้ดีที่สุดตลอดทั้งวัน ฉันต้องการฟังประสบการณ์ของคุณ (บอกฉันว่าฉันไม่ได้อยู่คนเดียว!) และหากพบคำตอบของคุณสำหรับปัญหานี้ คุณมีผลิตภาพ 8 ชั่วโมงต่อวันหรือเกือบทุกวัน? อย่างไร?
145 productivity 

30
คุณดำดิ่งลงสู่ฐานรหัสขนาดใหญ่ได้อย่างไร
คุณใช้เครื่องมือและเทคนิคใดในการสำรวจและเรียนรู้รหัสฐานที่ไม่รู้จัก ฉันกำลังคิดถึงเครื่องมือเช่นgrep, ctagsการทดสอบหน่วย, การทดสอบการใช้งาน, เครื่องสร้างแผนภาพคลาส, กราฟการโทร, การวัดโค้ดเช่นsloccountและอื่น ๆ ฉันจะสนใจประสบการณ์ของคุณผู้ช่วยที่คุณใช้หรือเขียนเองและขนาดของรหัสฐานที่คุณทำงาน ฉันรู้ว่าการทำความคุ้นเคยกับฐานรหัสเป็นกระบวนการที่เกิดขึ้นเมื่อเวลาผ่านไปและความคุ้นเคยอาจหมายถึงอะไรก็ได้ตั้งแต่ "ฉันสามารถสรุปรหัส" เป็น "ฉันสามารถปรับโครงสร้างและย่อขนาดเป็น 30% ของขนาด" แต่จะเริ่มได้อย่างไร

14
Gang of Four สำรวจ“ Pattern Space” หรือไม่?
นับตั้งแต่ครั้งแรกที่ผมได้เรียนรู้เกี่ยวกับแก๊งสี่ (GoF) รูปแบบการออกแบบอย่างน้อย 10 ปีที่ผ่านมาฉันมีความประทับใจที่เหล่านี้ 23 รูปแบบที่ควรจะเป็นเพียงตัวอย่างเล็ก ๆ ของสิ่งที่มีขนาดใหญ่มากซึ่งผมชอบที่จะเรียกพื้นที่รูปแบบ Pattern Spaceสมมุตินี้ประกอบด้วยโซลูชันที่แนะนำทั้งหมด (รู้จักหรือไม่รู้จัก) สำหรับปัญหาการออกแบบซอฟต์แวร์เชิงวัตถุทั่วไป ดังนั้นฉันจึงคาดว่าจำนวนของรูปแบบการออกแบบที่เป็นที่รู้จักและจัดทำเอกสารจะเพิ่มขึ้นอย่างมีนัยสำคัญ มันไม่ได้เกิดขึ้น มากกว่า 20 ปีหลังจากหนังสือ GoF ออกมามีเพียง 12 รูปแบบเพิ่มเติมที่ปรากฏในบทความ Wikipedia ซึ่งส่วนใหญ่เป็นที่นิยมน้อยกว่าต้นฉบับมาก (ฉันไม่ได้รวมรูปแบบการทำงานพร้อมกันที่นี่เพราะครอบคลุมหัวข้อเฉพาะ) อะไรคือเหตุผล? ชุดรูปแบบของ GoF จริง ๆ แล้วครอบคลุมกว่าที่ฉันคิดหรือไม่ ความสนใจในการหารูปแบบใหม่ลดลงหรืออาจเป็นเพราะพวกเขาพบว่าไม่ใช่ทุกสิ่งที่มีประโยชน์ในการออกแบบซอฟต์แวร์? อื่น ๆ อีก?

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

19
วิธีการเขียนโค้ดที่เร็วขึ้น (โดยไม่ต้องเสียสละคุณภาพ) [ปิด]
ฉันเป็นนักเขียนโค้ดมืออาชีพมาหลายปีแล้ว ความคิดเห็นเกี่ยวกับรหัสของฉันได้รับโดยทั่วไปเดียวกัน: เขียนรหัสดีดีผ่านการทดสอบ แต่อาจจะเร็วขึ้น ดังนั้นฉันจะกลายเป็น coder ที่เร็วขึ้นโดยไม่ต้องเสียสละคุณภาพได้อย่างไร เพื่อประโยชน์ของคำถามนี้ฉันจะ จำกัด ขอบเขตไว้ที่ C # เนื่องจากนั่นคือสิ่งที่ฉันเขียนโค้ด (เพื่อความสนุกสนาน) - หรือ Java ซึ่งคล้ายกันมากพอในหลาย ๆ เรื่อง สิ่งที่ฉันทำอยู่แล้ว: เขียนวิธีแก้ปัญหาขั้นต่ำที่จะทำให้งานเสร็จ เขียนบททดสอบอัตโนมัติ (ป้องกันการถดถอย) เขียน (และใช้) ไลบรารีที่ใช้ซ้ำได้สำหรับทุกสิ่ง ใช้เทคโนโลยีที่รู้จักกันดีซึ่งทำงานได้ดี (เช่นไฮเบอร์เนต) ใช้รูปแบบการออกแบบที่เข้าที่ (เช่น Singleton) ทั้งหมดนี้ยอดเยี่ยม แต่ฉันไม่รู้สึกว่าความเร็วของฉันเพิ่มขึ้นเมื่อเวลาผ่านไป ฉันทำดูแลเพราะถ้าผมสามารถทำบางสิ่งบางอย่างเพื่อเพิ่มผลผลิตของฉัน (แม้โดย 10%) ที่ 10% เร็วกว่าคู่แข่งของฉัน (ไม่ใช่ว่าฉันมี) นอกจากนี้ฉันได้รับเงินคืนจากผู้จัดการของฉันอย่างสม่ำเสมอไม่ว่าจะเป็นการพัฒนา Flash ขนาดเล็กหรือการพัฒนา Java / C ++ ขององค์กร แก้ไข:ดูเหมือนจะมีคำถามมากมายเกี่ยวกับสิ่งที่ฉันหมายถึงอย่างรวดเร็วและฉันรู้ว่าฉันช้า …

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