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

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

2
การตรวจสอบประเภทและประเภทการเรียกซ้ำ (การเขียน Y combinator ใน Haskell / Ocaml)
เมื่ออธิบายผู้ประสานงาน Y ในบริบทของ Haskell มักจะกล่าวว่าการนำไปใช้งานแบบตรงไปตรงมาจะไม่ตรวจสอบประเภทใน Haskell เนื่องจากเป็นแบบเรียกซ้ำ ตัวอย่างเช่นจากRosettacode : The obvious definition of the Y combinator in Haskell canot be used because it contains an infinite recursive type (a = a -> b). Defining a data type (Mu) allows this recursion to be broken. newtype Mu a = Roll { …

7
Scrum Master มีส่วนร่วมใน Daily Stand-Ups อย่างไร
เรามีที่ปรึกษา Scrum Master มืออาชีพ [*] ที่เพิ่งเข้าร่วมโครงการของเรา น่าเสียดายที่เราไม่รู้จักชื่อของเธอ (เธอไม่เคยแนะนำตัวเองกับเราเธอเพิ่งมาในวันเดียวและพูดว่า "เรากำลังยืนขึ้นทุกวัน") และดูเหมือนว่าเธอจะไม่ทำอะไรมากนอกจากเก้าอี้ การประชุมยืนขึ้นทุกวัน - เมื่อฉันขอให้เธอแสดงความคิดเห็นทุกวันในการประชุมเธอก็ดูถูกเหยียดหยามโดยบอกว่ามันเป็นหน้าที่ของอาจารย์ Scrum ที่จะ "อำนวยความสะดวกไม่เข้าร่วม" ดูเหมือนว่าจะค่อนข้างต่อต้านเปรียว (เคยทำงานในโครงการเปรียวอื่น ๆ ที่ทีมงานกำกับตนเอง) ซึ่งควรจะมีความคุ้มค่า แต่ฉันไม่แน่ใจเกี่ยวกับวิธีการทำงานในวิธีการแย่งชิงกัน ฉันสงสัยว่าเธอไม่ได้ทำอะไรมากทั้งวันและนั่นเป็นเหตุผลที่ทำให้เธอมีปัญหาในเรื่องนี้ Scrum Master มีส่วนร่วมในเกม "เมื่อวานวันนี้อุปสรรค" ระหว่างการประชุม Stand-up หรือมีบทบาทในการเป็นประธาน ("อำนวยความสะดวก") ในการประชุมหรือไม่? [*] เราไม่ได้บอกจริง ๆ ว่างานของเธอคืออะไรเราแค่สันนิษฐานเพราะเธอเรียกตัวเองว่า Scrum Master

3
ในความเป็นจริงผู้พัฒนายังจัดการ DBMS และระบบด้วยหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันไม่รู้ว่าจะถามที่ไหน ดังนั้นที่นี่มันจะไป ฉันทำงานที่ บริษัท เล็ก ๆ ที่ทำซอฟต์แวร์ ERP และเว็บไซต์ 1 นักพัฒนาที่มีประสบการณ์มากกว่า 10 ปี 2 นักพัฒนาที่มีประสบการณ์ 3 ปี 3 นักพัฒนาที่มีประสบการณ์ 1 ปี แค่นั้นแหละ. ไม่มีทีมไม่มี DBA ไม่มีผู้ดูแลระบบ ไม่มีใครอยู่แถวนี้ที่มีความเชี่ยวชาญในการพัฒนาเว็บไซต์ดังนั้นฉันจึงรับผิดชอบการพัฒนาเว็บไซต์ แต่ฉันมีประสบการณ์ 3 ปี! ในฐานะนักพัฒนา! ฉันรู้ว่าใน บริษัท เล็ก ๆ คุณถูกขอให้ทำสิ่งต่าง ๆ มากมาย แต่มันมากเกินไปถ้าฉันต้องทำดูแลระบบสถาปัตยกรรมฐานข้อมูลการออกแบบซอฟต์แวร์และการพัฒนา? โอ้ฉันขอให้ทำทั้งหมดในแพลตฟอร์มที่แตกต่างกัน ฉันกำลังทำงานกับ JSP, ASP, MSSQL, …

2
ข้อกำหนดการตั้งชื่อสำหรับคลาส Java ที่มีเมธอด main static หรือไม่?
หลังจากอ่านคำตอบของ gnatไปที่ทำไมวิธีหลักแบบคงที่ใน Java และ C # แทนที่จะเป็นตัวสร้าง? ฉันใช้คำตอบของเขาเพื่อหมายความว่าจุดประสงค์ของคลาส Java ที่มีเมธอด main static คือเพื่อdefine a program entry pointและไม่ได้หมายความว่าเป็นโปรแกรมเอง อาจมีวิธีที่ดีกว่าในการทำเช่นนี้ แต่ฉันมักจะมีชั้นเรียนที่มีวิธีหลักแบบคงที่เพื่อทำสิ่งที่ง่ายเช่นนี้ public class MenuLauncher { public static void main(String[] args) { Menu menu = new Menu(); menu.run(); } } โค้ดด้านบนจะเป็นแนวปฏิบัติที่ดีที่สุดสำหรับ OOP หรือไม่หากคลาสที่มีสแตติกหลักไม่ได้ทำอะไรมากไปกว่าการเริ่มต้นหรือเริ่มโปรแกรมตรรกะภายในวัตถุที่ไม่คงที่แยกต่างหาก หลังจากทั้งหมดหลักเป็นแบบคงที่ดังนั้นชั้น MenuLauncher จะไม่ถูก จำกัด มาก? เนื่องจาก main เป็นจุดเริ่มต้นฉันไม่เห็นจุดประสงค์อื่นใดสำหรับชั้นเรียนอื่นที่ไม่ใช่จุดเข้า มีแบบแผนการตั้งชื่อ Java …

5
ฉันจะทดสอบหน่วยเรียนที่ต้องใช้บริการโทรทางเว็บได้อย่างไร
ฉันพยายามทดสอบคลาสที่เรียกบริการเว็บของ Hadoop รหัสมีรูปแบบค่อนข้างมาก: method() { ...use Jersey client to create WebResource... ...make request... ...do something with response... } เช่นมีวิธีสร้างไดเรกทอรีวิธีสร้างโฟลเดอร์เป็นต้น ระบุว่ารหัสนั้นเกี่ยวข้องกับบริการเว็บภายนอกที่ฉันไม่สามารถควบคุมได้ฉันจะทดสอบหน่วยนี้ได้อย่างไร ฉันสามารถลองและเยาะเย้ยไคลเอนต์บริการเว็บ / การตอบสนอง แต่นั่นทำลายแนวทางที่ฉันได้เห็นมากเมื่อเร็ว ๆ นี้: "อย่าเยาะเย้ยวัตถุที่คุณไม่ได้เป็นเจ้าของ" ฉันสามารถตั้งค่าการใช้บริการเว็บจำลองที่ยังคงเป็นการทดสอบหน่วยหรือว่าเป็นการทดสอบการรวมหรือไม่ เป็นไปไม่ได้หรือที่จะทำการทดสอบหน่วยในระดับต่ำนี้ผู้ประกอบการ TDD จะทำเช่นนี้ได้อย่างไร?

10
ประโยชน์ของ 64 บิต A7 ใน iPhone คืออะไร
ฉันพยายามหาสาเหตุว่าทำไมโปรเซสเซอร์ 64 บิตถึงเป็นเรื่องใหญ่ใน iPhone ฉันเข้าใจว่าจะมีการลงทะเบียนมากเป็นสองเท่าเพื่อให้โปรเซสเซอร์สามารถทำงานกับข้อมูลได้มากเป็นสองเท่าซึ่งควรเพิ่มประสิทธิภาพ อย่างไรก็ตามฉันไม่เห็นโทรศัพท์จำนวนมากที่จะใช้หน่วยความจำมากกว่า 4GB ในเวลาอันรวดเร็ว ดูเหมือนว่า overkill และจะส่งผลเสียต่อแบตเตอรี่ อีกปัญหาที่ฉันเห็นคือตอนนี้ตัวแปรส่วนใหญ่ต้องการหน่วยความจำมากเป็นสองเท่า สิ่งนี้จะสร้างปัญหาในสภาพแวดล้อมอุปกรณ์พกพาที่มีหน่วยความจำน้อย ฉันเชื่อว่าคนที่ Apple ฉลาดและพวกเขาอาจมีเหตุผลที่ดีในการทำเช่นนี้ฉันแค่พยายามที่จะเข้าใจพวกเขา แก้ไข ไม่ค่อยรู้เกี่ยวกับ GPU มากนัก แต่มีคนบอกฉันว่าด้วย 64 บิตเรจิสเตอร์ 2 พิกเซลสามารถโหลดลงในแต่ละรีจิสเตอร์ได้ มีข้อได้เปรียบด้านกราฟิกที่เกี่ยวข้องกับ 64 บิตหรือไม่
21 ios  iphone  64-bit 

3
มีประโยชน์ใด ๆ ในการลบคำสั่งที่ไม่ได้ใช้ในโครงการ VS หรือไม่?
มีประโยชน์ที่จะลบคำสั่งที่ไม่ได้ใช้ในโครงการ VS (เช่นสามารถทำได้โดยใช้ Resharper) หรือ VS จะดูแลโดยอัตโนมัติเมื่อสร้าง / ปรับใช้?

3
มีการทดสอบการปฏิบัติตามสำหรับคอมไพเลอร์ C ++ หรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา มีที่ไหนสักแห่งสคริปต์ที่ใช้งานได้ / สามารถเข้าถึงได้อย่างอิสระไฟล์ต้นฉบับหรืออะไรก็ตามที่สามารถวัดการปฏิบัติตามคอมไพเลอร์ C ++ ที่กำหนดได้หรือไม่? ตัวอย่างเช่นการทดสอบ Acid3 สำหรับเบราว์เซอร์: http://acid3.acidtests.org/ ผลลัพธ์ที่ฉันใฝ่ฝันจะเป็นบันทึกเปอร์เซ็นต์ทั่วโลก (หรือหลายบันทึกย่อหนึ่งรายการสำหรับแต่ละมาตรฐานเช่น c ++ 98, c ++ 11, c ++ 14, ฯลฯ ) แล้วทดสอบรายละเอียดด้วย "สำเร็จ" หรือ "ล้มเหลว" สำหรับแต่ละรายการ ที่มา: ฉันมีการสนทนาเกี่ยวกับการส่งเสริมและคอมไพเลอร์ที่ท้าทายบางอย่าง คู่สนทนาของฉันพูดถึงการส่งเสริมเป็นโครงการวิชาการเพราะมันจะไม่ทำงานในคอมไพเลอร์ C ++ ที่สำคัญและฉันตอบว่าคอมไพเลอร์ที่มีปัญหาทางจิตใจไม่ควรนับ ความสามารถในการวัดด้วยรหัสความสอดคล้องที่แท้จริงของคอมไพเลอร์จะช่วยทั้งในการประเมินคอมไพเลอร์และการค้นพบ "มุมกรณี" ที่ควรหลีกเลี่ยงในโค้ดข้ามแพลตฟอร์มที่คอมไพล์ด้วย แก้ไข: 2013-06-22 …
21 c++ 

1
Go ปรับปรุงประสิทธิภาพการทำงานด้วยอินเทอร์เฟซ“ นัย” อย่างไรและเปรียบเทียบกับแนวคิดของ C # ของวิธีการขยายอย่างไร
ในการสอนภาษาไปพวกเขาอธิบายว่าอินเตอร์เฟสทำงานอย่างไร: Go ไม่มีคลาส อย่างไรก็ตามคุณสามารถกำหนดวิธีการกับประเภทโครงสร้าง รับวิธีการที่ปรากฏในรายการอาร์กิวเมนต์ของตัวเองระหว่างคำหลัก func และชื่อวิธีการ type Vertex struct { X, Y float64 } func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } ประเภทอินเตอร์เฟสถูกกำหนดโดยชุดวิธีการ ค่าประเภทอินเตอร์เฟสสามารถเก็บค่าใดก็ได้ที่ใช้วิธีการเหล่านั้น นี่เป็นวิธีเดียวในการสร้างส่วนต่อประสานใน Go Google อธิบายเพิ่มเติมว่า: ชนิดที่ใช้อินเทอร์เฟซโดยใช้วิธีการ ไม่มีการประกาศเจตนาอย่างชัดเจน [ interfaceการประกาศเช่น] อินเทอร์เฟซโดยนัย decouple ใช้งานแพคเกจจากแพคเกจที่กำหนดอินเทอร์เฟซ: ไม่ขึ้นอยู่กับอีก นอกจากนี้ยังสนับสนุนการกำหนดอินเทอร์เฟซที่แม่นยำเนื่องจากคุณไม่จำเป็นต้องค้นหาทุกการติดตั้งและติดแท็กด้วยชื่ออินเตอร์เฟสใหม่ ทั้งหมดนี้ฟังดูน่าสงสัยเช่นวิธีการขยายใน C #ยกเว้นวิธีการใน Go ที่เป็น polymorphic โหดเหี้ยม พวกเขาจะทำงานในประเภทใด ๆที่ใช้พวกเขา …
21 c#  language-design  go 

