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

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

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

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

17
คุณค่าในการซ่อนรายละเอียดผ่านทาง abstractions คืออะไร ความโปร่งใสมีค่าหรือไม่
พื้นหลัง ฉันไม่ใช่แฟนตัวยงของสิ่งที่เป็นนามธรรม ฉันจะยอมรับว่าสามารถได้รับประโยชน์จากความสามารถในการปรับตัวความสะดวกในการพกพาและการใช้งานอินเทอร์เฟซอีกครั้ง ฯลฯ มีประโยชน์ที่แท้จริงอยู่ที่นั่นและฉันไม่ต้องการตั้งคำถามนั้น มี "ประโยชน์" ที่สำคัญอื่น ๆ ของสิ่งที่เป็นนามธรรมซึ่งคือการซ่อนตรรกะการใช้งานและรายละเอียดจากผู้ใช้สิ่งที่เป็นนามธรรมนี้ เหตุผลก็คือคุณไม่จำเป็นต้องรู้รายละเอียดและควรให้ความสำคัญกับตรรกะของตนเองในตอนนี้ ทำให้รู้สึกในทางทฤษฎี อย่างไรก็ตามเมื่อใดก็ตามที่ฉันดูแลแอพพลิเคชั่นขององค์กรขนาดใหญ่ฉันจำเป็นต้องทราบรายละเอียดเพิ่มเติมอยู่เสมอ มันกลายเป็นความยุ่งยากครั้งใหญ่ที่ขุดลึกลงไปในสิ่งที่เป็นนามธรรมในทุก ๆ รอบเพื่อที่จะได้รู้ว่าสิ่งใดที่ทำ คือต้องทำ "open declaration" ประมาณ 12 ครั้งก่อนที่จะค้นหาโพรซีเดอร์ที่เก็บไว้ที่ใช้ นี่ 'ซ่อนรายละเอียด' ความคิดดูเหมือนว่าจะได้รับในทาง ฉันต้องการอินเทอร์เฟซที่โปร่งใสมากขึ้นและเป็นนามธรรมน้อยกว่าเสมอ ฉันสามารถอ่านซอร์สโค้ดระดับสูงและรู้ว่ามันทำอะไร แต่ฉันจะไม่มีทางรู้ว่ามันจะทำอย่างไรเมื่อมันเป็นเช่นนั้นคือสิ่งที่ฉันต้องรู้ เกิดอะไรขึ้นที่นี่? ทุกระบบที่ฉันเคยทำงานออกแบบมาไม่ดี (จากมุมมองนี้อย่างน้อย) หรือไม่? ปรัชญาของฉัน เมื่อฉันพัฒนาซอฟต์แวร์ฉันรู้สึกว่าฉันพยายามทำตามปรัชญาที่ฉันรู้สึกว่าเกี่ยวข้องกับปรัชญาของ ArchLinux : Arch Linux ยังคงความซับซ้อนโดยธรรมชาติของระบบ GNU / Linux ในขณะที่ยังคงความเป็นระเบียบและโปร่งใส ผู้พัฒนาและผู้ใช้ Arch Linux เชื่อว่าการพยายามซ่อนความซับซ้อนของระบบจริง ๆ แล้วจะส่งผลให้เกิดระบบที่ซับซ้อนยิ่งขึ้นดังนั้นจึงควรหลีกเลี่ยง ดังนั้นฉันไม่เคยพยายามซ่อนความซับซ้อนของซอฟต์แวร์ไว้เบื้องหลังเลเยอร์สิ่งที่เป็นนามธรรม …

