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

แม่แบบสำหรับการประกาศประเภทของวัตถุ

5
คุณจะใช้ struct เมื่อใดแทนคลาส? [ปิด]
อะไรคือกฎของหัวแม่มือสำหรับเมื่อคุณใช้ structs กับคลาส? ฉันกำลังคิดถึงนิยาม C # ของคำศัพท์เหล่านั้น แต่หากภาษาของคุณมีแนวคิดที่คล้ายกันฉันต้องการฟังความคิดเห็นของคุณเช่นกัน ฉันมักจะใช้คลาสสำหรับเกือบทุกอย่างและใช้ structs เฉพาะเมื่อสิ่งที่ง่ายมากและควรเป็นประเภทค่าเช่น PhoneNumber หรืออะไรทำนองนั้น แต่ดูเหมือนว่าเป็นการใช้งานที่ค่อนข้างน้อยและฉันหวังว่าจะมีกรณีการใช้งานที่น่าสนใจมากกว่านี้
174 c#  design  class  struct 

10
อย่าใช้“ คงที่” ใน C # หรือ
ฉันส่งใบสมัครที่ฉันเขียนถึงสถาปนิกคนอื่นเพื่อตรวจสอบรหัส หนึ่งในนั้นเกือบจะเขียนฉันทันทีและพูดว่า "อย่าใช้" คงที่ "คุณไม่สามารถเขียนการทดสอบอัตโนมัติด้วยคลาสและวิธีการคงที่" คงที่ "คือการหลีกเลี่ยง" ฉันตรวจสอบและ 1/4 ของชั้นเรียนของฉันถูกทำเครื่องหมายว่า "คงที่" ฉันใช้สแตติกเมื่อฉันจะไม่สร้างอินสแตนซ์ของคลาสเนื่องจากคลาสเป็นคลาสโกลบอลเดี่ยวที่ใช้ตลอดโค้ด เขาพูดถึงบางสิ่งที่เกี่ยวข้องกับการเยาะเย้ยเทคนิค IOC / DI ที่ไม่สามารถใช้กับรหัสคงที่ได้ เขาบอกว่ามันน่าเสียดายที่ห้องสมุดบุคคลที่สามเป็นแบบคงที่เนื่องจากไม่สามารถตรวจสอบได้ สถาปนิกรายนี้ถูกต้องหรือไม่? ปรับปรุง: นี่คือตัวอย่าง: APIManager - คลาสนี้เก็บพจนานุกรมของ API ของบุคคลที่สามที่ฉันกำลังโทรหาพร้อมกับเวลาที่อนุญาตต่อไป มันบังคับใช้ข้อ จำกัด การใช้ API ที่บุคคลที่ 3 จำนวนมากมีอยู่ในเงื่อนไขการให้บริการ ฉันใช้มันทุกที่ที่ฉันกำลังเรียกบริการของบุคคลที่สามโดยเรียก Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); ก่อนโทรออก ทุกอย่างในที่นี้เป็นเธรดที่ปลอดภัยและใช้งานได้ดีกับ TPL ใน C #

