วิธีการออกแบบเพื่อลดการซับซ้อนของ software
ควรออกแบบให้เป็น Layer และ แต่ละ Layer ควรกำหนดจุดประสงค์ให้ชัดเจน
ภาพจากหนังสือ https://www.amazon.com/Grokking-Simplicity-software-functional-thinking/dp/1617296201
จากภาพด้านบนเราควรจะกำหนดวัตถุประสงค์ของแต่ละ layer ให้ชัดเจน และ call graph ก็ไม่ควรจะยุ่งเหยิง หรือมีลูกศรที่ข้าม layer และใน layer เดียวกันก็ไม่ควรจะมีที่เรียกกันเอง ( ถ้า function นั้นๆ เรียก function ใน layer เดียวกัน function นั้นก็ต้องอยู่บน layer ที่สูงกว่า )
Layer ที่อยู่ต่ำ คือ layer ที่เรียกใช้ function library ของภาษา หรือ system call ของ os ส่วน function ที่อยู่ชั้นบน คือ business domain layer ซึ่ง layer ที่อยู่ด้านบนถัดไปของ business domain layer ไม่สมควรที่จะรับรู้ data structure
Function ที่อยู่ layer บนมันจะเป็น function ที่มีการเปลี่ยนแปลงบ่อย มากกว่า function ที่อยู่ layer ต่ำกว่า
Function ที่อยู่ layer ด้านล่าง จะถูกใช้งานในหลายๆ function ที่อยู่ใน layer ที่สูงกว่า
Function ที่คุ้มค่าสำหรับ testing คือ function ที่อยุ่ใน layer ล่างๆ เพราะ เป็น function ที่ถูกเรียกใช้บ่อยจาก function ที่อยู่ใน layer ที่สูงกว่า
Articles
- การใช้เซ็นเซอร์ในฟาร์มผลไม้: เทคโนโลยีที่ช่วยแก้ไขปัญหาและเพิ่มประสิทธิภาพ
- เทคโนโลยีการเกษตรยุคใหม่: ช่วยเกษตรกรรุ่นใหม่แก้ไขปัญหาได้อย่างไร
- การพัฒนา Plugin สำหรับ Wazuh: เพิ่มความสามารถและการใช้งานที่หลากหลาย
- การใช้งาน Wazuh ในกรณีต่างๆ: การปกป้องและการตรวจสอบระบบอย่างมีประสิทธิภาพ
- แนะนำ Wazuh: ระบบความปลอดภัยและการตรวจสอบที่ครอบคลุม
- ตอนที่ 3: การผสานรวมการติดตามแบบเรียลไทม์ การรายงาน และการวิเคราะห์
- ตอนที่ 2: เจาะลึกคุณสมบัติของระบบการจัดการยานพาหนะ
- ตอนที่ 1: แนะนำระบบการจัดการยานพาหนะสำหรับธุรกิจรีไซเคิล
- เราจะเขียน OCPP server อย่างไร
- SEO ( Search Engine Optimization ) ฉบับเข้าใจง่ายๆ
- ความสามารถของระบบ SimpiEcommerce ( ECommerce System )
- เราจะทำให้ program ที่มีขั้นตอนการทำงานที่ซับซ้อน และ ต้องแบ่งงานให้กับ programmer หลายๆ คนได้อย่างไร ?
- สร้าง business workflow process system ด้วย networkx.org
- Facebook Pixel ทำงานอย่างไร ?
- ข้อแนะนำพัฒนา E-Commerce Website ด้วย Shopify
- บางทีความรู้ก็เป็นสิ่งที่จำกัดความคิดสร้างสรรค์ได้เหมือนกัน
- Web Socket คืออะไร
- เทคนิคที่ช่วยให้เขียน program ให้ดีขึ้นอย่างรวดเร็ว
- มาสร้าง Blockchain ของเราเองกันเถอะ ( 2 ) , Mining
- มาสร้าง Blockchain ของเราเองกันเถอะ ( 1 )
- decentralized network system คืออะไร ?
- Blockchain Technology จะช่วยแก้ปัญหาของชาวสวนและผู้บริโภคได้อย่างไร ?
- เครื่องวัดอัตราไหลของน้ำด้วย Arduino และ YF-S201 Hall Effect Water Flow Meter Sensor
- เราจะเข้าใจ code ของ project ที่มีความซับซ้อนได้อย่างไร ?
- Photogrammetry และ Metaverse
- ทำแอปประชุม online ด้วย Zoom SDK และ Ionic mobile framework
- Smart Factory หรือ Industry 4.0 คืออะไร ?
- Live Sport Engagement Technology ช่วยเพิ่มประสบการณ์ของแฟนกีฬาได้อย่างไร
- 5 ข้อ ที่เข้าใจผิดในการเขียน code
- ERP ( Enterprise Resource Planning ) คืออะไร