คำถามติดแท็ก design

คำถามเกี่ยวกับการแก้ปัญหาและการวางแผนแก้ปัญหาผ่านการออกแบบซอฟต์แวร์

6
ภาษาตามจำนวน จำกัด ของอาร์กิวเมนต์ที่ส่งผ่านไปยังฟังก์ชัน
แนวคิดนี้ได้รับแรงบันดาลใจจากตัวดำเนินการข้อเท็จจริงเช่น +, -,%, เป็นต้นซึ่งสามารถมองเห็นได้ว่าเป็นฟังก์ชั่นที่ผ่านการโต้แย้งหนึ่งหรือสองครั้งและไม่มีผลข้างเคียง สมมติว่าฉันหรือคนอื่นเขียนภาษาที่หยุดไม่ให้มีการโต้แย้งมากกว่าสองข้อและยังใช้งานได้ผ่านการส่งคืนเท่านั้น: ก) ภาษานั้นจะทำให้เข้าใจรหัสได้ง่ายขึ้นหรือไม่ b) การไหลของรหัสจะชัดเจนขึ้นหรือไม่ (บังคับให้ทำตามขั้นตอนมากขึ้นโดยที่การโต้ตอบ 'ซ่อน' อาจมีน้อยลง c) ข้อ จำกัด จะทำให้ภาษามีขนาดใหญ่เกินไปสำหรับโปรแกรมที่ซับซ้อนมากขึ้น d) (โบนัส) ความคิดเห็นอื่น ๆ เกี่ยวกับข้อดี / ข้อเสีย บันทึก: การตัดสินใจสองครั้งจะยังคงต้องทำก่อนคืออนุญาตให้ผู้ใช้ป้อนข้อมูลนอกหลัก () หรือเทียบเท่าและสิ่งที่กฎจะเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อผ่านอาร์เรย์ / โครงสร้าง ตัวอย่างเช่นหากมีคนต้องการฟังก์ชั่นเดียวที่จะเพิ่มค่าหลายค่าเขาสามารถหลีกเลี่ยงข้อ จำกัด โดยรวมมันเข้าไปในอาร์เรย์ สิ่งนี้สามารถหยุดได้โดยไม่อนุญาตให้อาร์เรย์หรือโครงสร้างจากการโต้ตอบกับตัวเองซึ่งจะช่วยให้คุณตัวอย่างเช่นหารจำนวนแต่ละจำนวนด้วยจำนวนที่แตกต่างกันขึ้นอยู่กับตำแหน่งของมัน

5
การใช้งานข้อยกเว้นในภาษา C ++
isocpp.org ข้อยกเว้น FAQระบุสถานะ อย่าใช้ Throw เพื่อระบุข้อผิดพลาดในการใช้งานฟังก์ชั่น ใช้ assert หรือกลไกอื่น ๆ เพื่อส่งกระบวนการไปยังดีบักเกอร์หรือเพื่อทำให้กระบวนการทำงานผิดพลาดและเก็บรวบรวมดัมพ์ของข้อผิดพลาดเพื่อให้นักพัฒนาทำการดีบัก ในทางกลับกันไลบรารีมาตรฐานจะกำหนด std :: logic_error และทั้งหมดเป็นอนุพันธ์ซึ่งดูเหมือนว่าฉันควรจะจัดการนอกเหนือจากสิ่งอื่น ๆ ข้อผิดพลาดในการเขียนโปรแกรม กำลังส่งสตริงว่างไปยัง std :: stof (จะโยน invalid_argument) ไม่ใช่ข้อผิดพลาดในการเขียนโปรแกรมหรือไม่? การส่งสตริงที่มีอักขระที่แตกต่างจาก '1' / '0' ถึง std :: bitset (จะส่ง invalid__chument) ไม่ใช่ข้อผิดพลาดในการเขียนโปรแกรมหรือไม่? กำลังเรียก std :: bitset :: set ด้วยดัชนีที่ไม่ถูกต้อง (จะโยน out_of_range) ไม่ใช่ข้อผิดพลาดในการเขียนโปรแกรมหรือไม่? หากสิ่งเหล่านี้ไม่ใช่ข้อผิดพลาดในการเขียนโปรแกรมที่จะทดสอบคืออะไร ตัวสร้างสตริงที่ใช้ std :: …
16 design  c++  exceptions 