13
วัตถุใน OOP จำเป็นต้องแสดงถึงเอนทิตีหรือไม่?
วัตถุต้องแสดงถึงนิติบุคคลหรือไม่ โดยนิติบุคคลที่ผมหมายถึงสิ่งที่ชอบProduct, Motorเป็นParkingLotฯลฯ ทางกายภาพหรือแม้กระทั่งวัตถุแนวคิดที่ชัดเจนไม่ใช่ทางกายภาพ - บางสิ่งบางอย่างที่กำหนดไว้อย่างดีกับข้อมูลหลักบางอย่างชัดเจนที่อยู่ในวัตถุและบางฟังก์ชั่น / วิธีการ ที่ทำงานอย่างชัดเจนกับข้อมูลหลัก ตัวอย่างเช่นฉันสามารถมีวัตถุของ a Demon, นิติบุคคลในตัวเองหนึ่งในจินตนาการและอาจไม่ใช่ทางกายภาพ แต่ยังคงเป็นนิติบุคคล วัตถุสามารถเป็นเพียงชุดของวิธีการชุดของขั้นตอนทั่วไปที่เชื่อมโยงกับเป้าหมายทั่วไปได้หรือไม่ ตัวอย่าง: สามารถเรียกคลาสได้MotorOperationsหรือMotorActionsในกรณีที่ไม่มีเอนทิตี แต่วิธีการภายในคลาสสามารถทำสิ่งต่าง ๆ ได้ getMotorDataFromHTMLForm () getMotorManufacturers () selectMotorFromUserRequirements ($ ต้องการ) canMotorCanHandleOperatingConditions ($ เงื่อนไข) computePowerConsumptionForMotor ($ ID) โดยทั่วไปคลาสจะถูกกำหนดให้เป็นศูนย์กลางข้อมูลของการดำเนินการกับออบเจ็กต์ + กับข้อมูล ดังนั้นสำหรับ a Motorอาจมีตัวแปรยนต์บางอย่างที่เกี่ยวข้องกับข้อมูลจำเพาะของมอเตอร์และอาจมีการดำเนินการที่รวมข้อมูลเหล่านั้นเพื่อสร้างบางสิ่งบางอย่าง ในกรณีของฉันมันเหมือนกับว่าฉันมีคลาสที่มีการดำเนินงานเกี่ยวกับ data + data ที่ส่งผ่านคลาสไม่มี data centric สำหรับ "Motor Operations" นอกเหนือจากข้อมูลชั่วคราวที่ส่งผ่านคลาส …

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

11
เหตุใดจึงเป็นการดีที่จะแยกโปรแกรมออกเป็นหลายคลาส [ปิด]
ฉันยังเป็นนักเรียนในโรงเรียนมัธยม (เข้าเกรด 10) และฉันยังไม่ได้เรียนหลักสูตรคอมพิวเตอร์จริงในโรงเรียน ทุกสิ่งที่ฉันทำจนถึงตอนนี้ก็คือผ่านหนังสือ หนังสือเหล่านั้นสอนฉันเกี่ยวกับแนวคิดเช่นการสืบทอด แต่การแบ่งโปรแกรมออกเป็นหลาย ๆ ชั้นช่วยได้อย่างไร หนังสือไม่เคยบอกฉัน ฉันถามสิ่งนี้เป็นหลักเพราะโครงการล่าสุด มันเป็นวิดีโอเกมอาร์เคดเหมือนกับเกม Flash ที่บางคนพูด (แม้ว่าฉันไม่รู้ว่าเกม Flashคืออะไร) มันเป็นเพียงชั้นเดียวเท่านั้น มันใช้งานได้ดีอย่างสมบูรณ์แบบ (ล่าช้าเล็กน้อยเป็นครั้งคราว) ด้วยชั้นเรียนเพียงชั้นเดียว ดังนั้นฉันแค่ถามว่าการแยกมันออกเป็นหลายคลาสจะช่วยได้อย่างไร โครงการนี้อยู่ใน Java และฉันเป็นคนเดียวที่ทำงานกับมันสำหรับการบันทึก