7
ฉันจะแสดงความสามารถต่อนายจ้างในอนาคตได้อย่างไรเมื่องานทั้งหมดของฉันอยู่ในโครงการภายใน [ปิด]
ฉันอยู่ในตำแหน่งปัจจุบันมาเป็นเวลานาน (10 ปี) และในเวลานั้นฉันรู้สึกว่าฉันทำงานได้ดีในฐานะนักออกแบบสถาปนิกระบบและโปรแกรมเมอร์ อย่างไรก็ตามงานทั้งหมดนั้นอยู่ในโครงการภายในที่ไม่สามารถเข้าถึงได้จากโลกภายนอก ฉันเห็นคำแนะนำมากมายเช่นนี้ที่แนะนำ 'ถ้าคุณสามารถชี้ไปที่สิ่งที่แท้จริงและพูดว่า "ฉันเขียนนี้" มันน่าประทับใจมาก' ถ้าคุณสามารถ 'ชี้ไปที่' อย่างแท้จริงไม่ได้เลยเพราะในขณะที่คุณเป็นนักเขียนโปรแกรมที่กระตือรือร้น (อย่างที่ Joel-ism คลาสสิกวางไว้) "ฉลาดและทำสิ่งต่าง ๆ ได้" สิ่งเหล่านี้มองไม่เห็น? ฉันจำเป็นต้องเริ่มต้นเมมโมรีที่ผูกพันกับโปรเจ็กต์โอเพนซอร์สหรือไม่? เริ่มบล็อก "โลกแห่งความจริง" (ไม่ใช่ภายในองค์กร) หรือไม่ ตรงไปตรงมาฉันใช้เวลาส่วนใหญ่ 10 ปีของฉันมีความสุขที่นี่และเมื่อเร็ว ๆ นี้มีเพียงพิจารณาออกไปสำหรับทุ่งหญ้าสีเขียว ฉันจะจมก่อนที่ฉันจะเริ่มมองหาเพราะการมุ่งเน้นไปที่การทำงานของนายจ้างปัจจุบันของฉันที่ค่าใช้จ่ายของ "สถานะสาธารณะ" ของฉันได้อย่างไร
30 interview 

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