2
การใช้หลักการของ Clean Code กับภาษาที่ใช้งานได้
ฉันกำลังอ่านโรเบิร์ตมาร์ตินรหัสสะอาด ฉันคิดว่ามันยอดเยี่ยมและเมื่อเขียนรหัส OO ฉันกำลังเรียนอยู่ในใจ โดยเฉพาะอย่างยิ่งฉันคิดว่าคำแนะนำของเขาในการใช้ฟังก์ชั่นเล็ก ๆ ที่มีชื่อที่มีความหมายทำให้โค้ดของฉันลื่นไหลได้อย่างราบรื่นมากขึ้น สรุปได้ดีที่สุดโดยคำพูดนี้: [W] e ต้องการให้สามารถอ่านโปรแกรมราวกับว่ามันเป็นชุดของย่อหน้า TO แต่ละอันจะอธิบายถึงระดับปัจจุบันของสิ่งที่เป็นนามธรรมและการอ้างอิงที่ตามมาถึงย่อหน้าในระดับถัดไป ( ทำความสะอาดรหัสหน้า 37: "TO วรรค" เป็นย่อหน้าที่เริ่มต้นด้วยประโยคที่เปล่งออกมาใน infinitive "ในการทำ X เราทำตามขั้นตอน Y และ Z" "เพื่อทำ Y เรา ... " ฯลฯ ) ตัวอย่างเช่น: หากต้องการ RenderPageWithSetupsAndTeardowns เราจะตรวจสอบว่าหน้าดังกล่าวเป็นหน้าทดสอบหรือไม่และหากเป็นเช่นนั้นเราได้รวมการตั้งค่าและการฉีกขาดไว้ด้วย ไม่ว่าในกรณีใดเราแสดงผลหน้าเว็บเป็น HTML ฉันยังเขียนรหัสการทำงานสำหรับงานของฉัน ตัวอย่างของมาร์ตินในหนังสืออ่านได้อย่างชัดเจนราวกับว่าเป็นชุดของย่อหน้าและชัดเจนมาก - แต่ฉันไม่แน่ใจว่า "การอ่านเหมือนชุดของย่อหน้า" เป็นคุณสมบัติที่พึงประสงค์สำหรับรหัสการทำงานที่มี . นำตัวอย่างออกจากไลบรารีมาตรฐาน Haskell : maximumBy …