3
วิธีการเรียกใช้รหัส C ++ ในเบราว์เซอร์โดยใช้ asm.js?
แอปพลิเคชัน asm.js นั้นเร็วมาก (ใกล้กับความเร็ว C ++ ดั้งเดิม): http://kripken.github.io/mloc_emscripten_talk/micro4b.png แต่มันเป็นไปได้อย่างไรที่จะเขียนมันใน C ++, แปลงเป็นรหัส LLVM, แล้วใช้เล่ห์เหลี่ยมกับ emscripten / asm.js? ฉันไม่พบบทช่วยสอนเกี่ยวกับเรื่องนี้ และถ้าฉันเขียนโค้ดใน C ++ แล้วจะใช้ js API-s เช่น XMLHttpRequest, WebSockets, Canvas หรือ WebGL ได้อย่างไร
21 c++  javascript  llvm 

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

5
ฟังก์ชั่นการเขียนโปรแกรม: แนวคิดที่ถูกต้องเกี่ยวกับการทำงานพร้อมกันและรัฐ
ผู้เสนอ FP อ้างว่าภาวะพร้อมกันนั้นง่ายเนื่องจากกระบวนทัศน์ของพวกเขาหลีกเลี่ยงสภาวะที่ไม่แน่นอน ฉันไม่เข้าใจ ลองจินตนาการว่าเรากำลังสร้างการรวบรวมข้อมูลดันเจี้ยนแบบผู้เล่นหลายคน (โร๊คไลค์) โดยใช้ FP ที่เราเน้นฟังก์ชั่นที่บริสุทธิ์และโครงสร้างข้อมูลที่ไม่เปลี่ยนรูป เราสร้างดันเจี้ยนที่ประกอบด้วยห้องโถงทางเดินวีรบุรุษมอนสเตอร์และของขวัญ โลกของเราเป็นกราฟวัตถุของโครงสร้างและความสัมพันธ์อย่างมีประสิทธิภาพ เมื่อสิ่งต่าง ๆ เปลี่ยนการเป็นตัวแทนของโลกเราก็จะได้รับการแก้ไขเพื่อสะท้อนการเปลี่ยนแปลงเหล่านั้น ฮีโร่ของเราฆ่าหนูหยิบดาบสั้น ฯลฯ สำหรับฉันโลก (ความเป็นจริงในปัจจุบัน) นำแนวคิดของรัฐนี้มาใช้และฉันขาดวิธีที่ FP เอาชนะสิ่งนี้ ในฐานะฮีโร่ของเราดำเนินการฟังก์ชั่นแก้ไขสถานะของโลก ดูเหมือนว่าการตัดสินใจทุกอย่าง (AI หรือมนุษย์) จะต้องขึ้นอยู่กับสถานะของโลกตามที่เป็นอยู่ในปัจจุบัน เราจะอนุญาตให้มีการทำงานพร้อมกันได้ที่ไหน? เราไม่สามารถมีกระบวนการหลายอย่างพร้อมกันทำให้เป็นโมฆะสถานะของโลกว่ากระบวนการหนึ่งจะยึดผลลัพธ์ของมันในบางสถานะที่หมดอายุ ฉันรู้สึกว่าการควบคุมทั้งหมดควรเกิดขึ้นภายในลูปควบคุมเดียวเพื่อให้เราประมวลผลสถานะปัจจุบันที่แสดงด้วยกราฟวัตถุปัจจุบันของโลก เห็นได้ชัดว่ามีสถานการณ์ที่เหมาะอย่างยิ่งสำหรับการเกิดพร้อมกัน (เช่นเมื่อการประมวลผลงานแยกที่มีสถานะเป็นอิสระจากกัน) ฉันไม่เห็นว่าการใช้งานพร้อมกันมีประโยชน์ในตัวอย่างของฉันอย่างไรและนั่นอาจเป็นปัญหา ฉันอาจแสดงข้อเรียกร้องผิด ๆ บางคนสามารถเป็นตัวแทนของการอ้างสิทธิ์นี้ได้ดีขึ้นหรือไม่