6
วิธีการอธิบายคุณค่าของการทดสอบหน่วย
ฉันต้องการแนะนำแนวคิดของการทดสอบหน่วย (และการทดสอบทั่วไป) กับเพื่อนร่วมงานของฉัน ตอนนี้ไม่มีการทดสอบเลยและสิ่งต่าง ๆ ถูกทดสอบโดยการปฏิบัติงานจริงผ่าน UI เพื่อดูผลลัพธ์ที่ต้องการ ดังที่คุณอาจจินตนาการได้ว่ารหัสนั้นมีความเชื่อมโยงอย่างแน่นแฟ้นกับการนำไปปฏิบัติที่แน่นอน - แม้จะทำให้เกิดโค้ดที่ควรอยู่ในคลาสและนำมาใช้ซ้ำในระบบที่ถูกคัดลอกและวางข้ามวิธีต่างๆ เนื่องจากความต้องการที่เปลี่ยนแปลงไปฉันถูกขอให้แก้ไขโมดูลที่ฉันเขียนไว้ก่อนหน้านี้และนั่นคือการรวมกันอย่างหลวม ๆ (ไม่มากเท่าที่ฉันต้องการ แต่ที่ดีที่สุดที่ฉันสามารถทำได้โดยไม่ต้องแนะนำแนวคิดอื่น ๆ มากมาย) ฉันตัดสินใจที่จะรวมชุดการทดสอบหน่วยกับรหัสที่แก้ไขแล้วของฉันเพื่อ "พิสูจน์" ว่าทำงานได้ตามที่คาดไว้และแสดงให้เห็นว่าการทดสอบทำงานอย่างไร ฉันไม่ได้ติดตาม TDD จริงเนื่องจากมีการเขียนโค้ดบางส่วนแล้ว แต่ฉันหวังว่าจะทำตามแนวคิด TDD บางอย่างสำหรับรหัสใหม่ที่ฉันจะต้องสร้าง ตอนนี้อย่างหลีกเลี่ยงไม่ได้ฉันแน่ใจว่าฉันจะถามว่าทำไมพาฉันมากกว่าหนึ่งหรือสองวันในการเขียนรหัสเนื่องจากส่วนหนึ่งของสิ่งที่ฉันจะโต้ตอบกับมีอยู่แล้วในระบบ (แม้ว่าจะไม่มีการทดสอบและแน่นมาก ประกอบ) และเมื่อฉันตรวจสอบรหัสในฉันจะถูกถามว่าโครงการ "การทดสอบ" นี้คืออะไร ฉันสามารถอธิบายพื้นฐานของการทดสอบได้ แต่ฉันไม่สามารถอธิบายถึงผลประโยชน์ที่แท้จริงในแบบที่คนอื่นจะเข้าใจได้ (เพราะพวกเขาคิดว่าการทดสอบต้องการให้คุณเรียกใช้แอปด้วยตัวเองเนื่องจากบ่อยครั้งที่ UI ที่แท้จริงมีความสำคัญ " หรือไม่). พวกเขาไม่เข้าใจความคิดที่จะมีเพศสัมพันธ์แบบหลวม ๆ (เห็นได้ชัดจากความจริงที่ว่าไม่มีอะไรที่เป็นคู่กันอย่างหลวม ๆ ไม่มีแม้แต่อินเตอร์เฟสใด ๆ นอกโค้ดที่ฉันเขียน) ดังนั้นการพยายามที่จะใช้สิ่งนั้นเพื่อเป็นผลประโยชน์อาจจะได้รับ "Huh?" ชนิดของรูปลักษณ์และอีกครั้งฉันไม่สามารถหลวมอย่างที่ฉันต้องการโดยไม่ต้องทำงานซ้ำหลายโมดูลที่มีอยู่และอาจแนะนำคอนเทนเนอร์ IoC …

4
ทักษะคณิตศาสตร์เบื้องต้นสำหรับหนังสือ Introduction to Algorithms (CLRS) หนังสือ [ปิด]
ฉันมีความรู้เกี่ยวกับอัลกอริทึมพื้นฐานแล้ว ตอนนี้ผมวางแผนที่จะศึกษาขั้นตอนวิธีการล่วงหน้ามากขึ้นและฉันตัดสินใจไปกับรู้เบื้องต้นเกี่ยวกับอัลกอริทึม ฉันไม่แน่ใจฉันต้องรีเฟรชทักษะคณิตศาสตร์ก่อนอ่านหนังสือเล่มนี้หรือไม่? (ฉันลืมคณิตศาสตร์เกือบทั้งหมดที่ฉันเรียนในโรงเรียนมัธยมและวิทยาลัย) หากหนังสือเล่มนี้ต้องการความรู้ด้านคณิตศาสตร์ที่แข็งแกร่งโปรดแนะนำวิชาที่ได้รับประโยชน์ ฉันต้องการเรียนรู้เกี่ยวกับการใช้งานการออกแบบและการวิเคราะห์อัลกอริทึม

5
Groovy กำลังจะหายไป? [ปิด]
ฉันแน่ใจว่าคำถามนี้ถูกถามหลายครั้ง อย่างไรก็ตามฉันต้องการถามอีกครั้งด้วยความตั้งใจว่าอนาคตของภาษาเหล่านี้คืออะไร ฉันถูกแนะนำให้รู้จักกับGroovyเป็นครั้งแรกและชอบมันมาก ผมรู้สึกว่าไวยากรณ์ถูกง่ายและมันก็เป็นมากใกล้ Java และฉันก็สามารถที่จะเรียนรู้ได้อย่างรวดเร็วGrails จากนั้นก็มีScalaและกรอบการทำงานเว็บLift ฉันยังคงเรียนรู้สกาล่าและฉันพบว่าไวยากรณ์ยากมากในบางครั้ง อย่างไรก็ตามฉันยังคงสงสัยว่าอนาคตของ Groovy คืออะไร เมื่อผู้เขียน Groovy บอกว่าเขาจะไม่สร้าง groovyถ้าเขารู้เรื่องสกาล่ามันทำให้ฉันสงสัยว่ามีอนาคตหรือไม่ แน่นอนว่า Groovy มีมานานแล้วและ Grails ถูกใช้งานในปัจจุบันโดย บริษัท ขนาดใหญ่หลายแห่ง ถ้ามีใครไปดู Grails vs Lift วันนี้ Grails จะเป็นผู้ชนะอย่างชัดเจน บริษัท อื่น ๆ กำลังใช้งานอยู่ แต่ด้วยทุกสิ่งที่ฉันได้กล่าวไปแล้วฉันสนใจที่จะรู้ว่าควรลงทุนใน Groovy หรือไม่? Groovy กำลังจะหายไปและ Scala เป็นตัวเลือกที่ดีกว่าหรือไม่? หากซีอีโอของ BMW บอกว่าเขาขับ Mercedes แล้วใครจะสงสัยว่าทำไมเราทุกคนไม่ควรขับ Mercedes ด้วยใช่มั้ย (ฉันเข้าใจว่าคำถามนี้กว้างมากและอาจถูกปิดฉันหวังว่าจะทำให้เป็น Wiki แบบเปิดสำหรับผู้อื่นได้)
30 java  scala  groovy  grails 

3
ข้อเสียของรูปแบบ ActiveRecord คืออะไร
ฉันอยากรู้ว่าอะไรคือข้อเสียของการใช้รูปแบบ ActiveRecord สำหรับการเข้าถึงข้อมูล / วัตถุทางธุรกิจ คนเดียวที่ฉันสามารถนึกได้ว่าอยู่เหนือหัวของฉันคือมันละเมิดหลักการความรับผิดชอบเดียว แต่รูปแบบ AR เป็นเรื่องธรรมดาพอที่เหตุผลนี้เพียงอย่างเดียวดูเหมือนจะไม่ "ดีพอ" ที่จะพิสูจน์ว่าไม่ได้ใช้ (แน่นอน มุมมองอาจเบ้เพราะบ่อยครั้งที่ไม่มีรหัสที่ฉันทำงานด้วยตามหลักการ SOLID ใด ๆ ) โดยส่วนตัวฉันไม่ใช่แฟนของ ActiveRecord (ยกเว้นการเขียนแอพพลิเคชั่น Ruby on Rails ที่ AR ให้ความรู้สึก "เป็นธรรมชาติ") เพราะมันรู้สึกว่าคลาสทำมากเกินไปและการเข้าถึงข้อมูลไม่ควรขึ้นอยู่กับชั้นเรียน เพื่อจัดการ ฉันชอบใช้ที่เก็บที่ส่งคืนออบเจคทางธุรกิจ ส่วนใหญ่ของรหัสที่ฉันทำงานด้วยมีแนวโน้มที่จะใช้รูปแบบของ ActiveRecord ในรูปแบบของ (ฉันไม่ทราบว่าทำไมวิธีการเป็นบูลีน): public class Foo { // properties... public Foo(int fooID) { this.fooID = fooID; } public bool …

5
การโปรแกรมในปรัชญา UNIX เหมือนกับการเขียนโปรแกรมเชิงหน้าที่หรือไม่?
สภาพแวดล้อมการเขียนโปรแกรม UNIX (ข้อความคลาสสิก) ระบุว่าวิธี UNIX ในการเขียนโปรแกรมคือการสร้างเครื่องมือขนาดเล็กที่กำหนดอย่างดีซึ่งสามารถรวมกันเพื่อแก้ไขปัญหาที่ซับซ้อนมากขึ้น ในการเรียนรู้ C และ Bash shell ฉันพบว่านี่เป็นแนวคิดที่ทรงพลังที่สามารถใช้เพื่อจัดการกับปัญหาการเขียนโปรแกรมที่หลากหลาย เพียงแค่ใช้แพลตฟอร์ม Linux แนวคิดนั้นค่อนข้างชัดเจนและใช้งานได้ตลอดเวลา การแสดงออกใด ๆ ที่เกิดขึ้นในบรรทัดคำสั่งที่เปลี่ยนเส้นทาง I / O, การเชื่อมโยงเครื่องมือระบบเช่น ls, grep, อื่น ๆ และอื่น ๆ แสดงให้เห็นว่าแนวคิดนี้มีประสิทธิภาพเพียงใด สิ่งที่ทำให้ฉันสับสนคือหลายโปรแกรมเหล่านี้เขียนด้วยภาษา C โดยใช้รูปแบบการเขียนโปรแกรมที่จำเป็น / ขั้นตอน แต่วิธีที่พวกเขาใช้และเชื่อมต่อเข้าด้วยกันในบรรทัดคำสั่งนั้นดูเหมือนโปรแกรมการทำงานกับฉันมากขึ้น ฟังก์ชั่นแยกที่ไม่ได้ขึ้นอยู่กับสถานะของโปรแกรมอื่น ๆ ที่มันอาจจะเข้าร่วม สิ่งนี้ถูกต้องหรือไม่การเข้าใจปรัชญาการเขียนโปรแกรมของ UNIX นั้นคือการเขียนโปรแกรมที่ใช้งานได้โดยใช้เครื่องมือที่อาจสร้างขึ้นโดยใช้รูปแบบการเขียนโปรแกรมที่จำเป็น?

6
หลายคลาสในไฟล์. cs เดียว - ดีหรือไม่ดี [ปิด]
ขอแนะนำให้สร้างหลายคลาสภายในไฟล์. cs หรือควรแต่ละไฟล์. cs มีคลาสแยกต่างหาก ตัวอย่างเช่น: public class Items { public class Animal { } public class Person { } public class Object { } } หลบข้อเท็จจริงที่ว่านี่เป็นตัวอย่างที่ดีของสถาปัตยกรรมที่ดีมีมากกว่าหนึ่งคลาสในไฟล์. cs ที่มีกลิ่นรหัสหรือไม่
30 c#  code-smell 

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

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

8
คุณจะทำอย่างไรเพื่อให้เกิดประสิทธิผลเมื่อทำงานด้วยตัวเอง? [ปิด]
ฉันพบว่าตัวเองทำงานอย่างโดดเดี่ยวบนโค้ดที่คนอื่นจะไม่เห็นเป็นเวลาหลายสัปดาห์ ฉันกำลังมองหาแนวคิดที่จะพยายามทำให้ตัวเองมีประสิทธิผลและมีแรงบันดาลใจ คุณทำอะไรเพื่อยังคงมีแรงบันดาลใจและมีประสิทธิผลเมื่อได้รับงานเขียนโปรแกรมระยะยาวและทำงานด้วยตัวคุณเอง (เช่นจากที่บ้านโดยไม่มีเพื่อนร่วมทีมหรือเพื่อนร่วมงาน)

5
เมื่อใดและเพราะเหตุใดคุณจึงควรใช้ช่องว่าง (แทนเช่น bool / int)
ฉันพบวิธีในบางครั้งที่ผู้พัฒนาเลือกที่จะคืนสิ่งที่ไม่สำคัญกับฟังก์ชั่น ฉันหมายถึงเมื่อดูที่รหัสดูเหมือนว่าจะทำงานได้ดีพอ ๆ กับvoidหลังจากที่ฉันคิดว่า "ทำไม" เสียงนี้คุ้นเคยไหม? บางครั้งผมก็จะเห็นว่าส่วนใหญ่มักจะดีกว่าที่จะกลับมาสิ่งที่ต้องการboolหรือมากกว่าแล้วก็ทำint voidฉันไม่แน่ใจว่าในภาพรวมเกี่ยวกับข้อดีข้อเสีย ขึ้นอยู่กับสถานการณ์การส่งคืนintสามารถทำให้ผู้โทรทราบถึงจำนวนแถวหรือวัตถุที่ได้รับผลกระทบจากวิธีการ (เช่นบันทึก 5 รายการไปยัง MSSQL) หากวิธีการเช่น "InsertSomething" ส่งกลับแบบบูล, ฉันจะมีวิธีการออกแบบมาเพื่อกลับถ้าประสบความสำเร็จอื่นtrue falseผู้เรียกสามารถเลือกที่จะดำเนินการหรือไม่ใช้ข้อมูลนั้น ในทางกลับกัน, มันอาจนำไปสู่วัตถุประสงค์ที่ชัดเจนน้อยลงของวิธีการโทร? การเข้ารหัสที่ไม่ดีมักจะบังคับให้ฉันต้องตรวจสอบเนื้อหาวิธีอีกครั้ง ถ้ามันคืนบางอย่างมันบอกคุณว่าวิธีนั้นเป็นประเภทที่คุณต้องทำอะไรบางอย่างกับผลลัพธ์ที่ส่งคืน ปัญหาอีกประการหนึ่งคือหากคุณไม่รู้จักวิธีการใช้งานผู้พัฒนาตัดสินใจว่าจะส่งคืนสิ่งที่ไม่สำคัญต่อการทำงาน แน่นอนคุณสามารถแสดงความคิดเห็นได้ ค่าส่งคืนจะต้องมีการประมวลผลเมื่อการประมวลผลอาจจะสิ้นสุดที่วงเล็บปิดของวิธีการ เกิดอะไรขึ้นภายใต้ประทุน? วิธีการที่เรียกว่าได้รับfalseเนื่องจากข้อผิดพลาดโยนหรือไม่ หรือมันกลับเท็จเนื่องจากผลการประเมิน? คุณมีประสบการณ์อะไรกับเรื่องนี้? คุณจะทำสิ่งนี้อย่างไร

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