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

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

3
จะวางตรรกะทางธุรกิจในการออกแบบ MVC ได้ที่ไหน
ฉันสร้างแอปพลิเคชัน MVC Java แบบง่ายที่เพิ่มระเบียนผ่านแบบฟอร์มข้อมูลไปยังฐานข้อมูล แอพของฉันรวบรวมข้อมูลมันยังตรวจสอบและเก็บไว้ เพราะนี่คือข้อมูลที่ถูกแหล่งออนไลน์จากผู้ใช้ที่แตกต่างกัน ข้อมูลส่วนใหญ่เป็นตัวเลขในธรรมชาติ ตอนนี้ข้อมูลตัวเลขถูกเก็บไว้ในฐานข้อมูล (เซิร์ฟเวอร์ SQL) ฉันต้องการให้แอปของฉันทำการคำนวณและแสดงผลลัพธ์ ผู้ใช้ไม่สนใจว่าจะทำการคำนวณอย่างไรดังนั้นจึงต้องมีการห่อหุ้ม ผู้ใช้จะต้องสามารถดูข้อมูลที่คำนวณได้ง่ายเท่านั้น (ตัวอย่างเช่นข้อมูลคอลัมน์ลบข้อมูลคอลัมน์ B หารด้วยข้อมูลคอลัมน์ C) ฉันรู้วิธีการเขียนขั้นตอนการจัดเก็บเหมือนกัน แต่ฉันต้องการแอพสามชั้น ฉันต้องการข้อมูลที่ฉันใส่ลงในฐานข้อมูลเป็นบันทึกทำงานโดยดำเนินการคำนวณกับมัน ข้อมูลต้นฉบับควรไม่ได้รับผลกระทบในขณะที่ข้อมูลใหม่การคำนวณภายหลังจะต้องจัดเก็บเป็นบันทึกเอนทิตีใหม่ในฐานข้อมูล ฉันควรเขียนรหัสสำหรับการคำนวณพื้นหลังนี้ที่ไหน เนื่องจากเป็นกฎและตรรกะทางธุรกิจฉันควรใส่ไว้ในไฟล์ JavaBeans ใหม่หรือไม่

6
กำลังเริ่มต้นอักขระถ่าน [] ด้วยการฝึกตัวอักษรที่ไม่ถูกต้องหรือไม่?
ฉันกำลังอ่านหัวข้อเรื่อง"strlen vs sizeof" บน CodeGuruและหนึ่งในคำตอบกล่าวว่า "มันเป็นการปฏิบัติที่ไม่ดี [sic] สำหรับ initialie [sic] charอาร์เรย์ที่มีตัวอักษรสตริง" นี่เป็นความจริงหรือว่าเป็นเพียงความคิดเห็นของเขา (แม้ว่าจะเป็น "สมาชิกระดับสูง")? นี่คือคำถามเดิม: #include <stdio.h> #include<string.h> main() { char string[] = "october"; strcpy(string, "september"); printf("the size of %s is %d and the length is %d\n\n", string, sizeof(string), strlen(string)); return 0; } ขวา. ขนาดควรเป็นความยาวบวก 1 ใช่ไหม นี่คือผลลัพธ์ the size …