8
ฉันจะพิสูจน์หรือหักล้าง“ วัตถุพระเจ้า” ผิดได้อย่างไร?
สรุปปัญหา: เรื่องสั้นสั้นฉันได้รับรหัสฐานและทีมพัฒนาที่ฉันไม่ได้รับอนุญาตให้แทนที่และการใช้ God Objects เป็นปัญหาใหญ่ ก้าวไปข้างหน้าฉันต้องการให้เราทำปัจจัยอีกครั้ง แต่ฉันได้รับการผลักดันกลับจากทีมที่ต้องการทำทุกอย่างกับ God Objects "เพราะมันง่ายกว่า" และนี่หมายความว่าฉันจะไม่ได้รับอนุญาตให้ทำปัจจัยอีกครั้ง ฉันผลักดันการอ้างอิงประสบการณ์การพัฒนาเป็นเวลาหลายปีว่าฉันเป็นเจ้านายคนใหม่ที่ได้รับการว่าจ้างให้รู้จักสิ่งเหล่านี้และอื่น ๆ บริษัท ภายนอกในต่างประเทศทำบัญชีตัวแทนฝ่ายขายและตอนนี้อยู่ในระดับผู้บริหารและการประชุมของฉัน เป็นวันพรุ่งนี้และฉันต้องการที่จะใช้กระสุนทางเทคนิคจำนวนมากเพื่อสนับสนุนการปฏิบัติที่ดีที่สุดเพราะฉันรู้สึกว่ามันจะถูกลงในระยะยาว (และโดยส่วนตัวฉันรู้สึกว่าเป็นสิ่งที่บุคคลที่สามเป็นห่วง) สำหรับ บริษัท ปัญหาของฉันมาจากระดับเทคนิคฉันรู้ดีในระยะยาว แต่ฉันมีปัญหากับระยะสั้นพิเศษและ 6 เดือนในขณะที่บางสิ่งที่ฉัน "รู้" ฉันไม่สามารถพิสูจน์ได้ด้วยการอ้างอิงและแหล่งอ้างอิงภายนอก ของคนคนหนึ่ง (Robert C. Martin หรือลุงลุง Bob) นั่นคือสิ่งที่ฉันถูกขอให้ทำเพราะฉันได้รับการบอกว่ามีข้อมูลจากบุคคลหนึ่งและมีเพียงคนเดียวเท่านั้น (Robert C Martin) ไม่ดีพอที่จะโต้แย้ง . คำถาม: มีแหล่งข้อมูลอะไรบ้างที่ฉันสามารถอ้างอิงได้โดยตรง (ชื่อเรื่อง, ปีที่พิมพ์, หมายเลขหน้า, คำพูด) โดยผู้เชี่ยวชาญที่รู้จักกันดีในสาขาที่กล่าวอย่างชัดเจนว่าการใช้ "พระเจ้า" วัตถุ / คลาส / ระบบนี้ไม่ดี …

5
เมื่อใดที่จะใช้คลาส vs ดั้งเดิมใน Java?
ฉันเห็นว่า Java มีบูลีน (คลาส) และบูลีน (ดั้งเดิม) ในทำนองเดียวกันมีจำนวนเต็ม (คลาส) เทียบกับ int (ดั้งเดิม) อะไรคือวิธีปฏิบัติที่ดีที่สุดในการใช้เวอร์ชันดั้งเดิมกับคลาส? โดยทั่วไปฉันควรใช้รุ่นคลาสอยู่เสมอเว้นแต่ฉันจะมีเหตุผลที่เฉพาะเจาะจง วิธีที่นิยมใช้กันมากที่สุดคืออะไร?
54 java  class  usage 

5
ฉันควรใส่ฟังก์ชั่นที่ไม่เกี่ยวข้องกับคลาสได้ที่ไหน
ฉันกำลังทำงานในโครงการ C ++ ที่ฉันมีฟังก์ชั่นทางคณิตศาสตร์มากมายซึ่งตอนแรกฉันเขียนเพื่อใช้เป็นส่วนหนึ่งของชั้นเรียน ถึงแม้ว่าฉันจะเขียนโค้ดเพิ่มเติม แต่ฉันก็ตระหนักว่าฉันต้องการฟังก์ชันคณิตศาสตร์เหล่านี้ทุกที่ สถานที่ที่ดีที่สุดที่จะนำพวกเขาอยู่ที่ไหน สมมติว่าฉันมีสิ่งนี้: class A{ public: int math_function1(int); ... } และเมื่อฉันเขียนชั้นเรียนอื่นฉันไม่สามารถ (หรืออย่างน้อยฉันไม่รู้วิธี) ที่ใช้math_function1ในชั้นเรียนอื่นนั้น นอกจากนี้ฉันได้ตระหนักถึงฟังก์ชั่นบางอย่างที่ไม่เกี่ยวข้องกับคลาส A พวกเขาดูเหมือนจะเป็นจุดเริ่มต้น แต่ตอนนี้ฉันสามารถเห็นได้ว่าพวกเขาเป็นเพียงฟังก์ชันทางคณิตศาสตร์ การปฏิบัติที่ดีในสถานการณ์นี้คืออะไร? ตอนนี้ฉันได้คัดลอกพวกเขาไปสู่คลาสใหม่ซึ่งฉันแน่ใจว่าเป็นการปฏิบัติที่แย่ที่สุด
47 c++  functions  class 

