การมีเพศสัมพันธ์แบบหลวมที่ไม่มีกรณีใช้เป็นรูปแบบต่อต้านหรือไม่?


22

การมีเพศสัมพันธ์อย่างหลวม ๆ นั้นสำหรับนักพัฒนาบางคนจอกศักดิ์สิทธิ์ของซอฟต์แวร์ที่ได้รับการออกแบบมาอย่างดี แน่นอนว่าเป็นสิ่งที่ดีเมื่อทำให้โค้ดมีความยืดหยุ่นมากขึ้นเมื่อเผชิญกับการเปลี่ยนแปลงที่อาจเกิดขึ้นในอนาคตอันใกล้หรือหลีกเลี่ยงการทำซ้ำรหัส

ในทางกลับกันความพยายามในการเพิ่มองค์ประกอบทางอ้อมในโปรแกรมหนึ่ง ๆ อย่างหลวม ๆ ซึ่งเป็นการเพิ่มความซับซ้อนมักทำให้ยากต่อการเข้าใจและทำให้มีประสิทธิภาพน้อยลง

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


1
ผลประโยชน์ส่วนใหญ่มาพร้อมกับค่าใช้จ่าย ใช้หากผลประโยชน์มีค่าเกินกว่าต้นทุน
LennyProgrammers

4
คุณลืมด้านพลิกของเหรียญคับปลิ้งหลวมและนั่นคือhigh cohesionสิ่งที่ไม่มีสิ่งอื่นเป็นของเสียจากความพยายามและภาพประกอบการขาดความเข้าใจพื้นฐานอย่างใดอย่างหนึ่ง

คำตอบ:


13

ค่อนข้าง.

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

ในทางตรงกันข้ามการเอาชนะการเปลี่ยนแปลงที่ไร้สาระจะมีความซับซ้อนและความพยายามที่ไม่จำเป็นมากมาย YAGNI อย่างที่คุณพูดกระทบหัวมัน


22

การเขียนโปรแกรมฝึก X ดีหรือไม่ดี? เห็นได้ชัดว่าคำตอบคือเสมอ "มันขึ้นอยู่กับ."

หากคุณกำลังดูรหัสของคุณสงสัยว่า "รูปแบบ" คุณสามารถฉีดอะไรแล้วคุณทำผิด

หากคุณกำลังสร้างซอฟต์แวร์เพื่อให้วัตถุที่ไม่เกี่ยวข้องกันไม่ได้คลุกคลีกันคุณก็กำลังทำในสิ่งที่ถูกต้อง

หากคุณ "วิศวกรรม" โซลูชันของคุณเพื่อให้สามารถขยายและเปลี่ยนแปลงได้ไม่ จำกัด คุณจะต้องทำให้มันซับซ้อนมากขึ้น

ฉันคิดว่าในตอนท้ายของวันคุณจะถูกทิ้งให้อยู่กับความจริงเดียว: มันซับซ้อนมากขึ้นหรือน้อยลงที่จะแยกวัตถุหรือไม่? หากมีความซับซ้อนน้อยกว่าที่จะจับคู่พวกเขานั่นคือทางออกที่ถูกต้อง ถ้ามันซับซ้อนน้อยกว่าที่จะแยกพวกมันออกนั่นคือทางออกที่ถูกต้อง

(ตอนนี้ฉันทำงานใน codebase ที่ค่อนข้างเล็กซึ่งทำงานง่ายในวิธีที่ซับซ้อนมากและส่วนหนึ่งของสิ่งที่ทำให้มันซับซ้อนมากคือการขาดความเข้าใจในคำว่า "การแต่งงานกัน" และ "การทำงานร่วมกัน" ในส่วนของต้นฉบับ นักพัฒนา.)


4
ฉันทำสิ่งนี้เมื่อวันก่อน: ฉันคิดว่าฉันจะต้องมีความไม่ลงรอยกันระหว่างสองคลาส "ในกรณี" จากนั้นฉันก็เจ็บที่หัวของฉันพยายามที่จะแก้ปัญหาบางอย่างฉีกทางอ้อมและมีความสุขมาก
Frank Shearar

3

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