4
ผู้ดูแล GitHub ควรเขียนของผู้เขียนในคำขอดึง?
ฉันไม่ใช่โปรแกรมเมอร์โดยอาชีพ แต่ฉันเขียนโค้ดและใช้ github บ้าง ฉันเจอสิ่งที่ฉันพบว่าเป็นสถานการณ์ที่น่าแปลกใจ ฉันคุ้นเคยกับคอมไพล์มาก มีโครงการที่ฉันพบข้อบกพร่อง (เล็ก) ในที่มีผลต่อฉันคือ ฉันใช้เวลาช่วงบ่ายในการค้นหาและแก้ไข ฉันแยกพื้นที่เก็บข้อมูลยอมรับการเปลี่ยนแปลงและออกคำขอดึง หลังจากเห็นว่ามันถูกปิดในฐานะ "ผสานเข้ากับสาขาการพัฒนา" ฉันคิดว่าทุกอย่างเป็นไปด้วยดี ฉันกำลังเรียกดู repo วันนี้เตรียมพร้อมที่จะลบสาขาของฉันและฉันไม่สามารถหาที่กระทำได้รวมเข้ากับ repo ของผู้ดูแลเลย หลังจากนั้นสักครู่ฉันก็รู้ว่ามันถูกเพิ่มเข้ามาในคอมมิชชัน แต่ผู้แต่งไม่ได้เป็นฉันแล้ว เท่าที่ฉันสามารถบอกวิธีเดียวที่จะทำเช่นนั้นโดยเฉพาะอย่างยิ่งใช้ rebase, แก้ไข, หรือเขียนประวัติศาสตร์อื่น ๆ เพื่อลบผู้เขียนต้นฉบับ ดูเหมือนว่าฉันผิดมาก ที่ดีที่สุดมันทำให้เกิดความสับสนในที่สุดผู้เขียนของ repo นี้จะได้รับเครดิตสำหรับความมุ่งมั่นของทุกคนแล้วประวัติของผู้มีส่วนร่วมเดิมจะหายไป อีกครั้งมันเป็นข้อผิดพลาดเล็ก ๆ ฉันไม่ได้ใช้มันสำหรับประวัติย่อมืออาชีพของฉันมันก็ดูเหมือนจะไม่ซื่อสัตย์ เป็นเรื่องปกติหรือไม่ ฉันควรพูดอะไรเกี่ยวกับเรื่องนี้หรือไม่? แก้ไข: ความรู้สึกทั่วไปน่าจะเป็นที่ฉันควรไปถามดังนั้นฉันจะทำแค่นั้นเมื่อเช้านี้ ตามคำขอด้านล่าง ฉันได้ตรวจสอบแล้วและมีรหัสของฉันอยู่และใช้แน่นอนในขณะที่ฉันเขียน (รวมถึงความคิดเห็น) ฉันยืนยันว่าทั้งผู้เปลี่ยนใจและผู้แต่งได้เปลี่ยนไป มีการเปลี่ยนแปลงเพิ่มเติมอีกหนึ่งรายการในเวลาเดียวกันกับการเปลี่ยนแปลงของฉัน มันเป็นบรรทัดเดียวซึ่งจะส่งผลกระทบต่อแพทช์เช่นเดียวกับรหัสอื่น ๆ ก่อนหน้านี้ IE การเพิ่มหนึ่งบรรทัดไม่เกี่ยวข้องกับข้อผิดพลาดที่ฉันแก้ไข อัปเดต ดูเหมือนว่าคำตอบคือผู้เขียนเก็บรักษาสาขาการพัฒนาและไม่ต้องการผสานจากสาขาหลักของเขาเข้ามา …
44 git  github 

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

15
ภาษามีอิทธิพลต่อการออกแบบ CPU อย่างไร [ปิด]
เรามักจะบอกว่าฮาร์ดแวร์ไม่สนใจภาษาที่โปรแกรมเขียนเนื่องจากเห็นเฉพาะรหัสไบนารี่ที่คอมไพล์ แต่นี่ไม่ใช่ความจริงทั้งหมด ยกตัวอย่างเช่นพิจารณา Z80 ผู้ต่ำต้อย ส่วนขยายไปยังชุดคำสั่ง 8080 มีคำแนะนำเช่น CPIR ซึ่งจะเป็นประโยชน์สำหรับการสแกนแบบ C (NULL สิ้นสุด) strlen()สตริงเช่นการดำเนินการ ผู้ออกแบบจะต้องระบุว่าการรันโปรแกรม C (ตรงข้ามกับ Pascal ที่ความยาวของสตริงอยู่ในส่วนหัว) เป็นสิ่งที่การออกแบบของพวกเขาน่าจะใช้ อีกตัวอย่างที่คลาสสิกเป็นเครื่องเสียงกระเพื่อม มีตัวอย่างอะไรอีกบ้าง? เช่นคำแนะนำจำนวนและประเภทของการลงทะเบียนโหมดการกำหนดแอดเดรสที่ทำให้ตัวประมวลผลเฉพาะสนับสนุนหลักการของภาษาเฉพาะหรือไม่ ฉันสนใจเป็นพิเศษในการแก้ไขครอบครัวเดียวกัน

