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

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

3
แอป HTML5 และ JS หยุดทำงานได้ดีเท่าแอพทั่วไปอย่างไร
จากสิ่งที่ฉันเข้าใจ HTML เป็นภาษามาร์กอัปดังนั้นเนื้อหาของ XAML, XIB และสิ่งที่ Android ใช้และกรอบการพัฒนา UI ดั้งเดิมอื่น ๆ JavaScript เป็นภาษาการเขียนโปรแกรมที่ใช้พร้อมกับมันเพื่อจัดการสคริปต์ฝั่งไคลเอ็นต์ซึ่งจะรวมถึงสิ่งต่าง ๆ เช่นการจัดการเหตุการณ์การตรวจสอบด้านไคลเอนต์และสิ่งอื่นใด C #, Java, Objective-C หรือ C ++ ทำในกรอบดังกล่าว มีรูปแบบ MVC / MVVM ในกรอบรูปแบบเช่น Sencha's, Angular และอื่น ๆ เรามี localStorage ในรูปแบบของ sqlite และ key-value store ตามกรอบอื่น ๆ และคุณมีข้อกำหนด API สำหรับเกือบทุกอย่างที่มันหายไป เมื่อใดก็ตามที่เฟรมเวิร์กของ UI นั้นต้องแสดงผล UI ก็จะต้องทำการแยกวิเคราะห์มาร์กอัพและแสดงผล UI …

4
การติดตามวัตถุทั้งหมดของชั้นเรียน
ฉันใหม่สำหรับการเขียนโปรแกรมเชิงวัตถุและฉันยังคงพบปัญหานี้ (ฉันเขียนโปรแกรมใน Java) ฉันลังเลที่จะถามเกี่ยวกับเรื่องนี้เพราะมันดูเหมือนว่าเป็นปัญหาพื้นฐาน แต่ฉันไม่สามารถหาข้อมูลใด ๆ เกี่ยวกับมันหรือคำถามเกี่ยวกับที่นี่และไม่มี ตำราที่ฉันได้อ่าน (ในระดับพื้นฐานค่อนข้างแน่นอน) ได้สัมผัสกับปัญหานี้: บ่อยครั้งที่ฉันต้องติดตามวัตถุทั้งหมดของชั้นเรียนที่สร้างขึ้นเพื่อย้ำผ่านวัตถุเหล่านั้นเพื่อจุดประสงค์ที่หลากหลาย ซึ่งเป็นวิธีที่ฉันกำลังเขียนโปรแกรมวัตถุจำนวนมากมีการอ้างอิงจากวัตถุอื่นเท่านั้นซึ่งหมายความว่าฉันไม่มีอาร์เรย์หรือชุดสะสมที่จะอ้างอิงพวกเขาทั้งหมด ฉันคิดว่าเนื่องจากสิ่งนี้ดูเหมือนจะเป็นความจำเป็นพื้นฐานใน OOP ควรมีวิธีการที่เป็นระบบค่อนข้างง่ายและเป็นไปได้ไหม เป็นเรื่องปกติหรือไม่ที่จะเก็บรายการสิ่งของทั้งหมดของชั้นเรียน ฉันคิดเกี่ยวกับอาร์เรย์หรือคอลเลกชันแบบคงที่ซึ่งคอนสตรัคเตอร์ของมันวัตถุใหม่ที่สร้างขึ้นจะถูกเพิ่มเข้าไป อย่างไรก็ตามสิ่งนี้จะไม่ทำงานกับคลาสย่อยเนื่องจากตัวสร้างจะไม่สืบทอด ฉันรู้ว่าคำถามนี้อาจไม่มีคำตอบง่ายๆ ฉันแค่หวังว่าใครบางคนสามารถสอนฉันในเรื่องนี้ได้บ้าง ฉันรู้สึกเหมือนว่าฉันขาดความรู้ที่เป็นศูนย์กลางที่นี่

