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

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

5
ถ้าอื่น ๆ - ตรรกะของรหัสซ้ำแล้วซ้ำอีก
เจ้านายของฉันให้โครงการฉันด้วยตรรกะเฉพาะ ฉันต้องพัฒนาเว็บเพจที่มีการนำทางผ่านหลาย ๆ กรณีจนกว่าเขา / เธอจะมาถึงผลิตภัณฑ์ นี่คือรูปแบบเส้นทางของการนำทางในไซต์: สำคัญ! ในหน้าผลิตภัณฑ์เนวิเกเตอร์สามารถเลือกตัวกรองที่ต้องการ ถ้า A เขา / เธอต้องผ่าน B (และแน่นอน C) หรือ C และถึงผลิตภัณฑ์ ถ้า B เขา / เธอจะต้องผ่าน C และเข้าถึงผลิตภัณฑ์ ถ้า C เขา / เธอเข้าถึงผลิตภัณฑ์โดยตรง แน่นอนว่าถ้าฉันเริ่มต้นจาก AI กำลังติดตามเส้นทางที่ยาวที่สุดและเมื่อฉันไปถึงผลิตภัณฑ์ฉันมีตัวกรองที่ใช้งานอยู่ 3 ตัว จนถึงตอนนี้ฉันพัฒนาโค้ดต่อไปนี้ซึ่งใช้งานได้ดี if filter_A if filter_B filter_C() .. else .. else filter_C .. else …

3
ต้องใส่รายละเอียดเท่าไหร่ในการทำซ้ำครั้งแรกของโครงการ
ฉันเพิ่งเริ่มโครงการส่วนบุคคลใหม่ (Python) และฉันกำลังเขียนสิ่งที่เป็น "ร่างคร่าว ๆ " ของโปรแกรมจำนวนขั้นต่ำที่ต้องทำในสิ่งที่ฉันต้องการจะทำ ฉันยังไม่ได้ใส่ข้อผิดพลาด / การจัดการข้อยกเว้นอย่างกว้างขวางหรือองค์ประกอบ UI ความงาม (แม้ในกรณีที่ฉันรู้ว่าสิ่งเหล่านี้จะต้องใช้ในท้ายที่สุด) และเอกสารก็เพียงพอที่จะช่วยในอนาคตฉันเห็นสิ่งที่ฉันทำ มันขัดกับหลักการที่กำหนดไว้ในการออกแบบ / การจัดการโครงการเพื่อเริ่มหยาบ ฉันเป็นนักวิทยาศาสตร์ไม่ใช่โปรแกรมเมอร์ดังนั้นไม่ควรเร่งความเร็วในสิ่งเหล่านี้ ดังนั้นคำถามหลักคือมีฉันทามติที่ที่ควรมีจุดมุ่งหมายที่จะอยู่ระหว่างสองขั้วของ: เขียนโค้ดคุณภาพสูงอย่างละเอียดตั้งแต่เริ่มต้นพร้อมการจัดการข้อยกเว้นทั้งหมดและอย่างที่คุณรู้ว่าคุณจะต้องใช้ในที่สุด เขียนแบบร่างคร่าวๆที่ทำงานน้อยที่สุดตั้งแต่เริ่มต้นและเข้าไปเพื่อเติมในส่วนย่อยทั้งหมดในภายหลัง คำถามที่เกี่ยวข้อง: เมื่อไรที่จะเสียสละ "ความเรียบร้อย" ของการออกแบบเพื่อให้โครงการเสร็จ