4
“ วางวัตถุเกินไป”
ฉันมาจากภูมิหลังที่แข็งแกร่งของ OO และฉันเพิ่งเริ่มทำงานในองค์กรซึ่งถึงแม้ว่ารหัสจะถูกเขียนใน Java แต่ก็มีความสำคัญน้อยกว่าในการออกแบบ OO ที่ดีกว่าที่ฉันเคยทำ ฉันได้รับการบอกกล่าวว่าฉันแนะนำ "นามธรรมมากเกินไป" และฉันควรจะเขียนรหัสตามวิธีที่มันทำมาตลอดซึ่งเป็นรูปแบบขั้นตอนใน Java TDD นั้นไม่ได้ฝึกฝนมากที่นี่ แต่ฉันต้องการมีรหัสที่สามารถทดสอบได้ การฝังตรรกะทางธุรกิจในวิธีส่วนตัวแบบคงที่ใน "คลาสพระเจ้า" ขนาดใหญ่ (ซึ่งดูเหมือนจะเป็นบรรทัดฐานสำหรับทีมนี้) นั้นไม่สามารถทดสอบได้มากนัก ฉันต่อสู้อย่างชัดเจนในการสื่อสารแรงจูงใจของฉันกับเพื่อนร่วมงานของฉัน ใครบ้างมีคำแนะนำเกี่ยวกับวิธีที่ฉันสามารถโน้มน้าวให้เพื่อนร่วมงานของฉันที่ใช้ OO และ TDD นำไปสู่รหัสบำรุงรักษาง่ายขึ้น? คำถามเกี่ยวกับหนี้ทางเทคนิคนี้เกี่ยวข้องกับคำถามของฉัน อย่างไรก็ตามฉันพยายามหลีกเลี่ยงการก่อหนี้ในครั้งแรกซึ่งตรงข้ามกับการจ่ายเงินหลังจากข้อเท็จจริงซึ่งเป็นคำถามอื่น ๆ ที่ครอบคลุม