4
ทำไมและเมื่อใดฉันจึงควรทำให้คลาส 'คงที่'? วัตถุประสงค์ของคำหลัก 'คงที่' ในชั้นเรียนคืออะไร?
staticคำหลักในเป็นสมาชิกในหลายภาษาหมายความว่าคุณไม่ควรสร้างตัวอย่างของการเรียนที่จะสามารถที่จะมีการเข้าถึงของสมาชิกที่ แต่ผมไม่เห็นเหตุผลใด ๆ staticที่จะทำให้ทั้งชั้น ทำไมและเมื่อไรฉันจึงควรเข้าเรียนstatic? ฉันได้รับประโยชน์อะไรบ้างจากการเข้าเรียนstatic? ฉันหมายถึงหลังจากประกาศคลาสคงที่หนึ่งควรยังคงประกาศสมาชิกทั้งหมดที่เขา / เธอต้องการที่จะเข้าถึงได้โดยไม่ต้องเริ่มต้นเช่นเดียวกับคงที่เช่นกัน ซึ่งหมายความว่าตัวอย่างเช่นMathคลาสสามารถประกาศปกติ (ไม่ใช่สแตติก) โดยไม่ส่งผลกระทบต่อวิธีที่นักพัฒนาโค้ด กล่าวอีกนัยหนึ่งการทำให้คลาสคงที่หรือปกตินั้นเป็นประเภทที่โปร่งใสสำหรับนักพัฒนา

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

4
วิธีหลีกเลี่ยง“ ผู้จัดการ” ในรหัสของฉัน
คำถามนี้ถูกโยกย้ายจาก Code Exchange Stack Stack เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 6 ปีที่แล้ว ขณะนี้ฉันกำลังออกแบบระบบ Entityของฉันใหม่สำหรับ C ++ และฉันมีผู้จัดการจำนวนมาก ในการออกแบบของฉันฉันมีชั้นเรียนเหล่านี้เพื่อผูกห้องสมุดของฉันเข้าด้วยกัน ฉันได้ยินสิ่งเลวร้ายมากมายเมื่อพูดถึงคลาส "ผู้จัดการ" บางทีฉันอาจไม่ได้ตั้งชื่อชั้นเรียนของฉันอย่างเหมาะสม อย่างไรก็ตามฉันไม่รู้ว่าจะตั้งชื่อพวกเขาอย่างไร ผู้จัดการส่วนใหญ่ในห้องสมุดของฉันประกอบด้วยชั้นเรียนเหล่านี้ (แม้ว่ามันจะแตกต่างกันเล็กน้อย): คอนเทนเนอร์ - คอนเทนเนอร์สำหรับวัตถุในตัวจัดการ คุณสมบัติ - คุณลักษณะสำหรับวัตถุในผู้จัดการ ในการออกแบบใหม่สำหรับห้องสมุดของฉันฉันมีชั้นเรียนเฉพาะเหล่านี้เพื่อผูกห้องสมุดของฉันเข้าด้วยกัน ComponentManager - จัดการส่วนประกอบใน Entity System ComponentContainer ComponentAttributes ฉาก * - อ้างอิงถึงฉาก (ดูด้านล่าง) SystemManager - จัดการระบบในระบบองค์กร SystemContainer ฉาก * …