มันอาจนำไปสู่โค้ดที่ยากต่อการติดตามไม่ใช่เพียงเพราะมีไฟล์ต้นฉบับอีกมากมาย (สมมติว่านี่เป็นคลาสที่แยกต่างหาก) แต่เนื่องจากไม่มีคลาสเดียวที่ดูเหมือนจะมีจุดประสงค์

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

อีกครั้งจากมุมมองที่คล่องแคล่วคุณไม่ต้องการระดับการประดิษฐ์ทางอ้อมเนื่องจากเป็นการสูญเสียความพยายามในบางสิ่งที่อาจไม่จำเป็น มันง่ายกว่ามากในการรีแฟคเตอร์เมื่อความต้องการเป็นจริง

โดยรวมแล้วคุณต้องการคลัปสูงในโมดูลของคุณและคลัปคับระหว่างพวกเขา หากไม่มีคัปปลิ้งสูงคุณอาจไม่มีการติดต่อกัน


1

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

เมื่อมันมาถึงสถานการณ์ที่ดูเหมือนว่าส่วนประกอบต่าง ๆ ควรมีการเชื่อมโยงกันอย่างมีเหตุผลฉันจะมองหาข้อโต้แย้งที่น่าสนใจก่อนที่ฉันจะเริ่มแยกพวกเขาออก

ฉันเดาว่าหลักการที่ฉันทำงานด้วยการฝึกฝนประเภทนี้ส่วนใหญ่เป็นความเฉื่อย ฉันมีความคิดว่าฉันต้องการให้โค้ดทำงานอย่างไรและถ้าฉันสามารถทำเช่นนั้นได้โดยไม่ทำให้ชีวิตลำบากขึ้นฉันก็จะทำ ถ้าทำมันจะทำให้การพัฒนาหนักขึ้น แต่การบำรุงรักษาและการทำงานในอนาคตง่ายขึ้นฉันจะลองและคาดเดาว่ามันจะทำงานได้ดีขึ้นตลอดอายุการใช้งานของรหัสและใช้เป็นแนวทางของฉันหรือไม่ ไม่งั้นมันจะต้องเป็นจุดออกแบบที่มีเจตนาที่จะคุ้มค่า


1

คำตอบง่ายๆคือคลัปต่อหลวมเป็นสิ่งที่ดีเมื่อทำอย่างถูกต้อง

หากหลักการของฟังก์ชั่นหนึ่งมีวัตถุประสงค์ตามแล้วก็ควรจะง่ายพอที่จะทำตามสิ่งที่เกิดขึ้น นอกจากนี้รหัสคู่หลวมดังต่อไปนี้เป็นเรื่องของหลักสูตรโดยไม่มีความพยายามใด ๆ

กฎการออกแบบที่เรียบง่าย: 1. อย่าสร้างความรู้ในหลาย ๆ รายการให้กลายเป็นจุดเดียว 2. ฟังก์ชั่นเดียว - วัตถุประสงค์เดียว (วัตถุประสงค์นั้นอาจมีหลายด้านเช่นในอาคาร) 3. หนึ่งโมดูล - หนึ่งชุดที่ชัดเจนของฟังก์ชั่นที่เกี่ยวข้องกัน - วัตถุประสงค์ที่ชัดเจนหนึ่งเดียว 4. ถ้าคุณไม่สามารถทดสอบหน่วยมันได้อย่างง่ายดาย วัตถุประสงค์ง่าย ๆ

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

สิ่งที่น่าเศร้าเกี่ยวกับการพัฒนาซอฟต์แวร์ในปัจจุบันคือ 90% ของผู้คนพัฒนาระบบใหม่และไม่มีความสามารถในการทำความเข้าใจระบบเก่าและไม่เคยมีเมื่อระบบได้รับสถานะที่ไม่ดีต่อสุขภาพเนื่องจากการซ่อมแซมอย่างต่อเนื่องของบิตและชิ้นส่วน


0

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

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