6
ข้อต่อหลวมในการออกแบบเชิงวัตถุ
ฉันพยายามเรียนรู้ GRASP และฉันพบสิ่งนี้อธิบาย ( ที่หน้า 3 ) เกี่ยวกับการมีเพศสัมพันธ์ต่ำและฉันรู้สึกประหลาดใจมากเมื่อฉันพบสิ่งนี้: พิจารณาวิธีการaddTrackสำหรับAlbumชั้นเรียนสองวิธีที่เป็นไปได้คือ: addTrack( Track t ) และ addTrack( int no, String title, double duration ) วิธีใดลดข้อต่อ อย่างที่สองทำเนื่องจากคลาสที่ใช้คลาส Album ไม่จำเป็นต้องทราบคลาส Track โดยทั่วไปพารามิเตอร์สำหรับเมธอดควรใช้ประเภทฐาน (int, char ... ) และคลาสจากแพ็กเกจ java. * ฉันมักจะพูดพล่ามกับเรื่องนี้; ฉันเชื่อว่าaddTrack(Track t)ดีกว่าaddTrack(int no, String title, double duration)เนื่องจากเหตุผลหลายประการ: มันจะดีกว่าเสมอสำหรับวิธีการที่จะทำให้พารามิเตอร์น้อยลงที่สุดเท่าที่จะเป็นไปได้ (ตาม Clean Code ของลุงบ็อบไม่มีหรืออย่างใดอย่างหนึ่งที่ดีกว่า, 2 ในบางกรณีและ …

6
วิธี HTTP เซสชันหรือฐานข้อมูล
ฉันสับสนเล็กน้อยตามที่ควรจะเป็นในแบบของฉันการทำงานกับการออกแบบตะกร้าสินค้าและฉันต้องการเก็บตะกร้าสินค้าในเซสชันหรือในฐานข้อมูล แต่ไม่แน่ใจว่าวิธีการใดที่จะดีที่สุด ผู้ใช้ไม่ได้เข้าสู่ระบบและเพิ่มสินค้าลงในรถเข็น (ผู้ใช้ที่ไม่ระบุชื่อ) ผู้ใช้เข้าสู่ระบบและเพิ่มสินค้าลงในรถเข็น กรณีแรกทำให้ฉันสับสนมากขึ้นเนื่องจากมีหลายกรณีที่ผู้ใช้เยี่ยมชมเว็บช็อปและเพิ่มผลิตภัณฑ์โดยไม่ต้องลงชื่อเข้าใช้และอาจเป็นไปได้มากว่าเขาอาจจะไม่ได้ดำเนินการเช็คเอาต์ แต่เรายังต้องสร้างตะกร้าสินค้าสำหรับผู้ใช้นี้เพื่อสร้างและบันทึกตะกร้าสินค้าฉันมีสองตัวเลือก เมื่อผู้ใช้เพิ่มผลิตภัณฑ์ให้สร้างรถเข็นในฐานข้อมูลและเชื่อมโยงรถเข็นนี้กับผู้ใช้นี้ทันทีที่เขาล็อกอินย้ายรถเข็นนี้ไปยังผู้ใช้ที่เข้าสู่ระบบ สร้างรถเข็นเพิ่มสินค้าลงในนั้นและบันทึกลงในเซสชันเมื่อผู้ใช้เข้าสู่ระบบสร้างรถเข็นในฐานข้อมูลและเชื่อมโยงผู้ใช้เข้าสู่ระบบด้วยรถเข็นนี้กับผู้ใช้ ฉันรู้ว่าทั้งระบบฐานข้อมูลที่ขับเคลื่อนด้วยระบบรถเข็นและเซสชันตามอาจมีแง่บวกและเชิงลบ แต่ไม่แน่ใจว่าวิธีใดที่ดีที่สุดในการพิจารณาประเด็นต่อไปนี้ scalability มีความยืดหยุ่น ขยาย แอพพลิเคชั่นควรดูแลความเร็ว กำลังมองหาอินพุตในด้านนี้เพื่อตัดสินใจพา ธ

3
วิธีจัดการกับค่าเงินใน PHP และ MySql
ฉันได้รับรหัสมรดกจำนวนมากที่เขียนด้วย PHP บนฐานข้อมูล MySQL สิ่งที่ฉันสังเกตคือแอพพลิเคชั่นใช้doublesสำหรับจัดเก็บและจัดการข้อมูล ตอนนี้ฉันเจอโพสต์มากมายที่กล่าวถึงวิธีdoubleที่ไม่เหมาะสำหรับการดำเนินงานทางการเงินเนื่องจากข้อผิดพลาดในการปัดเศษ อย่างไรก็ตามฉันยังไม่ได้เจอวิธีแก้ปัญหาที่สมบูรณ์เกี่ยวกับวิธีจัดการค่าเงินในโค้ด PHP และเก็บไว้ในฐานข้อมูล MySQL มีวิธีปฏิบัติที่ดีที่สุดเมื่อต้องจัดการกับเงินใน PHP โดยเฉพาะหรือไม่? สิ่งที่ฉันกำลังมองหาคือ: ข้อมูลควรถูกเก็บไว้ในฐานข้อมูลอย่างไร? ประเภทคอลัมน์? ขนาด? ข้อมูลควรจะถูกจัดการอย่างไรในการบวกและการลบแบบปกติ การคูณหรือหาร? เมื่อใดที่ฉันควรปัดเศษค่า การปัดเศษเท่าไหร่ที่ยอมรับได้ถ้ามี? มีความแตกต่างระหว่างการจัดการกับค่าเงินขนาดใหญ่และค่าต่ำหรือไม่? หมายเหตุ: มากง่ายโค้ดตัวอย่างของวิธีการที่ฉันอาจพบค่าเงินในชีวิตประจำวัน (กังวลด้านความปลอดภัยต่าง ๆ ถูกละเลยทำให้เข้าใจง่ายแน่นอนในชีวิตจริงฉันไม่เคยจะใช้รหัสของฉันเช่นนี้.) $a= $_POST['price_in_dollars']; //-->(ex: 25.06) will be read as a string should it be cast to double? $b= $_POST['discount_rate'];//-->(ex: 0.35) value will always be …

9
ใช้วิธีสร้างหรือตั้งค่า?
ฉันกำลังทำงานกับรหัส UI ที่ฉันมีActionชั้นเรียนเช่นนี้ - public class MyAction extends Action { public MyAction() { setText("My Action Text"); setToolTip("My Action Tool tip"); setImage("Some Image"); } } เมื่อคลาส Action นี้ถูกสร้างขึ้นมันค่อนข้างจะสันนิษฐานได้ว่าActionคลาสนั้นจะไม่สามารถปรับแต่งได้ (ในความหมาย - ข้อความคำแนะนำเครื่องมือหรือรูปภาพจะไม่สามารถเปลี่ยนแปลงได้ทุกที่ในรหัส) ตอนนี้เราต้องการเปลี่ยนข้อความการกระทำในบางตำแหน่งในโค้ด ดังนั้นฉันแนะนำเพื่อนร่วมงานของฉันให้ลบข้อความการกระทำที่ฮาร์ดโค้ดออกจากตัวสร้างและยอมรับว่าเป็นอาร์กิวเมนต์เพื่อให้ทุกคนถูกบังคับให้ส่งข้อความการกระทำ บางอย่างเช่นรหัสด้านล่าง - public class MyAction extends Action { public MyAction(String actionText) { setText(actionText); setTooltip("My Action tool tip"); setImage("My …

5
แหล่งข้อมูลที่ดีที่สุดสำหรับการเรียนรู้เกี่ยวกับแอพพลิเคชันพร้อมกันและมัลติเธรดคืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน4 ปีที่แล้ว ล็อคแล้ว คำถามนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ เรียนรู้เพิ่มเติม ฉันรู้ว่าฉันมีช่องว่างความรู้อย่างมากเมื่อพูดถึงแอพพลิเคชั่นแบบมัลติเธรดและการเขียนโปรแกรมพร้อมกัน ฉันได้ครอบคลุมพื้นฐานบางอย่างในอดีต แต่ดูเหมือนว่าส่วนใหญ่จะหายไปจากใจของฉันและมันก็เป็นเรื่องที่ฉันต้องการและจำเป็นต้องมีความรู้มากขึ้น แหล่งข้อมูลที่ดีที่สุดสำหรับการเรียนรู้เกี่ยวกับการสร้างแอปพลิเคชันพร้อมกันคืออะไร ฉันเป็นคนที่มุ่งเน้นการปฏิบัติมากดังนั้นถ้าหนังสือกล่าวว่ามีตัวอย่างที่เป็นรูปธรรมที่ดีกว่า แต่ฉันเปิดให้คำแนะนำ โดยส่วนตัวฉันชอบทำงานใน pseudocode หรือ C ++ และตัวเอียงที่มีต่อการพัฒนาเกมจะดีที่สุด แต่ไม่จำเป็น

3
คุณควรใช้ C # และ F # ด้วยกัน
ฉันรู้ว่าคุณสามารถใช้ C # และ F # ร่วมกันในโครงการเดียวกันได้ แต่ฉันไม่แน่ใจว่ามันเป็นความคิดที่ดีหรือไม่ สำหรับฉันแล้วการผสมสองรูปแบบการเข้ารหัสที่แตกต่างกันมาก (functional vs OOP) อาจทำให้เกิดการขาดการเชื่อมโยงในการออกแบบ ถูกต้องหรือไม่
16 design  f# 

8
คุณสมบัติเทียบกับฟังก์ชั่น [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว บ่อยครั้งที่ฉันได้ยิน PMs (ผู้จัดการโครงการ) พูดคุยเกี่ยวกับคุณสมบัติและฟังก์ชั่น และฉันก็งงมากที่จะแยกแยะพวกเขา บางครั้งฉันคิดว่าคุณสมบัติที่จะเทียบเท่ากับเรื่องราวของผู้ใช้ บางสิ่งเช่น "ในฐานะผู้ใช้บ็อบน่าจะเห็นรายการการชำระเงินของเขา" และพวกเขาเรียกมันว่าฟีเจอร์ บางครั้งมันก็ใหญ่เท่ากับระบบย่อยบางอย่างเช่น "ความสามารถในการส่ง SMS ผ่านเว็บแอปพลิเคชัน" ในทางกลับกันฟังก์ชั่นบางครั้งจะมีขนาดเล็กเท่ากับงาน "ใช้การจัดกลุ่มตัวเลขสำหรับอินพุตหมายเลข" ในขณะที่มีบางกรณีเมื่อมันใหญ่ขึ้นเท่ากับการดำเนินการ CRUD ทั้งหมด คำถามของฉันคือเราจะแยกความแตกต่างของคุณสมบัติจากฟังก์ชั่นได้อย่างไร

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

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

2
การตรวจสอบข้อมูล: ชั้นแยกหรือไม่?
เมื่อฉันมีข้อมูลจำนวนมากที่ต้องได้รับการตรวจสอบความถูกต้องฉันควรสร้างคลาสใหม่เพื่อวัตถุประสงค์ในการตรวจสอบความถูกต้องเพียงอย่างเดียวหรือฉันควรจะใช้การตรวจสอบความถูกต้องด้วยวิธีการหรือไม่ ตัวอย่างเฉพาะของฉันพิจารณาแม่แบบทัวร์นาเมนต์และคลาสของเหตุการณ์ / หมวดหมู่: TournamentและEventซึ่งเป็นตัวอย่างของการแข่งขันกีฬาและแต่ละทัวร์นาเมนต์มีหนึ่งหรือหลายประเภท มีทุกสิ่งที่จะตรวจสอบในชั้นเรียนเหล่านี้: ผู้เล่นควรว่างเปล่า, ไม่ซ้ำกัน, จำนวนการแข่งขันที่ผู้เล่นแต่ละคนควรเล่น, จำนวนผู้เล่นแต่ละคนมีการแข่งขัน, การแข่งขันที่กำหนดไว้ล่วงหน้าและอื่น ๆ กฎที่ซับซ้อน นอกจากนี้ยังมีบางส่วนที่ฉันต้องการตรวจสอบโดยรวมเช่นวิธีที่ชั้นเรียนทำงานร่วมกัน ตัวอย่างเช่นการตรวจสอบความถูกต้องแบบรวมPlayerสามารถทำได้ แต่ถ้าเหตุการณ์มีผู้เล่นคนเดียวกันสองครั้งนั่นเป็นข้อผิดพลาดในการตรวจสอบความถูกต้อง แล้วเรื่องนี้ล่ะ: ฉันลืมเกี่ยวกับการตรวจสอบล่วงหน้าอย่างแน่นอนเมื่อใช้ setters ของคลาสโมเดลของฉันและวิธีการที่คล้ายกันเพื่อเพิ่มข้อมูลและแทนที่จะให้คลาสการตรวจสอบจัดการแทน ดังนั้นเราจะมีบางสิ่งที่คล้ายEventValidatorกับการEventเป็นสมาชิกและvalidate()วิธีการที่ตรวจสอบความถูกต้องของวัตถุทั้งหมดรวมถึงวิธีเอกพจน์เพื่อตรวจสอบกฎของสมาชิกทั้งหมด จากนั้นก่อนที่จะสร้างอินสแตนซ์ของวัตถุที่ตรวจสอบได้ฉันจะดำเนินการตรวจสอบเพื่อป้องกันค่าที่ผิดกฎหมาย การออกแบบของฉันถูกต้องหรือไม่ ฉันควรทำอะไรที่แตกต่างออกไปไหม นอกจากนี้ฉันควรใช้บูลีนวิธีการตรวจสอบกลับ? หรือเพียงแค่โยนข้อยกเว้นถ้าการตรวจสอบล้มเหลว? ดูเหมือนว่าสำหรับฉันตัวเลือกที่ดีที่สุดคือวิธีการส่งคืนบูลีนและส่งข้อยกเว้นเมื่อวัตถุนั้นเป็นอินสแตนซ์ตัวอย่างเช่น: public Event() { EventValidator eventValidator = new EventValidator(this); if (!eventValidator.validate()) { // show error messages with methods defined in the validator throw new …
16 java  design  data  validation 

6
รักษา“ รหัส” ให้ห่างจากนักออกแบบหรือไม่
ฉันสร้างโปรเจ็กต์เล็ก ๆ กับเพื่อนของฉัน แต่เรามักจะเจอกับความผิดพลาดซ้ำแล้วซ้ำอีก ฉันรู้วิธีเขียน PHP, Javascript และทุกอย่าง (ฉันรู้ CSS และ HTML) ดังนั้นฉันจึงสามารถทำงานส่วนใหญ่เมื่อมันมาถึงการสร้างฟังก์ชันการทำงานจริง อย่างไรก็ตามเขาทำไม่ได้ แต่เขาสามารถทำสิ่งที่ฉันแทบจะไม่สามารถทำได้: ออกแบบเว็บไซต์ แต่ทุกครั้งที่เราพบปัญหาเนื่องจากเขาไม่รู้วิธีเขียนโค้ดโดยทั่วไปการพัฒนาของเราช้าลงเล็กน้อย ในขณะนี้เป็นขั้นตอนการทำงานของเรา: เรามาพร้อมกับคุณสมบัติ เขาสร้างการออกแบบ front-end (ที่ควรจะวางไว้อย่างไรมันจะมีลักษณะ ฯลฯ ) เขาส่งแม่แบบที่สมบูรณ์ให้ฉัน (การส่งออก HTML จาก Pinegrow) ฉันค้นหาการเปลี่ยนแปลงที่เขาทำจากนั้นนำไปใช้ในไซต์จริง (ตั้งแต่สองสามสัปดาห์ฉันใช้ CakePHP) เมื่อบางสิ่งบางอย่างไม่ได้ผลตามที่ตั้งใจ (เช่นเช่นมันไม่ได้ผลตามที่เราวางแผนด้วยเหตุผลบางอย่าง) ฉันจะแก้ไขปัญหาด้านข้างแล้วส่งแม่แบบกลับมาให้เขา ล้างและทำซ้ำ กระบวนการนี้อย่างที่ใคร ๆ ก็จินตนาการได้ว่าช้าและไม่มีประสิทธิภาพอย่างเจ็บปวด ดังนั้นคำถามของฉันคือเราจะทำให้กระบวนการนี้ราบรื่นขึ้นได้อย่างไร ฉันได้เห็นสิ่งต่าง ๆ มากมายเกี่ยวกับการที่เราควรใช้ React และใช้ RESTful และไม่ใช้อะไร แต่เราต้องการใช้ CakePHP สำหรับมัน …
15 design  cakephp 

6
ข้อดีของรูปแบบกลยุทธ์
ทำไมจึงเป็นประโยชน์ในการใช้รูปแบบกลยุทธ์หากคุณสามารถเขียนโค้ดของคุณใน if / then cases? ตัวอย่างเช่น: ฉันมีคลาส TaxPayer และหนึ่งในวิธีการของมันจะคำนวณภาษีโดยใช้อัลกอริทึมที่แตกต่างกัน เหตุใดจึงไม่มีกรณีและกรณีและคิดว่าอัลกอริธึมที่จะใช้ในวิธีการนั้นแทนที่จะใช้รูปแบบกลยุทธ์หรือไม่ นอกจากนี้ทำไมคุณไม่สามารถใช้วิธีแยกต่างหากสำหรับแต่ละอัลกอริทึมในคลาส TaxPayer ได้ นอกจากนี้มันหมายความว่าอัลกอริทึมที่จะเปลี่ยนที่รันไทม์?

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