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

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

6
MongoDB เป็นตัวเลือกที่ถูกต้องในกรณีของฉันหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันจะสร้างโปรเจ็กต์แรกของฉันใน Rails ซึ่งประกอบด้วยในเว็บแอปที่ประกอบด้วย 3 ส่วนหลัก: ส่วนคงที่ที่ไม่มีการใช้ฐานข้อมูล ส่วนการลงทะเบียนผู้ใช้ซึ่งจะต้องใช้ฐานข้อมูลและฉันสามารถใช้ MySQL ได้เนื่องจากแถวของผู้ใช้แต่ละคนจะมีเขตข้อมูลเดียวกัน "แอป" ที่ผู้ใช้จะสามารถสร้างจัดการแก้ไข ... รายการในคอลเล็กชันและแบ่งปันกับผู้ใช้รายอื่น จะมีหลายประเภทรายการและแต่ละประเภทจะมีตัวเลือกต่างกันเช่นฉันอาจมีรายการ "วิดีโอ" พร้อมตัวเลือกต่อไปนี้: รหัส user_id collection_id หัวข้อ แพลตฟอร์ม (ถ้าฝัง) URL (ถ้าฝัง) ชื่อไฟล์ (หากโฮสต์บนแอปของฉัน) ขนาดไฟล์ (id โฮสต์บนแอปของฉัน) และรายการ "แผนที่": รหัส user_id collection_id หัวข้อ แพลตฟอร์ม (แผนที่ google, แผนที่ …

3
วิธีทำให้คลาส stateful ที่ซับซ้อนและการทดสอบของพวกเขาง่ายขึ้น?
ฉันอยู่ในโครงการระบบกระจายเขียนด้วยภาษาจาวาที่เรามีบางคลาสที่สอดคล้องกับวัตถุในโลกธุรกิจจริงที่ซับซ้อนมาก วัตถุเหล่านี้มีวิธีการมากมายที่สอดคล้องกับการกระทำที่ผู้ใช้ (หรือตัวแทนอื่น ๆ ) อาจนำไปใช้กับวัตถุนั้น เป็นผลให้คลาสเหล่านี้ซับซ้อนมาก วิธีการสถาปัตยกรรมทั่วไปของระบบนำไปสู่พฤติกรรมจำนวนมากที่เน้นไปที่คลาสไม่กี่คลาสและสถานการณ์การโต้ตอบที่เป็นไปได้มากมาย ตัวอย่างและเพื่อให้สิ่งต่าง ๆ ง่ายและชัดเจนสมมติว่าหุ่นยนต์และรถยนต์เป็นชั้นเรียนในโครงการของฉัน ดังนั้นในคลาส Robot ฉันจะมีวิธีการมากมายในรูปแบบต่อไปนี้: นอน(); isSleepAvaliable (); ตื่น (); isAwakeAvaliable (); เดิน (Direction); isWalkAvaliable (); ยิง (Direction); isShootAvaliable (); turnOnAlert (); isTurnOnAlertAvailable (); turnOffAlert (); isTurnOffAlertAvailable (); ชาร์จ (); isRechargeAvailable (); ไฟดับ(); isPowerOffAvailable (); stepInCar (รถยนต์); isStepInCarAvailable (); stepOutCar (รถยนต์); …

7
ฉันจะบันทึกงานที่ผ่านมาของคนอื่นได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว เราอยู่ในสถานการณ์ที่ไม่ดีที่มีเอกสารน้อยมากเกี่ยวกับการปรับแต่งคนงานที่ผ่านมาของเราทำกับระบบที่สำคัญทางธุรกิจ มีการเปลี่ยนแปลงมากมายใน Crystal Reports เอนทิตีฐานข้อมูลและไฟล์การตั้งค่า / การเขียนโปรแกรมกรรมสิทธิ์สำหรับซอฟต์แวร์ ERP ของเรา เอกสารปัจจุบันโดยทั่วไปจะอ่านบางสิ่งเช่นนี้ โปรแกรมนี้ทำงานก่อนออกใบแจ้งหนี้ ข้อบกพร่องที่รู้จัก: ไม่มี เรียกใช้โปรแกรมนี้หลังจากติดตั้งซอฟต์แวร์ X เปลี่ยนฟิลด์ต่อไปนี้ในรายงานนี้: (โดยไม่มีคำอธิบายว่าอย่างไรหรือทำไม) ร้านไอทีของเรามีขนาดเล็กและในกรณีของซอฟต์แวร์ ERP งานส่วนใหญ่ถูกทิ้งให้กับคนคนเดียว แผนกไอทีและการบัญชีรู้บิตและชิ้นส่วน (บางครั้งก็ค่อนข้างมีประโยชน์) แต่ก็ยังไม่เพียงพอ ปัญหาอีกประการคือแผนกบัญชีของเราคิดว่าเรามีเอกสารที่ดี เป็นความจริงที่เราเก็บบันทึกจำนวนมากเกี่ยวกับสิ่งที่ผิดพลาดแต่มีคำอธิบายน้อยมากที่ทำ (ถ้ามี) เพื่อแก้ไขปัญหาเหล่านี้ เรามีเอกสารหลายร้อยข้อที่อธิบายข้อบกพร่อง แต่เอกสารที่อธิบายการเปลี่ยนแปลง (ดังที่แสดงด้านบน) เกือบไร้ประโยชน์ ฉันจะบันทึกเกี่ยวกับการเปลี่ยนแปลงในอดีตได้อย่างไรเมื่อฉันไม่รู้ว่าทำอะไรทั้งหมด ฉันสามารถเริ่มต้นด้วยการบันทึกสิ่งที่เราเปลี่ยนแปลง: ไฟล์, ตารางฐานข้อมูลและสิ่งที่เราต้องมีเพื่อให้ระบบทำงานได้ ฉันยังสามารถเอกสารสิ่งที่เราทำ ; เมื่อมีการเรียกใช้รายงานเหตุใดจึงมีคนบอกให้ใช้รายงาน / โปรแกรม X แต่เมื่อหนึ่งในสิ่งที่กำหนดเองเหล่านี้มีปัญหาฉันมักจะกลับไปที่จตุรัสหนึ่ง ฉันจะบันทึกสิ่งนี้ให้ฉันและคนอื่นได้อย่างไร

7
กำลังตรวจสอบว่าเมธอดส่งคืน false หรือไม่: กำหนดผลลัพธ์ให้กับตัวแปรชั่วคราวหรือทำให้การเรียกใช้เมธอดตรงตามเงื่อนไขหรือไม่
เป็นวิธีปฏิบัติที่ดีในการเรียกใช้เมธอดที่ส่งคืนค่าจริงหรือเท็จในคำสั่ง if หรือไม่? บางสิ่งเช่นนี้ private void VerifyAccount() { if (!ValidateCredentials(txtUser.Text, txtPassword.Text)) { MessageBox.Show("Invalid user name or password"); } } private bool ValidateCredentials(string userName, string password) { string existingPassword = GetUserPassword(userName); if (existingPassword == null) return false; var hasher = new Hasher { SaltSize = 16 }; bool passwordsMatch = hasher.CompareStringToHash(password, …

3
คำศัพท์ที่เหมาะสมเมื่อช่วยโปรแกรมเมอร์มือใหม่
ฉันพบว่าตัวเองช่วยเหลือโปรแกรมเมอร์มือใหม่ค่อนข้างบ่อย อธิบายสาเหตุที่รหัสของพวกเขาไม่ทำงานเมื่อพวกเขาถามแนะนำวิธีแก้ปัญหาและสิ่งที่คล้ายกัน คนที่ฉันกำลังช่วยมีการศึกษาอย่างเป็นทางการในการเขียนโปรแกรมจากโมดูลระดับปริญญาปีแรกใน Java แต่ฉันรู้สึกว่าฉันไม่สามารถสื่อสารกับพวกเขาได้เป็นอย่างดี ตัวอย่างเช่น: บางคนอาจเขียนฟังก์ชั่น แต่ไม่เข้าใจว่าทำไมมันถึงไม่ถูกเรียกใช้งานโดยไม่รู้ว่าพวกเขาลืมเรียกมัน ถ้าฉันใช้วลีที่ชอบ"(make a) call (to) the function/it"และ"pass it the.."ฉันได้รับรูปลักษณ์ที่ว่างเปล่า กระบวนการปกติของฉันก็คือการหาสถานที่ในรหัสของพวกเขาที่พวกเขาเรียกฟังก์ชั่นจากภาษาและบอกพวกเขาว่าพวกเขาสามารถเรียกฟังก์ชั่นของตัวเองในลักษณะเดียวกับที่พวกเขาเรียกว่าฟังก์ชั่นอื่น บางครั้งแม้แต่ที่ดูว่างเปล่า มีคำศัพท์อื่น ๆ ที่เหมาะกับการช่วยเหลือโปรแกรมเมอร์ดีกว่าหรือไม่? หรือนี่ไม่ใช่ปัญหาของการสื่อสาร?

4
การใช้โอเปอร์เรเตอร์ของ PHP ด้วยอาร์กิวเมนต์เพียงสองตัว
ฉันเพิ่งตรวจสอบบางส่วนของรหัสของฉันและสังเกตเห็นว่าในแบบที่ขาดสติฉันจะออกจากโครงสร้างดังต่อไปนี้: $guid = empty($subscription->guid) ? : $subscription->guid; ตอนนี้สิ่งนี้ไม่ได้ทำในสิ่งที่ควรจะเป็นและผิดแต่เนื่องจากคุณสมบัตินั้นถูกตั้งค่าเสมอตอนนี้มันทำงานได้ดีและไม่มีข้อผิดพลาดทางไวยากรณ์ตั้งแต่ 5.3 เนื่องจากการเปลี่ยนแปลงต่อไปนี้ : ตั้งแต่ PHP 5.3 เป็นไปได้ที่จะปล่อยให้ผู้ให้บริการรายกลางอยู่ Expression expr1?: expr3 ส่งคืน expr1 ถ้า expr1 หาค่าเป็น TRUE และ expr3 เป็นอย่างอื่น ฉันไม่ได้ตระหนักถึงการเปลี่ยนแปลงนี้และตอนนี้ฉันอยากรู้ว่าฉันควรจะใช้มันหรือไม่ นี่คือสิ่งที่ฉันขาดไปอย่างมากจากภาษาเช่นทับทิมที่คุณสามารถทำได้เช่นa = b || cเพื่อให้ได้บูลีน 'ของจริง' bหรือcมากกว่า อย่างไรก็ตามไวยากรณ์ที่พวกเขาเลือกสำหรับผู้ประกอบการที่ดูเหมือนจะเป็นเรื่องง่ายสำหรับฉัน ฉันควรจะใช้สิ่งนี้ในรหัสการผลิตหรือไม่? แน่นอนว่ามันทำให้ฉันประหลาดใจเมื่อฉันเห็นมันโดยบังเอิญ

5
การมีไฟล์ส่วนหัว C ++ ที่ไม่มีส่วนขยายนั้นเป็นแนวปฏิบัติที่ดีหรือไม่?
ฉันมีข้อโต้แย้งกับเพื่อนร่วมงานของฉันเกี่ยวกับแนวทาง C ++ ที่ต้องปฏิบัติตาม ปัจจุบันเขาออกแบบห้องสมุดทั้งหมดของเขาด้วยวิธีนี้: เขาใช้ตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กไม่ต่อเนื่องในชื่อไฟล์ของเขา ส่วนหัวบางส่วนของเขาไม่มีส่วนขยายใด ๆ ฉันเชื่อว่าการไม่มีส่วนขยายเป็นสิ่งที่สงวนไว้สำหรับไฟล์มาตรฐาน C ++ และการใช้ตัวอักษรตัวพิมพ์ใหญ่นั้นเกิดข้อผิดพลาดได้ง่าย (โดยเฉพาะอย่างยิ่งเมื่อคุณจัดการกับรหัสซึ่งมีความหมายว่าจะทำงานกับทั้ง Windows และ Linux) ประเด็นของเขาคือเขาปฏิบัติตามQtอนุสัญญา (แม้แต่รหัสที่ไม่ได้ใช้ Qt) และพูดว่า: "ถ้า Qt ทำอย่างนั้นมันก็ไม่เลวเลย" ตอนนี้ฉันพยายามเปิดใจ แต่ฉันรู้สึกแย่จริง ๆ เมื่อฉันต้องทำงานกับห้องสมุดของเขา มีกฎทั่วไปที่กำหนดขึ้นเกี่ยวกับเรื่องนี้หรือไม่? มาตรฐานบอกอะไรเกี่ยวกับมันบ้างไหม? ขอบคุณมาก.
9 c++  naming 

2
การเลียนแบบ“ RBAC AuthZ” ของ Exchange Server ในแอปพลิเคชันของฉันเอง… (มีอะไรที่คล้ายกันไหม)
Exchange 2010 มีรูปแบบการมอบหมายที่กลุ่มwinrm cmdlets ถูกจัดกลุ่มอย่างเป็นสาระสำคัญในบทบาทและบทบาทที่กำหนดให้กับผู้ใช้ ( แหล่งรูปภาพ ) นี่เป็นโมเดลที่ยอดเยี่ยมและมีความยืดหยุ่นโดยพิจารณาว่าฉันจะใช้ประโยชน์จาก PowerShell ได้อย่างไรในขณะที่ใช้เทคโนโลยีระดับต่ำ (WCF, SOAP และอื่น ๆ ) และไม่ต้องใช้ซอฟต์แวร์เพิ่มเติมในฝั่งไคลเอ็นต์ ( แหล่งรูปภาพ ) คำถาม (s) มีวิธีใดบ้างที่ฉันจะใช้ประโยชน์จากรูปแบบการมอบหมายของ Exchange ในแอปพลิเคชัน. NET ของฉัน มีใครพยายามเลียนแบบรุ่นนี้หรือไม่? ถ้าฉันต้องเริ่มจากศูนย์ฉันจะเลียนแบบวิธีการนี้อย่างไร

2
“ โดเมน” หมายถึงอะไรเมื่ออ้างถึง DDD
โดเมนคำหมายถึงอะไรเกี่ยวกับการออกแบบ / การขับเคลื่อน ไม่ได้อยู่ในแง่ของความหมายหรือนิยามเชิงวิชาการ แต่ในแง่ของวิธีการปรับเปลี่ยนกระบวนการหรือปรัชญา? ฉันอ่านโพสต์: /software/57828/your-software-problem-solution-approach ฉันเจอคำศัพท์ DDD และไม่รู้จริงๆว่ามันหมายถึงอะไร

8
การใช้การลองใช้ในที่สุด (ไม่จับ) vs การตรวจสอบความถูกต้องของ enum
ฉันได้อ่านคำแนะนำเกี่ยวกับคำถามนี้ว่าควรจะจัดการกับข้อยกเว้นอย่างไรให้ใกล้เคียงกับที่เป็นไปได้มากที่สุด ขึ้นเขียงของฉันในการปฏิบัติที่ดีที่สุดคือว่าควรใช้ลอง / catch / ในที่สุดเพื่อส่งกลับ enum (หรือ int ที่แสดงถึงค่า 0 สำหรับข้อผิดพลาด 1 สำหรับตกลง 2 สำหรับคำเตือน ฯลฯ ขึ้นอยู่กับกรณี)เพื่อให้ คำตอบอยู่ในระเบียบเสมอหรือควรให้ข้อยกเว้นดำเนินไปเพื่อที่ส่วนการเรียกจะจัดการกับมัน จากสิ่งที่ฉันสามารถรวบรวมได้สิ่งนี้อาจแตกต่างกันไปขึ้นอยู่กับกรณีดังนั้นคำแนะนำดั้งเดิมดูเหมือนแปลก ตัวอย่างเช่นในเว็บเซอร์วิสคุณต้องการกลับสู่สถานะของหลักสูตรเสมอดังนั้นข้อยกเว้นใด ๆ จะต้องได้รับการจัดการทันที แต่ให้พูดในฟังก์ชั่นที่โพสต์ / รับข้อมูลบางส่วนผ่าน http คุณต้องการ ข้อยกเว้น (ตัวอย่างเช่นในกรณีของ 404) ที่เพิ่งผ่านไปหนึ่งอันที่ยิงมัน หากคุณไม่ทำเช่นนั้นคุณจะต้องสร้างวิธีที่จะแจ้งส่วนการโทรของคุณภาพของผลลัพธ์ (ข้อผิดพลาด: 404) รวมถึงผลลัพธ์เอง แม้ว่าจะเป็นไปได้ที่จะลองจับข้อยกเว้น 404 ภายในฟังก์ชั่นตัวช่วยที่ได้รับ / โพสต์ข้อมูลคุณควรไหม มีเพียงฉันที่ใช้อักษรตัวเล็ก ๆ เพื่อแสดงสถานะในโปรแกรม (และจัดทำเอกสารอย่างเหมาะสม) แล้วใช้ข้อมูลนี้เพื่อจุดประสงค์ในการตรวจสอบความมีเหตุผล อัปเดต:ฉันคาดหวังว่าจะมีข้อยกเว้นร้ายแรง / ไม่ร้ายแรงสำหรับการจัดหมวดหมู่หลัก แต่ฉันไม่ต้องการรวมสิ่งนี้ไว้เพื่อไม่ให้อคติต่อคำตอบ …

5
การวิเคราะห์คำศัพท์ที่ไม่มีการแสดงออกปกติ
ฉันดู lexers สองสามตัวในระดับสูงกว่าต่างๆ ( Python , PHP , Javascriptและอื่น ๆ ) และพวกเขาทั้งหมดดูเหมือนจะใช้นิพจน์ปกติในรูปแบบเดียวหรืออีกรูปแบบหนึ่ง ในขณะที่ฉันแน่ใจว่า regex อาจเป็นวิธีที่ดีที่สุดในการทำสิ่งนี้ฉันสงสัยว่ามีวิธีใดบ้างที่จะได้รับการเลเยอร์พื้นฐานโดยไม่มีการแสดงออกปกติหรืออาจเป็นการแยกวิเคราะห์สตริงโดยตรง ใช่แล้วเป็นไปได้ไหมที่จะใช้การเรียงลำดับขั้นพื้นฐานบางอย่างในภาษาระดับสูง * โดยไม่ใช้นิพจน์ทั่วไปในรูปแบบใด ๆ * ภาษาระดับที่สูงขึ้นเป็นสิ่งต่าง ๆ เช่น Perl / PHP / Python / Javascript เป็นต้นฉันแน่ใจว่ามีวิธีที่จะทำได้ใน C

6
มันเป็นสิ่งสำคัญสำหรับการแก้ปัญหาที่จะมีประสิทธิภาพหรือไม่?
ฉันแก้ปัญหามากมายโดยส่วนใหญ่มาจาก Top Coder ฉันจะได้คำตอบสำหรับหลาย ๆ คน แต่ส่วนใหญ่ฉันจะได้คำตอบที่ไม่มีประสิทธิภาพ ในการใช้งานจริง - มันสำคัญหรือไม่ที่ทางออกของปัญหานั้นมีประสิทธิภาพ? ถ้าเป็นเช่นนั้นฉันจะปรับปรุงได้อย่างไร

4
เครื่องจักรสถานะลูกสามารถปล่อยการควบคุมกลับไปยังเครื่องสถานะหลักได้อย่างไร
เครื่องสถานะระดับบนสุดของฉันมีสถานะและขอบบางอย่าง ฉันจะเรียกสิ่งนี้ว่าเครื่องสถานะแม่ A ----> B ----> C สถานะใด ๆ ภายในเครื่องสถานะแม่สามารถเป็นเครื่องรัฐเกินไป ฉันจะเรียกเด็กเหล่านี้เครื่องจักรรัฐ ___________ / \ A ----> | B0->B1->B2 | ----> C \____________/ หากเครื่องสถานะแม่เปลี่ยนจาก A ถึง B, เครื่องสถานะของ B ใช้เวลามากกว่า เมื่อ B รันเสร็จสิ้นแล้วมันจะปล่อยการควบคุมไปยังเครื่องสถานะหลักและเปลี่ยนไปใช้สถานะ C ได้อย่างไร คุณใช้รูปแบบการออกแบบแบบใด หากคุณสงสัยว่าฉันมีเครื่องลูกแสดงสถานะภายในเครื่องแม่เพราะโครงการที่แน่นอนของฉันค่อนข้างซับซ้อนและเป็นเรื่องธรรมดาที่จะสรุปการทำงานภายในของสถานะลูก

3
ทำความเข้าใจข้อต่อที่แน่นหนาใน“ โลกแห่งความจริง”
ฉันจะไม่พูดอะไร "ชุมชน" เพราะฉันต้องการคำอธิบายที่ไม่ลำเอียง แต่สมมติว่าคุณกำลังสร้างโมดูลที่สามารถใช้ซ้ำได้และโมดูลนั้นต้องการโมดูลที่ต้องพึ่งพา 3+ และการลบ 1 ในนั้นทำให้เกิดข้อผิดพลาดไม่เฉพาะในแอปของคุณ ทั้งหมดซึ่งใช้โมดูลนี้ แต่โมดูลเอง จากความเข้าใจของฉัน (ซึ่งจะต้องผิด) ระบบโมดูลาร์ที่เชื่อมต่อกันอย่างอิสระจะไม่แตกหักโดยเพียงแค่ถอดโมดูลหนึ่งออก แอปควรยังคงทำงาน แต่ไม่มี "ฟีเจอร์" / โมดูลและตัวโมดูลเองไม่ควรทำให้ทุกอย่างไม่ทำงานเพียงเพราะไม่มีโมดูลที่เกี่ยวข้อง มันผิดหรือเปล่า? ถ้าเป็นเช่นนั้นหากโมดูลยังคงขึ้นอยู่กับจุดของทุกสิ่งที่ไม่ทำงานความแตกต่างระหว่างคับ / หลวมคลัป?

1
นัยกับอินเทอร์เฟซชัดเจน
ฉันคิดว่าฉันเข้าใจข้อ จำกัด ที่แท้จริงของการรวบรวมความแตกต่างของเวลาและความหลากหลายของเวลาทำงาน แต่อะไรคือความแตกต่างทางแนวคิดระหว่างอินเตอร์เฟสที่ชัดเจน (polymorphism แบบรันไทม์คือฟังก์ชันเสมือนและพอยน์เตอร์ / การอ้างอิง) และอินเทอร์เฟซโดยปริยาย (polymorphism เวลาคอมไพล์เช่น . ความคิดของฉันคือวัตถุสองชิ้นที่มีส่วนต่อประสานที่ชัดเจนเหมือนกันจะต้องเป็นวัตถุประเภทเดียวกัน (หรือมีบรรพบุรุษร่วมกัน) ในขณะที่วัตถุสองชิ้นที่มีส่วนต่อประสานแบบเดียวกันนั้นไม่จำเป็นต้องเป็นวัตถุชนิดเดียวกัน อินเทอร์เฟซที่พวกเขาทั้งสองเสนอสามารถมีฟังก์ชันการทำงานที่แตกต่างกันมาก ความคิดใด ๆ เกี่ยวกับเรื่องนี้? และหากวัตถุสองชิ้นมีอินเตอร์เฟสแบบนัยเดียวกันเหตุผลอะไร (ข้างๆประโยชน์ทางเทคนิคของการไม่ต้องใช้การส่งข้อมูลแบบไดนามิกที่มีตารางการค้นหาฟังก์ชั่นเสมือน ฯลฯ ) จะไม่มีวัตถุเหล่านี้สืบทอดมาจากวัตถุพื้นฐานที่ประกาศอินเตอร์เฟสนั้น ทำให้เป็นอินเทอร์เฟซที่ชัดเจนหรือไม่ อีกวิธีในการบอกว่า: คุณสามารถให้กรณีที่วัตถุสองอย่างที่เสนออินเทอร์เฟซแบบเดียวกัน (และสามารถใช้เป็นชนิดของคลาสเทมเพลตตัวอย่าง) ไม่ควรสืบทอดมาจากคลาสพื้นฐานที่ทำให้อินเทอร์เฟซนั้นชัดเจน? บางโพสต์ที่เกี่ยวข้อง: https://stackoverflow.com/a/7264550/635125 https://stackoverflow.com/a/7264689/635125 https://stackoverflow.com/a/8009872/635125 นี่คือตัวอย่างที่จะทำให้คำถามนี้เป็นรูปธรรมมากขึ้น: การเชื่อมต่อโดยนัย: class Class1 { public: void interfaceFunc(); void otherFunc1(); }; class Class2 { public: void interfaceFunc(); …

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