3
การฉีดแบบพึ่งพานั้นไม่เพียงแค่เคลื่อนย้ายความซับซ้อนไปยังคลาสอื่น ๆ
ฉันกำลังมองหาการใช้กรอบการทำงานของพายุไต้ฝุ่นสำหรับการฉีดพึ่งพา ฉันได้รับว่าการแยกการก่อสร้างวัตถุนั้นมีประโยชน์สำหรับการแทนที่ส่วนประกอบโดยพลการด้วย mocks ระหว่างการทดสอบหน่วยและจนถึงตอนนี้ฉันได้เห็นประโยชน์จากสิ่งนี้เพียงอย่างเดียว แต่ฉันไม่สามารถช่วยได้ แต่คิดว่าก่อนที่ฉันจะมีคลาสตัวควบคุมมุมมองที่มีขนาดใหญ่ซึ่งมีการนำเข้าส่วนหัวนับสิบตอนนี้ฉันมีระดับโรงงานที่มีขนาดมหึมาซึ่งมีส่วนหัวที่นำเข้าหลายสิบ ฉันควรจะหลีกเลี่ยงการมีโรงงานขนาดใหญ่หรือไม่?

1
ค่าของ MVVM ในแอปพลิเคชันทางธุรกิจ (และการใช้แนวทางปฏิบัติในการพัฒนาปัจจุบัน)
หลังจาก 2 ปีฉันยังคงดิ้นรนกับ MVVM เป็นวิธีปฏิบัติในการผลิตซอฟต์แวร์ที่ใช้งานได้ ในบางกรณีมันยอดเยี่ยมมาก ฉันทำแอพพลิเคชั่นแบบมัลติเธรดที่ควบคุมแอสเซมบลีไลน์เล็ก ๆ ซึ่งน่าจะเป็น nightmere โดยปราศจากแนวคิด MVVM สิ่งที่เป็นนามธรรมจากสายการประกอบกายภาพเกือบจะเป็นเกมง่ายๆ อย่างไรก็ตามอาชีพของฉันส่วนใหญ่หมุนรอบแอปพลิเคชันทางธุรกิจภายใน - การทำให้เป็นทางการและการเพิ่มประสิทธิภาพการดำเนินงานของธุรกิจ ในแอพดังกล่าวโดยทั่วไปมักจะมีนักธุรกิจที่ทำงานเกี่ยวกับ CRUD และการดำเนินงานแบบผสม ใน LOBs โมเดลการดูของฉันจะเป็นคอลเล็กชั่นที่เรียบง่ายของฟังก์ชั่นห่อหุ้มบรรทัดเดียวของวิธีการเรียนธุรกิจและท้ายที่สุดก็จบลงด้วยการทำให้งานง่ายที่สุดเช่นแสดงกล่องข้อความหรือเปิดหน้าต่าง ไม่มีใครอื่นพบว่ามันแปลกหรือเปล่าเมื่อผู้คนเข้าสู่ "การฉีดของผู้พึ่งพา" และ "ผู้ให้บริการการส่งข้อความ" เป็นเวลานานสำหรับการแสดงหน้าต่าง มีคำถามอื่นอีกกี่คำถามในกองล้นที่ขอคำแนะนำสำหรับงานที่ง่ายมากใน winforms อย่าเข้าใจฉันผิด - ฉันได้รับ MVVM และวิธีที่จะมีค่ามากสำหรับทีมขนาดใหญ่ที่พัฒนาแพคเกจซอฟต์แวร์แบบห่อหุ้มและวางตลาดในแนวนอน การทดสอบหน่วยการดูรุ่นสามารถบันทึกล้านโดยหลีกเลี่ยงข้อผิดพลาด RTM ที่ไม่ดีและนักพัฒนา UI เฉพาะสามารถให้ประสบการณ์มากมาย แต่เมื่อค่าใช้จ่ายในการปรับใช้ใหม่มีน้อยและธุรกิจทั้งหมดใส่ใจที่จะจ่ายเป็นซอฟต์แวร์ที่ใช้งานง่ายทำไมฉันจึงควรใช้หน่วยเวลาในการทดสอบ "wrapper" vm แบบง่าย ๆ เมื่อตรรกะทางธุรกิจของฉันถูกทดสอบแล้ว? เวลาเท่าไหร่ในธุรกิจที่จะทำให้ฉันได้ใช้เวลากับอนิเมชั่นน่ารักและโครงร่างสี? มีอะไรเหลือสำหรับผู้พัฒนารุ่นน้องที่ต้องทำ (ติดตามข้อบกพร่องในฟังก์ชันการบันทึกที่เคยดูที่ "Save_Click" เป็นที่ยอมรับฉันชอบ …
9 wpf  mvvm 

7
เหตุใดจึงมีตัวเลขหลายประเภท (บิต, int, float, double, long)
ฉันได้เรียนรู้ PHP, Java, และ C ตอนนี้ฉันอยากรู้ว่าทำไมมีชนิดข้อมูลตัวเลขมากมายเช่นบิต, int, float, double และ long ทำไมไม่สร้างตัวเลขเพียงประเภทเดียว? มีประโยชน์กับเรื่องนี้หรือไม่? บางทีถ้าเราใช้จำนวนเต็มเพื่อเก็บจำนวนน้อยเช่นนี้เราสามารถบันทึกความทรงจำได้?
9 numbers 

6
หากแบบจำลองนี้ตรวจสอบความถูกต้องของข้อมูลมันไม่ควรโยนข้อยกเว้นเกี่ยวกับอินพุตที่ไม่ดี?
การอ่านคำถาม SOนี้ดูเหมือนว่าการโยนข้อยกเว้นสำหรับการตรวจสอบความถูกต้องของข้อมูลเข้าของผู้ใช้ แต่ใครควรตรวจสอบข้อมูลนี้ ในแอปพลิเคชันของฉันการตรวจสอบความถูกต้องทั้งหมดจะทำในชั้นธุรกิจเนื่องจากมีเพียงคลาสเท่านั้นที่ทราบถึงค่าที่ถูกต้องสำหรับคุณสมบัติแต่ละรายการ ถ้าฉันจะคัดลอกกฎสำหรับการตรวจสอบคุณสมบัติไปยังตัวควบคุมมันเป็นไปได้ที่การเปลี่ยนแปลงกฎการตรวจสอบและตอนนี้มีสองสถานที่ที่ควรทำการปรับเปลี่ยน หลักฐานของฉันที่การตรวจสอบควรทำในชั้นธุรกิจผิดหรือเปล่า? สิ่งที่ฉันทำ ดังนั้นรหัสของฉันมักจะจบลงเช่นนี้ <?php class Person { private $name; private $age; public function setName($n) { $n = trim($n); if (mb_strlen($n) == 0) { throw new ValidationException("Name cannot be empty"); } $this->name = $n; } public function setAge($a) { if (!is_int($a)) { if (!ctype_digit(trim($a))) { throw …

3
การสร้างความสัมพันธ์เอนทิตีใน REST: ฉันสามารถสร้างพาเรนต์โดยโพสต์ไปที่ id เด็กได้หรือไม่?
ขณะนี้เรากำลังออกแบบ REST API เพื่อเข้าถึงข้อมูลลูกค้าแบบดั้งเดิม หนึ่งในองค์ประกอบใน API เป็นสินทรัพย์ของผู้ใช้ สินทรัพย์จะถูกเพิ่มภายใต้บริการที่กำหนด API ส่วนหลังจะเพิ่มเนื้อหาให้กับผู้ใช้ภายใต้บริการที่กำหนดเท่านั้น ดังนั้นจึงไม่มีผู้ใช้ - ความสัมพันธ์ของเนื้อหา แต่เป็นผู้ใช้ - [บริการ] - ความสัมพันธ์ของเนื้อหา URI ของเราจะเป็นดังนี้: /users/{id}/assets/{id}/services/{id} การใช้ API จะทราบรหัสเนื้อหาและรหัสบริการเพื่อสร้างรายการใหม่ สิ่งที่เราดิ้นรนคือการสร้างความสัมพันธ์นี้ วิธีหนึ่งที่ตรงไปตรงมาคือการโพสต์ความสัมพันธ์ทั้งหมด /users/{id}/assets/ POST /users/{id}/assets {asset:${id}, service:{id}, attribute1:"{var}", attribute2:"{var}"} แต่จากนั้นเราไม่ได้สร้างเนื้อหาตามที่ URI อาจระบุ แต่เป็นเรื่องเกี่ยวกับบริการสินทรัพย์ อีกทางเลือกหนึ่งเรากำลังพิจารณา POST'ing กับ URI ที่เกี่ยวข้องกับความสัมพันธ์ดังนี้: POST /users/{id}/assets/{id}/service/{id} {attribute1:"{var}", attribute2:"{var}"} แต่ในกรณีนี้เส้นทางของทรัพยากร/users/{id}/assets/{id}จะไม่มีอยู่ก่อน POST และจะถูกสร้างเป็นผลข้างเคียง กำลังโพสต์ไปยังเส้นทางของทรัพยากรที่ยังไม่ได้รับอนุญาตเลย? …

5
Agile MVP (ผู้เล่น / โปรแกรมเมอร์ที่ให้คุณค่าสูงสุด)
เมื่อเร็ว ๆ นี้ฉันได้มีส่วนร่วมในโครงการเปรียว (โดยใช้การทะเลาะกัน) ซึ่งฝ่ายบริหารคิดว่าทีมจะเสนอชื่อผู้พัฒนา 'MVP' รวมถึง QA 'MVP' ในตอนท้ายของการวิ่งแต่ละครั้งโหวตโดย ทีม. จากนั้น MVP จะได้รับเงินจำนวนเล็กน้อยและอาหารกลางวันฟรีรวมถึงถ้วยรางวัลสำหรับแสดงบนโต๊ะทำงานของเขา เรามีการวิ่งสองครั้งด้วยระบบรางวัลนี้ สิ่งที่ฉันเห็นจากสิ่งนี้คือ: ข้อบกพร่องเพิ่มเติมได้รับการแก้ไข (ซึ่งเป็นสิ่งที่ผู้บริหารระดับสูงต้องการที่จะเห็นการเปลี่ยนแปลงจำนวนในทิศทางที่พวกเขาต้องการ) MVP จากแต่ละทีม 'ได้รับการยอมรับและได้รับการเพิ่มความนับถือตนเอง (หรือมันคือการเพิ่มอัตตา?) ฉันสังเกตเห็นบางสิ่งที่ฉันจะพิจารณาด้านที่ไม่ดีในการทำสิ่งนี้ (อย่างน้อยจากมุมมองนักพัฒนา): มีนักพัฒนาซอฟต์แวร์บางคนที่กังวลกับจำนวนที่คุณภาพของการแก้ไขข้อบกพร่องลดลง การแก้ไขในพื้นที่หนึ่งเป็นสาเหตุของการถดถอยในพื้นที่อื่น มีนักพัฒนาไม่กี่คนที่กำลังหยิบบั๊ก 'ง่าย / เร็วขึ้น' เพื่อเพิ่มจำนวนบั๊ก อาจจะดีไม่ดีที่นี่ฉันเดา ลำดับความสำคัญที่สูงกว่า (ซึ่งบ่อยครั้งมากจะสัมพันธ์กับ 'ยากขึ้น / ยาวขึ้นเพื่อแก้ไข') ข้อบกพร่องจริง ๆ แล้วกลายเป็นลำดับความสำคัญที่ต่ำกว่า ข้อบกพร่องในการบล็อกจะไม่ได้รับการแก้ไขในเวลาที่เหมาะสมเนื่องจากโดยปกติแล้วพวกเขาจะใช้เวลานานกว่าและต้องการการประสานงานกับ QA มากขึ้น มุมมองของทีมภายในทีม Dev หายไป แง่มุมของทีมของ Dev และ QA …


1
การตั้งชื่อคลาสและอินเตอร์เฟสที่เกี่ยวข้อง
ฉันได้สร้างObjectParserคลาสที่แยกวิเคราะห์ข้อมูลเป็นวัตถุที่พิมพ์อย่างยิ่งโดยใช้IObjectParserDataSourceเป็นแหล่งข้อมูล (ข้อมูลอาจเป็นไฟล์ Excel, ไฟล์ข้อความ, อาเรย์, สตริงการสืบค้น ฯลฯ ) ตัวอย่างของการใช้งานของฉันIObjectParserDataSourceคือ: TextFileObjectParserDataSource ExcelFileObjectParserDataSource ชื่อชั้นเหล่านี้ให้ความรู้สึกยาวและโน้มน้าวใจฉัน ฉันชื่อพวกเขาได้: TextFileDataSource ExcelFileDataSource แต่สิ่งนี้นำเสนอระดับความคลุมเครือและพวกเขาก็ไม่ได้เกี่ยวข้องอย่างชัดเจนกับการIObjectParserDataSourceมองแวบแรก สิ่งนี้กลายเป็นสิ่งสำคัญเนื่องจากการกำหนดแหล่งข้อมูลเหล่านี้จะเกิดขึ้นในรหัสลูกค้าและฉันต้องการลดความสับสนและความไม่แน่นอนที่อาจเกิดขึ้น คุณจะตั้งชื่อคลาสเหล่านี้ในสถานการณ์จำลองได้อย่างไร?

6
การดึงค่าสูงสุดจากช่วงในอาร์เรย์ที่ไม่เรียงลำดับ
ฉันมีอาร์เรย์ไม่ได้เรียงลำดับ ฉันมีข้อความค้นหาที่ให้ช่วงและค่าสูงสุดจากช่วงนั้นต้องส่งคืน ตัวอย่างเช่น: array[]={23,17,9,45,78,2,4,6,90,1}; query(both inclusive): 2 6 answer: 78 ฉันจะสร้างอัลกอริทึมหรือโครงสร้างข้อมูลใดเพื่อดึงค่าสูงสุดอย่างรวดเร็วจากช่วงใดก็ได้ (มีข้อความค้นหาจำนวนมาก) แก้ไข: นี่เป็นปัญหาจริงที่เรียบง่าย ฉันสามารถมีขนาดอาร์เรย์ที่มีขนาดใหญ่ถึง 100,000 และจำนวนการสืบค้นสูงสุดถึง 100,000 ดังนั้นฉันต้องมีการประมวลผลล่วงหน้าซึ่งจะช่วยให้การตอบแบบสอบถามรวดเร็วขึ้น

1
ประกาศลิขสิทธิ์ลิขสิทธิ์ MIT สำหรับงานที่ได้รับ
เรากำลังคิดที่จะใช้ซอฟต์แวร์โอเพ่นซอร์สลิขสิทธิ์ MIT ในโครงการเว็บของเรา ( ปลั๊กอิน jQuery datetime ) บรรทัดแรกของใบอนุญาต MIT คือ: ลิขสิทธิ์ (c) [ปี] [ผู้ถือลิขสิทธิ์] หากเรารวมปลั๊กอินตามที่เป็น (โดยไม่ทำการเปลี่ยนแปลงใด ๆ ) ฉันเข้าใจว่าเราจำเป็นต้องรวมใบอนุญาตกับผู้เขียนต้นฉบับเท่านั้น (แม้ว่าประกาศลิขสิทธิ์จริงที่ด้านบนของไฟล์ js ไม่ได้ระบุปี): ลิขสิทธิ์ (c) 2013 Keith Wood หากเราทำการเปลี่ยนแปลงกับปลั๊กอินประกาศเกี่ยวกับลิขสิทธิ์จะเกิดอะไรขึ้น? ลิขสิทธิ์ (c) 2013 Keith Wood, 2013 [ชื่อของฉัน / ชื่อ บริษัท ] คุณต้องการรวมผู้แต่งก่อนหน้านี้ทั้งหมดหรือมีวิธีจัดการกับการแจ้งเตือนดังกล่าวหรือไม่?

2
Haskell / Clojure จริง ๆ แล้วไม่เหมาะสำหรับระบบไดนามิกเช่นการจำลองอนุภาค?
ฉันได้รับการบอกในคำถามก่อนหน้านี้ว่าภาษาโปรแกรมที่ใช้งานได้ไม่เหมาะสมสำหรับระบบแบบไดนามิกเช่นเอนจิ้นฟิสิกส์ส่วนใหญ่เป็นเพราะมันมีราคาแพงในการกลายพันธุ์วัตถุ ข้อความนี้มีความสมจริงเพียงใดและทำไม


2
วิธีการห่อหุ้มตัวแปร 'ทั่วโลก' ใน C #? /ปฏิบัติที่ดีที่สุด
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ใน C # วิธีที่ดีที่สุดสำหรับการห่อหุ้มตัวแปรที่ฉันต้องการใช้ในหลายวิธีคืออะไร? ตกลงไหมที่จะประกาศพวกเขาที่ชั้นบนสุดของชั้นเรียนของฉันเหนือสองวิธี? นอกจากนี้หากฉันใช้การตั้งค่าแอพจากไฟล์ปรับแต่งฉันควรใช้ getter หรือไม่? แบบนี้... private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } } การปฏิบัติที่ดีที่สุดคืออะไร?

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