4
มันมากเกินไปที่จะห่อคอลเลกชันในชั้นเรียนที่เรียบง่ายเท่านั้นเพื่อประโยชน์ในการอ่านที่ดีขึ้น?
ฉันมีแผนที่ดังต่อไปนี้: Map<Double, List<SoundEvent>> soundEventCells = new HashMap<Double, List<SoundEvent>>(); นี้HashMapแมdoubleค่า (ซึ่งเป็นคะแนนในเวลา) เพื่อที่สอดคล้องกันSoundEvent'มือถือ': แต่ละเซลล์สามารถมีจำนวนSoundEvents นั่นเป็นสาเหตุที่มันถูกนำมาใช้เป็นList<SoundEvent>เพราะนั่นคือสิ่งที่มันเป็น เพื่อประโยชน์ในการอ่านรหัสได้ดีขึ้นฉันจึงคิดถึงการใช้คลาสภายในแบบคงที่ที่ง่ายมากเช่น: private static class SoundEventCell { private List<SoundEvent> soundEvents = new ArrayList<SoundEvent>(); public void addEvent(SoundEvent event){ soundEvents.add(event); } public int getSize(){ return soundEvents.size(); } public SoundEvent getEvent(int index){ return soundEvents.get(index); } // .. remove() method unneeded } …

3
เหตุใดอินเทอร์เฟซจึงมีประโยชน์มากกว่าซูเปอร์คลาสในการรับคลัปหลวม
( สำหรับจุดประสงค์ของคำถามนี้เมื่อฉันพูดว่า 'ส่วนต่อประสาน' ฉันหมายถึงโครงสร้างของภาษาinterfaceและไม่ใช่ 'ส่วนต่อประสาน' ในแง่อื่น ๆ ของคำเช่นวิธีสาธารณะที่ชั้นเรียนเสนอโลกภายนอกเพื่อสื่อสารกับและ จัดการมัน. ) การมีเพศสัมพันธ์แบบหลวมสามารถทำได้โดยการมีวัตถุขึ้นอยู่กับสิ่งที่เป็นนามธรรมแทนประเภทคอนกรีต วิธีนี้ช่วยให้การแต่งงานกันแบบหลวม ๆ ด้วยเหตุผลหลักสองประการ: 1-นามธรรมมีแนวโน้มที่จะเปลี่ยนแปลงน้อยกว่าประเภทคอนกรีตซึ่งหมายความว่ารหัสที่ขึ้นต่อกันมีโอกาสน้อยที่จะแตก คอนกรีตที่แตกต่างกัน2ประเภทสามารถใช้งานได้ที่รันไทม์เพราะมันเหมาะสมกับสิ่งที่เป็นนามธรรม คอนกรีตชนิดใหม่สามารถเพิ่มได้ในภายหลังโดยไม่จำเป็นต้องแก้ไขรหัสที่มีอยู่เดิม ตัวอย่างเช่นพิจารณาชั้นCarและสอง subclasses และVolvoMazda หากรหัสของคุณขึ้นอยู่กับ a Carมันสามารถใช้ a Volvoหรือ a Mazdaในระหว่างรันไทม์ ในภายหลังในคลาสย่อยเพิ่มเติมสามารถเพิ่มได้โดยไม่จำเป็นต้องเปลี่ยนรหัสที่ต้องพึ่งพา นอกจากนี้Car- ซึ่งเป็นนามธรรม - มีโอกาสน้อยที่จะมีการเปลี่ยนแปลงกว่าหรือVolvo Mazdaโดยทั่วไปรถยนต์มักจะเหมือนกันมาระยะหนึ่งแล้ว แต่ Volvos และ Mazdas มีแนวโน้มที่จะเปลี่ยนไป I abstractions มีความเสถียรมากกว่าแบบคอนกรีต ทั้งหมดนี้เพื่อแสดงให้เห็นว่าฉันเข้าใจว่าข้อต่อหลวมคืออะไรและจะบรรลุผลได้อย่างไรโดยขึ้นอยู่กับนามธรรมและไม่ใช่ข้อสรุป (ถ้าฉันเขียนบางอย่างไม่ถูกต้องโปรดพูดอย่างนั้น) สิ่งที่ฉันไม่เข้าใจคือ: Abstractions สามารถเป็น superclasses หรืออินเทอร์เฟซ ถ้าเป็นเช่นนั้นเหตุใดอินเทอร์เฟซที่ได้รับการยกย่องโดยเฉพาะสำหรับความสามารถในการยอมให้มีเพศสัมพันธ์แบบหลวม? ฉันไม่เห็นความแตกต่างจากการใช้ซูเปอร์คลาส …

2
ไหนดีกว่า: กลุ่ม getters หรือ 1 เมธอดที่มีพารามิเตอร์สตริงการเลือก?
โดเมนความรู้ของเราเกี่ยวข้องกับคนที่เดินข้ามแผ่นบันทึกความกดดันด้วยเท้าเปล่า เราทำการจดจำรูปภาพซึ่งส่งผลให้วัตถุของคลาส 'เท้า' หากเท้ามนุษย์ถูกจดจำในข้อมูลเซ็นเซอร์ มีการคำนวณหลายอย่างที่ต้องดำเนินการกับข้อมูลของเท้า ตอนนี้ API ตัวไหนจะดีกว่า: class Foot : public RecognizedObject { MaxPressureFrame getMaxPressureFrame(); FootAxis getFootAxis(); AnatomicalZones getAnatomicalZones(); // + similar getters for other calculations // ... } หรือ: class Foot : public RecognizedObject { virtual CalculationBase getCalculation(QString aName); // ... } ตอนนี้มีโปรและคอนแสตนท์จำนวนมากที่ฉันสามารถหาได้ แต่ฉันก็ไม่สามารถตัดสินใจได้ว่าอะไรคือสิ่งที่สำคัญที่สุด หมายเหตุนี่เป็นแอปพลิเคชั่นสำหรับผู้ใช้ไม่ใช่ไลบรารี่ซอฟต์แวร์ที่เราขาย คำแนะนำใด ๆ? โปรบางตัวสำหรับวิธีแรกอาจเป็น: …

4
การออกแบบโปรแกรม Phenotropic
ฉันเพิ่งเจอความคิดที่ Jaron Lanier เรียกว่า "การเขียนโปรแกรมฟีโนโทรปิก" แนวคิดคือการใช้อินเทอร์เฟซ 'พื้นผิว' แทนอินเทอร์เฟซจุดเดียวในโปรแกรมคอมพิวเตอร์ที่ใช้สถิติเพื่อกำจัดข้อผิดพลาดเล็ก ๆ น้อย ๆ ซึ่งโดยทั่วไปแล้วจะทำให้โปรแกรม "คลาสสิค" ผิดพลาดอย่างรุนแรง คำอธิบายสองบรรทัดอยู่ที่นี่: จากข้อมูลของ Jaron ความแตกต่างที่แท้จริงระหว่างความคิดในปัจจุบันของซอฟต์แวร์ซึ่งก็คือการปฏิบัติตามโปรโตคอลและความคิด [เขากำลังพูดถึงการจดจำรูปแบบเกี่ยวข้องกับข้อผิดพลาดที่เราสร้างขึ้น 'และถ้าเราไม่สวม หาวิธีคิดและสร้างซอฟต์แวร์ที่แตกต่างออกไปเราจะไม่เขียนโปรแกรมที่มีขนาดใหญ่กว่าโค้ดประมาณ 10 ล้านบรรทัดไม่ว่าตัวประมวลผลของเราจะรวดเร็วแค่ไหนก็ตาม คำอธิบายอีกเล็กน้อยคือที่นี่ และคำอธิบายได้อีกต่อไปเป็นที่นี่ ดังนั้นคำถามเมื่อมองผ่านความหมายของหุ่นยนต์นเรศวรที่เห็นได้ชัดว่าผู้คนมักจะเลือกวิธีการที่จะออกแบบและเขียน "โปรแกรม phenotropic จริง ๆ " ได้อย่างไร
15 design  program 

2
สร้างหนึ่งเพื่อทิ้งไปกับเอฟเฟกต์ระบบที่สอง
ในอีกด้านหนึ่งมีคำแนะนำที่บอกว่า "สร้างหนึ่งทิ้ง" หลังจากเสร็จสิ้นระบบซอฟต์แวร์และการเห็นผลิตภัณฑ์สุดท้ายเรารู้ว่ามีอะไรผิดพลาดในขั้นตอนการออกแบบและเข้าใจว่าเราควรทำอย่างไร ในทางกลับกันมี "เอฟเฟ็กต์ระบบที่สอง" ซึ่งบอกว่าระบบที่สองในรูปแบบเดียวกันที่ออกแบบมามักจะแย่กว่าระบบแรก มีคุณสมบัติหลายอย่างที่ไม่เหมาะสมในโครงการแรกและถูกผลักเข้าไปในรุ่นที่สองซึ่งมักจะนำไปสู่ความซับซ้อนและการออกแบบมากเกินไป นี่ขัดแย้งกับหลักการเหล่านี้หรือไม่? อะไรคือมุมมองที่ถูกต้องเกี่ยวกับปัญหาและพรมแดนระหว่างสองสิ่งนี้อยู่ที่ไหน ฉันเชื่อว่า "แนวทางปฏิบัติที่ดี" เหล่านี้ได้รับการส่งเสริมเป็นครั้งแรกในหนังสือน้ำเชื้อThe Mythical Man-Monthโดย Fred Brooks ฉันรู้ว่าปัญหาเหล่านี้บางอย่างได้รับการแก้ไขโดยวิธีการ Agile แต่ลึกลงไปปัญหายังคงเป็นหลักการที่ยังคงอยู่ ตัวอย่างเช่นเราจะไม่เปลี่ยนแปลงการออกแบบที่สำคัญ 3 sprint ก่อนที่จะเผยแพร่

5
รหัสของบุคคลที่สามคืออะไร?
ได้รับแรงบันดาลใจจากคำถามนี้การใช้ห้องสมุดบุคคลที่สามใช้เสื้อคลุมเสมอหรือไม่ ฉันต้องการที่จะรู้ว่าสิ่งที่ผู้คนคิดว่าจริง ๆ แล้วเป็นห้องสมุดบุคคลที่สาม ตัวอย่างจาก PHP: หากฉันกำลังสร้างแอปพลิเคชันโดยใช้เฟรมเวิร์กของ Zend ฉันควรปฏิบัติต่อไลบรารีเฟรมเวิร์กของ Zend เป็นรหัสบุคคลที่สามหรือไม่ ตัวอย่างจาก C #: ถ้าฉันสร้างแอปพลิเคชันเดสก์ท็อปฉันควรปฏิบัติต่อคลาส. Net ทั้งหมดเป็นรหัสบุคคลที่สามหรือไม่ ตัวอย่างจาก Java: ฉันควรปฏิบัติต่อไลบรารีทั้งหมดใน JDK เป็นห้องสมุดบุคคลที่สามหรือไม่ บางคนบอกว่าถ้าห้องสมุดมีความเสถียรและจะไม่เปลี่ยนบ่อยๆก็ไม่จำเป็นต้องห่อ อย่างไรก็ตามฉันล้มเหลวในการดูว่าจะทดสอบคลาสที่ขึ้นอยู่กับรหัสบุคคลที่สามโดยไม่ต้องล้อม

6
ฉันจะพัฒนาทักษะของฉันในขณะทำงานในโครงการจริงได้อย่างไรหากไม่มีนักพัฒนาที่มีประสบการณ์มากกว่านี้ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันเป็นผู้นำในการพัฒนา บริษัท ขนาดเล็กที่ทำงานร่วมกับ C # และ ASP.Net ทีมของเรามีขนาดเล็ก 2-3 คนไม่มีประสบการณ์มากในการพัฒนาและออกแบบ ฉันไม่มีโอกาสที่จะเรียนรู้จากนักพัฒนาอาวุโสมากขึ้นไม่มีใครในทีมของฉันที่จะแนะนำฉันและช่วยฉันเลือกวิธีที่ดีที่สุดเนื่องจากฉันดูแลโครงการส่วนใหญ่ด้วยตนเอง ฉันจะพัฒนาทักษะการพัฒนาซอฟต์แวร์ของฉันในขณะทำงานในโครงการจริงได้อย่างไรหากไม่มีนักพัฒนาที่มีประสบการณ์มากกว่านี้

6
วิธีการออกแบบที่ดีเมื่อใช้วิธีการแบบเปรียว
ฉันใช้วิธีการแบบว่องไว (SCRUM) เป็นเวลาประมาณสามปีแล้วและฉันเห็นข้อดีบางประการโดยเฉพาะอย่างยิ่งในความคิดเห็นระยะสั้นในหลาย ๆ ระดับ (จากลูกค้าที่มีการเข้าถึงคุณลักษณะการใช้งานก่อนหน้านี้จากผู้ทดสอบที่สามารถทดสอบคุณลักษณะต่างๆ ในไม่ช้าพวกเขาจะถูกนำไปใช้งานจากนักพัฒนาซอฟต์แวร์รายอื่นที่สามารถให้ข้อเสนอแนะเกี่ยวกับโค้ดใหม่ผ่านการตรวจสอบและอื่น ๆ ) ในทางกลับกันฉันมีสองปัญหาที่เปิดอยู่สิ่งแรกที่ฉันจะพยายามอธิบายในคำถามนี้ ปัญหา: ความยากในการรับการออกแบบที่ดี ฉันพยายามทำการปรับโครงสร้างใหม่ทันทีที่รหัสเกิดความยุ่งเหยิงฉันเขียนการทดสอบหน่วยให้มากที่สุดเท่าที่จะทำได้ (ซึ่งจะช่วยป้องกันข้อผิดพลาดโดยทั่วไปและเมื่อทำการปรับโครงสร้างใหม่โดยเฉพาะ) ในอีกทางหนึ่งการพัฒนาฟีเจอร์ที่ซับซ้อนเพิ่มขึ้นทีละน้อยด้วยความมุ่งมั่นในชีวิตประจำวันและการคิดทบทวนโค้ดอย่างต่อเนื่องเมื่อมันไม่มีโครงสร้างไม่อนุญาตให้ฉันสร้างงานออกแบบที่ดีจริงๆ โมดูลที่ออกแบบมาอย่างดีเท่านั้นที่ฉันสามารถผลิตได้เมื่อไม่นานมานี้โดยใช้แนวทางที่แตกต่าง: ฉันวิเคราะห์ปัญหาสองสามวัน (ที่จริงแล้วฉันมีปัญหาที่เกิดขึ้นในใจของฉันเป็นเวลาสองสามเดือนก่อนที่ฉันจะ ) ร่างการออกแบบที่มีรายละเอียดค่อนข้างมากของชั้นเรียนที่เกี่ยวข้องทั้งหมดและความสัมพันธ์ของพวกเขาอีกสองสามวันและจากนั้นล็อคตัวเองในสำนักงานของฉันและเขียนรหัสทั้งหมดโดยการทำงานโดยไม่หยุดชะงักเป็นเวลาประมาณสามสัปดาห์ ผลที่ได้คือสิ่งที่ดีที่สุดที่ฉันผลิตในขณะที่มีข้อบกพร่องน้อยมากที่ค่อนข้างง่ายต่อการค้นหาและแก้ไขและด้วยการออกแบบที่ชัดเจนมากซึ่งไม่จำเป็นต้องมีการเปลี่ยนแปลงที่เกี่ยวข้องตั้งแต่นั้นมา ดังนั้นถึงตอนนี้ฉันพบว่ามีประสิทธิภาพมากขึ้นเพื่อให้ได้ภาพรวมของสิ่งที่ฉันต้องการทำล่วงหน้ากว่าการเริ่มเขียนโค้ดทีละน้อยด้วยความหวังว่าภาพใหญ่จะปรากฏขึ้นอย่างน่าอัศจรรย์ในกระบวนการ ด้วยความพยายามอย่างที่สุดของฉันการพัฒนาที่เพิ่มขึ้นเพียงเล็กน้อยทำให้ฉันออกแบบแย่ลงเสมอ คำถาม : มีใครมีประสบการณ์คล้ายกันบ้างไหม? ฉันกำลังใช้ SCRUM ในทางที่ผิดหรือฉันควรให้ความสนใจกับสิ่งใดหากฉันต้องการพัฒนาทีละน้อยและยังคงจบลงด้วยซอฟต์แวร์ที่ออกแบบมาอย่างดี? หรือฉันควรกำหนดเวลาเรื่องราวของผู้ใช้ออกแบบก่อนเริ่มการเข้ารหัสจริง นี่ถือว่าเป็นแนวปฏิบัติที่ดีอย่างน้อยที่สุดสำหรับคุณลักษณะที่ซับซ้อนกว่าค่าเฉลี่ยหรือไม่ แก้ไข - หมายเหตุ ฉันตระหนักถึงความจริงที่ว่าการออกแบบที่ดีไม่ใช่สิ่งที่สมบูรณ์และไม่มีคุณค่าในตัวมันเอง แต่ขึ้นอยู่กับบริบทและสิ่งนั้นควรมุ่งที่การออกแบบที่ดีพอสำหรับปัญหาที่เกิดขึ้น ตัวอย่างเช่นฉันไม่สนใจ (มากเกินไป) เกี่ยวกับการออกแบบที่ดีถ้าฉันต้องใช้องค์ประกอบแบบง่ายที่ (1) จะต้องพร้อมให้เร็วที่สุด (2) จะใช้เพียงครั้งเดียว (3) ไม่ใช่ ใช้โดยส่วนอื่นของระบบ (YAGNI) ฉันสนใจเกี่ยวกับการออกแบบที่ดีเมื่อมีการใช้ส่วนประกอบ (1) หลายครั้งและในรุ่นต่างๆที่ต่างกันของผลิตภัณฑ์ …
15 design  agile 

4
ใน MVC หลายมุมมองสามารถมีคอนโทรลเลอร์เดียวกันหรือหนึ่งมุมมองต้องมีคอนโทรลเลอร์ที่ไม่ซ้ำใคร
ฉันมีคำถามในขณะที่ออกแบบสถาปัตยกรรมสำหรับโครงการรอบ MVC (เป็นโครงการ SDK C ++ / Marmalade ฉันไม่ได้ใช้กรอบ MVC ใด ๆ โดยเฉพาะฉันกำลังทำอยู่) ในหลาย ๆ บทความ (เช่นเดียวกับบทความเดิมของ Steve Burbek ) ฉันอ่านแนวคิด "MVC triad" ที่ทำให้ฉันรู้สึกแย่ตั้งแต่ที่ฉันใช้แนวคิดนี้ไป เมื่อฉันอ่านครั้งแรกดูเหมือนว่าแอปพลิเคชันจะถูกสร้างขึ้นรอบ ๆ "MVC triad" - หนึ่งชิ้นสำหรับแต่ละส่วน UI ที่ฉันควรจะ - แต่ฉันพบว่ามันค่อนข้างไม่ยืดหยุ่นและฉันคิดว่านั่นไม่ใช่วิธีที่ MVC ตั้งใจใช้ จากนั้นทำการค้นคว้าเพิ่มเติมเกี่ยวกับปัญหาฉันพบตัวอย่างของการมีเพศสัมพันธ์อย่างแน่นหนาของคอนโทรลเลอร์และมุมมองคือความสัมพันธ์แบบ 1 ต่อ 1 - TextEditView มี TextEditController แต่เมื่อฉันกลับไปที่โครงการของฉันฉันพบว่าอาจเป็นประโยชน์ที่จะมีตัวควบคุมหนึ่ง (โดย 'หน่วยทางลอจิคัล' เช่น AddElementController) และหลายมุมมองสำหรับตัวควบคุมนั้น …

2
ค่าใช้จ่ายวิธีการของวัตถุประสงค์ -c ทำให้วิธีการออกแบบ 'เล็ก ๆ น้อย ๆ หลายวิธี' ไม่สามารถมองเห็นได้หรือไม่?
ฉันมักโปรดปรานโดยใช้วิธีการเล็ก ๆ ตามคำแนะนำของหมู่คนบ๊อบมาร์ตินรหัสสะอาด ฉันได้อ่านยังเพียงพอเกี่ยวกับ internals Objective-C ที่จะมีอย่างน้อยความคิดบางอย่างเกี่ยวกับวิธีการจัดส่งข้อความการทำงานของมัน ( ชุด bbumsเป็นข้อมูลโดยเฉพาะอย่างยิ่งเกี่ยวกับเรื่องนี้) ความกังวลเกี่ยวกับการปรับให้เหมาะสมก่อนวัยอันควรถึงกระนั้นฉันอยากจะรู้ว่าสิ่งที่การทำงานของ Objective-c ทำกับ objc_msgSend หรือไม่นั้นในทางปฏิบัตินั้นมีความหมายเพียงพอสำหรับแนวทาง 'วิธีเล็ก ๆ น้อย ๆ ' การค้นพบเชิงประจักษ์นั้นน่ายินดีเป็นอย่างยิ่ง (บางทีฉันอาจตั้งค่าการทดสอบด้วยตัวเอง) ประสบการณ์จากผู้ที่เขียนโครงการวัตถุประสงค์ขนาดใหญ่ก็คงจะยอดเยี่ยมเช่นกัน การอธิบาย น้ำเสียงทั่วไปของคำถามนั้นมีเจตนา ฉันไม่ได้ถามเกี่ยวกับการปรับแต่งประสิทธิภาพของแอพเฉพาะ (ซึ่งเป็นเหตุผลที่ฉันถามที่นี่มากกว่า SO) แต่เพิ่มเติมเกี่ยวกับว่าลักษณะภาษาของ Objective-C กีดกันวิธีการออกแบบที่แน่นอนหรือไม่ ฉันได้สังเกตว่ารหัสส่วนใหญ่ที่ฉันเห็นจาก Apple และฝ่ายอื่น ๆ (ใน GitHub ฯลฯ ) มีแนวโน้มที่จะใช้วิธีการขนาดใหญ่ (และคลาส) และฉันสงสัยว่านี่เป็นอคติที่ได้พุ่งขึ้นเพราะภาษา ตัวเอง แน่นอนฉันอาจได้อ่านรหัสผิดหรืออาจเป็นวัฒนธรรมมากกว่าปัจจัยทางเทคนิคที่นำไปสู่แนวโน้มถ้ามันมีอยู่ (สำหรับสิ่งที่คุ้มค่าฉันกำลังเขียน Objective-C และฉันใช้วิธีการเล็ก ๆ ) ขอเพิ่มเติม …

2
มันจะดีกว่าถ้ามีการสร้างและแก้ไขการกระทำที่แยกจากกันหรือรวมสร้างและแก้ไขเป็นหนึ่ง?
เรากำลังใช้ ASP.NET MVC 2 กับเลเยอร์ควบคุมและมุมมองการนำเสนอและรูปแบบซึ่งประกอบด้วยชั้นตรรกะทางธุรกิจ, ชั้นการเข้าถึงข้อมูล ในชั้นธุรกิจขึ้นไปเพื่อวัตถุประสงค์ส่วนใหญ่การแก้ไขดูเหมือนว่าจะสามารถแสดงทั้งการสร้างวัตถุและการแก้ไขวัตถุ สิ่งนี้สอดคล้องกันกับรูปแบบการออกแบบพื้นที่เก็บข้อมูลของเราซึ่งกำหนดวิธีการ "บันทึก" เราสามารถเช็คอินกระบวนงานที่เก็บไว้ถ้า ID เป็น 0 และสร้างวัตถุใหม่ถ้าเป็น 0 มิฉะนั้นเราสามารถอัปเดตวัตถุที่มีอยู่ได้เนื่องจากรหัสหมวดหมู่ควรตรงกับหนึ่ง ประเด็นหลักของการสนทนาคือถ้าเหมาะสมที่สุดที่จะแยกการแก้ไขซึ่งรวมถึงการสร้างเป็นส่วนต่าง ๆ ของการสร้างและแก้ไขนอกเหนือจากเลเยอร์ DAL ตัวอย่างที่ชัดเจนสามารถแสดงเป็นเส้นทาง: สร้าง - http: // someurl / somearea / edit / 0 แก้ไข - http: // someurl / somearea / edit / 254 เมื่อเทียบกับ สร้าง - http: // someurl / …

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

4
ฉันจะได้งานศิลปะฟรีสำหรับซอฟต์แวร์ฟรีของฉันได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา โครงการซอฟต์แวร์ฟรีจำนวนมากมีงานศิลปะที่สวยงามเป็นพิเศษโดยเฉพาะเว็บไซต์ที่ฉันสงสัยว่าผู้เขียนโค้ดพบศิลปินของพวกเขาได้อย่างไร มีสถานที่ที่จะขอสิ่งนี้นอกเหนือจากคณะกรรมการวิชาเอกศิลปะท้องถิ่นหรือไม่? ฉันคิดว่า IRC แต่ฉันกลัวว่าอาจรบกวนฐานผู้ใช้ขนาดเล็กและบ่อยครั้งโดยถามว่ามี

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