1
รูปแบบการออกแบบสำหรับการแปลงวัตถุ (java)
ฉันไม่ได้ใช้รูปแบบการออกแบบบ่อยครั้งนอกเหนือจากโรงงานเป็นครั้งคราวและ MVC และฉันต้องการเริ่มใช้พวกเขามากขึ้น ฉันมีกรณีที่เป็นรูปธรรมที่ฉันต้องการความเห็นของคุณเกี่ยวกับการใช้รูปแบบการออกแบบในกรณีนี้ ในแอปพลิเคชันของฉันฉันต้องแปลงวัตถุบ่อยครั้งในสถานการณ์ที่แตกต่างกัน ฉันอาจต้องแปลง PONO ของ Hibernate เป็น DTO เนื่องจากฉันใช้ GWT และ Hibernate POJO นั้นไม่สามารถต่อเนื่องได้และไม่สามารถส่งข้ามสายได้ ในสถานการณ์อื่นฉันอาจต้องแปลงวัตถุ Java เป็น SolrInputDocument เพื่อสร้างดัชนีโดย Solr ฉันต้องการทราบว่าฉันควรใช้รูปแบบการออกแบบสำหรับสิ่งนี้หรือไม่ ดูเหมือนว่า "การแปลงวัตถุ" เป็นงานทั่วไปที่สามารถจัดการในรูปแบบที่มีความยืดหยุ่น / เป็นนามธรรมโดยรูปแบบ แต่ฉันไม่เห็นวิธีจริงๆ หากไม่มีรูปแบบฉันจะสร้างคลาสแยกต่างหากสำหรับการแปลงแต่ละประเภทตัวอย่างเช่น CourseToSolrInputDocument (หลักสูตรเป็นเอนทิตีไฮเบอร์เนตในแอปพลิเคชันของฉัน) หรือ CourseToCourseDTO แต่ละคลาสการแปลงเหล่านี้อาจมีวิธีสแตติกเดียวที่เรียกconvert()ว่าใช้วัตถุต้นทางเป็นอินพุตและส่งคืนวัตถุเอาต์พุต แต่นั่นไม่ใช่รูปแบบจริงๆใช่ไหม? ดังนั้นฉันจึงเริ่มทำบางสิ่งกับยาชื่อสามัญและสร้างคลาสนี้ที่ใช้ส่วนต่อประสานตัวแปลง แต่อย่างใดรู้สึกโง่ tgo สร้างอินเทอร์เฟซทั่วไปและฉันไม่เห็นประโยชน์นอกเหนือจากความสามารถในการแสดงความยินดีกับการใช้ generics public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument> { @Override …

6
แผนที่ของฟังก์ชั่นเทียบกับคำสั่งเปลี่ยน
ฉันกำลังทำงานในโครงการที่ประมวลผลคำขอและมีสององค์ประกอบในการร้องขอคือคำสั่งและพารามิเตอร์ ตัวจัดการสำหรับแต่ละคำสั่งนั้นง่ายมาก (<10 บรรทัดมัก <5) มีคำสั่งอย่างน้อย 20 คำและน่าจะมีมากกว่า 50 คำสั่ง ฉันคิดวิธีแก้ปัญหาสองสามข้อ: สวิตช์ใหญ่ / if-else หนึ่งคำสั่ง แผนที่ของคำสั่งไปยังฟังก์ชั่น แผนที่ของคำสั่งไปยังคลาสที่คงที่ / singletons แต่ละคำสั่งทำการตรวจสอบข้อผิดพลาดเล็กน้อยและบิตเดียวที่สามารถแยกออกได้คือการตรวจสอบจำนวนพารามิเตอร์ที่กำหนดไว้สำหรับแต่ละคำสั่ง อะไรจะเป็นทางออกที่ดีที่สุดสำหรับปัญหานี้และเพราะอะไร ฉันยังเปิดรับรูปแบบการออกแบบใด ๆ ที่ฉันอาจพลาดไป ฉันคิดรายการ pro / con ต่อไปนี้สำหรับแต่ละรายการ: สวิตซ์ ข้อดี เก็บคำสั่งทั้งหมดไว้ในฟังก์ชันเดียว เนื่องจากมันเรียบง่ายนี่ทำให้เป็นตารางการค้นหาด้วยภาพ ไม่ต้องวุ่นวายกับแหล่งข้อมูลด้วยฟังก์ชั่นขนาดเล็กจำนวนมาก / คลาสที่สามารถใช้งานได้ในที่เดียว ข้อเสีย นานมาก ยากที่จะเพิ่มคำสั่งโดยทางโปรแกรม (จำเป็นต้องโยงใช้ตัวพิมพ์เล็ก) คำสั่งแผนที่ -> ฟังก์ชั่น ข้อดี ชิ้นเล็กขนาดกัด สามารถเพิ่ม / ลบคำสั่งโดยทางโปรแกรม ข้อเสีย หากทำแบบอินไลน์เหมือนกับสวิตช์ …

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