7
ฉันจะประเมินความรู้ของผู้สมัครเกี่ยวกับ Html / CSS ระหว่างการสัมภาษณ์ได้อย่างไร? [ปิด]
ฉันกำลังพยายามหาคำถามสัมภาษณ์ที่ดีเพื่อประเมินความสามารถของผู้คนที่เข้ามาทำงาน Html / CSS อย่างไรก็ตามหัวข้อนั้นกว้างมากและฉันไม่แน่ใจว่าคำถามประเภทใดที่ฉันสามารถขอให้ประเมิน HTML / ความรู้ CSS ฉันสามารถถามคำถามประเภทใดเพื่อประเมินความสามารถของ Html / CSS ของผู้สมัครระหว่างการสัมภาษณ์ เป็นการดีที่ฉันต้องการถามคำถามสองสามข้อแล้วให้สถานการณ์ในชีวิตจริงแก่พวกเขาเพื่อต่อสู้

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

15
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะตั้งชื่อตัวแปรที่ไม่ได้ใช้ด้วยการขีดเส้นใต้เดี่ยว?
_บ่อยครั้งเมื่อไวยากรณ์ของภาษาต้องการให้ฉันชื่อตัวแปรที่ไม่เคยใช้ผมจะตั้งชื่อมันว่า ในใจของฉันมันช่วยลดความยุ่งเหยิงและให้ฉันมุ่งเน้นไปที่ตัวแปรที่มีความหมายในโค้ด ฉันคิดว่ามันจะไม่เป็นการรบกวนเพื่อสร้างผล "นอกสายตาจากใจ" ตัวอย่างทั่วไปที่ฉันทำคือการตั้งชื่อแบบสอบถามย่อยใน SQL SELECT * FROM ( SELECT * FROM TableA JOIN TableB ON TableA.ColumnB = TableB.ColumnB WHERE [ColumnA] > 10 ) _ --This name is required, but never used here ORDER BY ColumnC อีกตัวอย่างหนึ่งคือตัวแปรลูปที่ไม่ได้ใช้ array = [[] for _ in range(n)] # Defines a list of …

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

12
เทคนิคใดช่วยรักษาความรู้การเขียนโปรแกรม [ปิด]
คุณจำรายการที่เกี่ยวข้องกับการเขียนโปรแกรมได้อย่างไร คุณมีความรู้สึกว่าคุณพบข้อผิดพลาดที่คุณมีก่อนหน้านี้เมื่อไม่กี่ปีก่อนและคุณสามารถสาบานได้ว่าคุณรู้สาเหตุแล้ว แต่ตอนนี้คุณลืมไปแล้วหรือ คุณทำงานกับสตริงของ xsl ในการแยกวิเคราะห์เมื่อนานมาแล้ว แต่ตอนนี้คุณจำไม่ได้ว่าฟังก์ชั่นสตริงใดที่รวมกันจาก xsl และคุณต้องเริ่มจากศูนย์? หรือบางทีคุณอาจลืมเกี่ยวกับฟีเจอร์จาก Apache Commons เช่น "การกรองคอลเล็กชั่นโดยคำกริยา" ที่คุณเคยใช้ในอดีต แล้วคุณจะทำอย่างไร ฉันพยายามมีบล็อก แต่เมื่อฉันพัฒนาแอพฉันไม่เคยหาเวลาอัปเดตบล็อกหรือเขียนเกี่ยวกับประสบการณ์ของฉัน นอกจากนี้การใช้ wiki ก็เป็นสิ่งที่ดี แต่แล้วฉันก็พบว่ามันยากที่จะแยกความสะอาดระหว่างพวกเขาตั้งแต่หลายครั้งที่ฉันต้องเปลี่ยนโพสต์บล็อกเพื่อเพิ่มข้อมูลใหม่เกี่ยวกับหัวข้อนั้น นี่ทำให้ฉันคิดว่าจริง ๆ แล้วฉันควรใส่หัวข้อนี้ใน wiki แทนที่จะเป็นบล็อก คุณมีระบบที่ช่วยให้คุณจำเกี่ยวกับประสบการณ์การเขียนโปรแกรมของคุณหรือไม่ การตั้งค่าของคุณคืออะไร