ความเสถียรมีประโยชน์มากสำหรับฉัน ฉันชอบสร้างชุดโค้ดที่ผ่านการทดสอบอย่างดีซึ่งมีเหตุผลน้อยลงเรื่อย ๆ ที่จะเปลี่ยนแปลงในอนาคต นั่นไม่ใช่ความฝันที่ไพเราะ ฉันมีรหัส C ที่ฉันใช้และใช้อีกครั้งตั้งแต่ปลาย 80 ซึ่งไม่ได้เปลี่ยนเลยตั้งแต่นั้นมา มันเป็นที่ยอมรับในระดับต่ำเช่นพิกเซลและพิกเซลที่เกี่ยวข้องกับรูปทรงเรขาคณิตในขณะที่สิ่งต่าง ๆ ในระดับที่สูงขึ้นของฉันล้าสมัย แต่มันก็เป็นสิ่งที่ยังคงช่วยได้มาก นั่นหมายถึงห้องสมุดที่พึ่งพาสิ่งต่าง ๆ น้อยลงหากไม่มีสิ่งภายนอกเลย ความน่าเชื่อถือจะเพิ่มขึ้นเรื่อย ๆ หากซอฟต์แวร์ของคุณขึ้นอยู่กับรากฐานที่มั่นคงซึ่งพบว่ามีเหตุผลเพียงเล็กน้อยหรือไม่มีเหตุผลที่จะเปลี่ยนแปลง ชิ้นส่วนที่เคลื่อนไหวได้น้อยลงเป็นสิ่งที่ดีจริงๆแม้ว่าในทางปฏิบัติชิ้นส่วนที่เคลื่อนไหวนั้นมีจำนวนมากกว่าชิ้นส่วนที่มั่นคง

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

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

การมีเพศสัมพันธ์และความเสถียรตัวอย่าง ECS

ฉันยังรักระบบส่วนประกอบของเอนทิตีและพวกเขาแนะนำการมีเพศสัมพันธ์อย่างแน่นหนามากเพราะระบบในการพึ่งพาองค์ประกอบทั้งหมดเข้าถึงและจัดการข้อมูลดิบโดยตรงเช่น:

ป้อนคำอธิบายรูปภาพที่นี่

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

ในขณะที่ทางเลือกคู่ที่หลวมอาจเป็น:

ป้อนคำอธิบายรูปภาพที่นี่

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

นอกจากนี้หากมีการเปลี่ยนแปลงการออกแบบกับสิ่งใดก็ตามคุณจะได้รับความเสียหายเพิ่มมากขึ้นกว่า ECS และโดยทั่วไปจะมีเหตุผลและการล่อลวงสำหรับการเปลี่ยนแปลงการออกแบบมากขึ้นเนื่องจากทุกสิ่งพยายามที่จะให้ส่วนต่อประสานและวัตถุที่เป็นนามธรรม ที่มาพร้อมกับความคิดที่ว่าสิ่งเล็ก ๆ น้อย ๆ ทุกอย่างจะพยายามกำหนดข้อ จำกัด และข้อ จำกัด ในการออกแบบและข้อ จำกัด เหล่านั้นมักจะเป็นสิ่งที่รับประกันการเปลี่ยนแปลงการออกแบบ ฟังก์ชั่นมีข้อ จำกัด มากขึ้นและต้องทำให้สมมติฐานการออกแบบมากมายกว่าข้อมูลดิบ

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

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

ฟังก์ชั่นที่เสถียรที่สุดที่ฉันเคยเขียน (แบบที่ฉันใช้และนำมาใช้ใหม่ตั้งแต่ปลายยุค 80 โดยไม่ต้องเปลี่ยนเลย) คือทุกสิ่งที่อาศัยข้อมูลดิบเช่นฟังก์ชันเรขาคณิตที่เพิ่งได้รับการยอมรับ ลอยและจำนวนเต็มไม่ได้คนที่ขึ้นอยู่กับความซับซ้อนMeshวัตถุหรือIMeshอินเตอร์เฟซหรือเวกเตอร์ / คูณเมทริกซ์ซึ่งก็ขึ้นอยู่กับfloat[]หรือไม่หนึ่งที่ขึ้นอยู่กับdouble[]FancyMatrixObjectWhichWillRequireDesignChangesNextYearAndDeprecateWhatWeUse

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