1
แนะนำวิธีปฏิบัติที่ดีที่สุดในการสร้างคลาสคงที่
คำถามนี้ถูกโยกย้ายจาก Code Exchange Stack Stack เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 5 ปีที่ผ่านมา มีการถกเถียงกันระหว่างสมาชิกในทีมของฉันเกี่ยวกับการประกาศค่าคงที่ เรากำลังเคลื่อนย้ายตัวแปรคงที่ไปยังคลาสที่แยกจากกันดังนี้ public class Constants { public const string StateId = "ST"; public const string CountryId = "CI"; } สมาชิกในทีมของฉันสองสามคนแนะนำว่าเราประกาศชั้นเรียนเป็นแบบปิดผนึกเพื่อหลีกเลี่ยงตัวเลือกการเอาชนะและมีคนแนะนำว่าเราทำเครื่องหมายว่าเป็นแบบคงที่เพื่อหลีกเลี่ยงการสร้างชั้นเรียนแบบคงที่ อย่างไรก็ตามฉันต้องการให้มันเป็นแบบปิดผนึกด้วยตัวสร้างแบบคงที่เนื่องจากมันจะช่วยให้เราสามารถเริ่มต้นตัวแปรแบบอ่านอย่างเดียวในความต้องการในอนาคต กรุณาให้คำแนะนำกับเรา
25 c#  class 

5
คลาสควรรู้เกี่ยวกับคลาสย่อยหรือไม่?
คลาสควรรู้เกี่ยวกับคลาสย่อยหรือไม่? คลาสควรทำสิ่งที่เฉพาะเจาะจงสำหรับคลาสย่อยที่กำหนดเช่น? สัญชาตญาณของฉันบอกฉันว่ามันเป็นการออกแบบที่ไม่ดีดูเหมือนว่าจะมีรูปแบบต่อต้านบางอย่าง

5
ภาษาที่ใช้งานได้จริงจัดการกับส่วนย่อยได้อย่างไร
ฉันมาจากพื้นหลังเชิงวัตถุที่ฉันได้เรียนรู้ว่าชั้นเรียนหรืออย่างน้อยสามารถใช้เพื่อสร้างเลเยอร์ของสิ่งที่เป็นนามธรรมซึ่งช่วยให้สามารถรีไซเคิลรหัสได้อย่างง่ายดายซึ่งสามารถนำไปใช้เพื่อสร้างวัตถุหรือใช้ในการสืบทอด ตัวอย่างเช่นฉันสามารถมีคลาสสัตว์และจากนั้นแมวและสุนัขที่สืบทอดและเช่นนั้นทั้งหมดสืบทอดลักษณะเดียวกันจำนวนมากและจากชั้นย่อยเหล่านั้นฉันสามารถสร้างวัตถุที่สามารถระบุสายพันธุ์ของสัตว์หรือแม้แต่ชื่อ ของมัน หรือฉันสามารถใช้คลาสเพื่อระบุหลายอินสแตนซ์ของรหัสเดียวกันที่จัดการหรือมีสิ่งต่าง ๆ เล็กน้อย เช่นโหนดใน search-tree หรือการเชื่อมต่อฐานข้อมูลที่แตกต่างกันหลายอย่างและสิ่งใดที่ไม่ ฉันเพิ่งจะเข้าสู่การเขียนโปรแกรมเพื่อการทำงานดังนั้นฉันจึงเริ่มสงสัยว่า: ภาษาที่ใช้งานได้จริงจะจัดการกับสิ่งเหล่านี้ได้อย่างไร นั่นคือภาษาที่ไม่มีแนวคิดของคลาสและวัตถุ

9
ทำไม Java ไม่อนุญาตให้มีคำจำกัดความของฟังก์ชั่นอยู่นอกคลาส?
ซึ่งแตกต่างจาก C ++ ใน Java เราไม่สามารถมีเพียงการประกาศฟังก์ชั่นในชั้นเรียนและคำนิยามนอกชั้นเรียน ทำไมถึงเป็นเช่นนั้น? เป็นการเน้นว่าไฟล์เดียวใน Java ควรมีเพียงหนึ่งคลาสและไม่มีอะไรอีกหรือไม่
22 java  class  functions 

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