17
เป็นวิธีปฏิบัติที่ดีหรือไม่ที่จะตั้งชื่อตัวแปร“ return” ที่ส่งคืน [ปิด]
เป็นวิธีปฏิบัติที่ดีในการเรียกใช้ตัวแปรที่เมธอดส่งคืนด้วยชื่อตัวแปรresultหรือไม่? ตัวอย่างเช่น public Zorglub calculate() { Zorglub result = [...] [...] return result; } หรือฉันควรตั้งชื่อตามประเภทของมัน? public Zorglub calculate() { Zorglub zorglub = [...] [...] return zorglub; } ฉันเคยเห็นทั้งสองอย่างในป่าถ้าฉันต้องเลือกเหตุผลอะไรที่ทำให้ฉันชอบอดีตหรือหลัง (หรือชื่อที่ดีกว่า)? ฉันคิดเกี่ยวกับ Java เป็นหลัก


8
วิธีการอย่างเหมาะสมกับ Google สำหรับ C
ปัญหาในการพยายามใช้ Google เพื่อค้นหาบทช่วยสอนหรือคำตอบสำหรับภาษาการเขียนโปรแกรม C คือ C ไม่ได้ชื่อที่ชัดเจนพอที่จะ จำกัด ขอบเขตการค้นหาให้แคบลง แม้แต่คู่กับคำหลักเช่น "การเขียนโปรแกรม" และ / หรือ "ภาษา" ให้ผลลัพธ์ส่วนใหญ่สำหรับ C ++, C # และ Objective-C มีวิธีใดในการค้นหาทรัพยากร C ที่เฉพาะเจาะจงอย่างมีประสิทธิภาพยิ่งขึ้นโดยใช้ Google
44 c  google  search 

9
ใช้เวลากับ Programmers.SE หรือ Stack Overflow แทนหนังสือการเขียนโปรแกรมที่ดีสำหรับผู้เริ่มต้นใช่ไหม [ปิด]
การใช้เวลา (และการมีส่วนร่วมอย่างแข็งขัน) ใน Programmers.SE และ Stack Overflow ช่วยให้ฉันพัฒนาทักษะการเขียนโปรแกรมของฉันได้ใกล้เคียงกับเวลาที่ใช้ในการอ่านหนังสือเช่น Code Complete 2 (ซึ่งจะเป็นอย่างอื่นในรายการการอ่านของฉัน) ตกลงอาจเป็นคำตอบสำหรับคำถามนี้สำหรับคนที่เริ่มต้นด้วยการเขียนโปรแกรมอาจจะไม่ตรง แต่ฉันต้องการเพิ่มว่าคำถามนี้ฉันถามในบริบทเมื่อบุคคลคุ้นเคยกับภาษาโปรแกรม แต่ต้องการปรับปรุง ทักษะการเขียนโปรแกรมของเขา ฉันอ่านคำถามนี้ใน SO และหนังสือเล่มนี้ก็ได้รับการแนะนำจากคนอื่น ๆ อีกมากมาย (รวมถึงJeffและJoel ) จะเจาะจงมากขึ้นฉันยังเพิ่มที่แม้ว่าฉันจะเขียนโปรแกรมใน C, Java, Python ฯลฯ แต่ยังฉันไม่พอใจกับทักษะการเขียนโปรแกรมของฉันและอ่านความคิดเห็นของ CC2 ฉันรู้ว่าฉันยังคงต้องปรับปรุงมาก . ดังนั้นโดยทั่วไปฉันต้องการทราบว่าอะไรคือวิธีที่ดีที่สุดสำหรับฉันในการพัฒนาทักษะการเขียนโปรแกรม - ใช้เวลามากขึ้นที่นี่ / ดังนั้นหรือดำเนินการต่อด้วย CC2 และอาจมาที่นี่เป็นเวลาที่อนุญาต

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

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