วิธีการออกแบบเพื่อลดการซับซ้อนของ 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 ที่สูงกว่า
Related Posts
- CeleryとRabbitMQの連携方法: 総合的な概要
- วิธีการทำงานร่วมกันระหว่าง Celery และ RabbitMQ: ภาพรวมที่ครอบคลุม
- How Celery and RabbitMQ Work Together: A Comprehensive Overview
- วิธีเริ่มต้นโครงการ Django ด้วย Vim, Docker Compose, MySQL, และ Bootstrap
- How to Start a Django Project with Vim, Docker Compose, MySQL, and Bootstrap
- OCPPシステムをゼロから構築するための包括的ガイド
- ทำไมการเข้าใจ Design Pattern จึงสำคัญสำหรับโครงการขนาดใหญ่เช่น Odoo
- なぜOdooのような大規模プロジェクトでデザインパターンを理解する必要があるのか
- Why Understanding Design Patterns is Essential in Large Projects Like Odoo
- ระบบเฟอร์ทิเกชันอัตโนมัติในเกษตรกรรมสมัยใหม่
Articles
- CeleryとRabbitMQの連携方法: 総合的な概要
- วิธีการทำงานร่วมกันระหว่าง Celery และ RabbitMQ: ภาพรวมที่ครอบคลุม
- How Celery and RabbitMQ Work Together: A Comprehensive Overview
- วิธีเริ่มต้นโครงการ Django ด้วย Vim, Docker Compose, MySQL, และ Bootstrap
- How to Start a Django Project with Vim, Docker Compose, MySQL, and Bootstrap
- ออกแบบและปรับปรุงเว็บไซต์ให้มีประสิทธิภาพ: คู่มือสำหรับเจ้าของธุรกิจและผู้จัดการไอที
- ウェブサイトをデザインし最適化する: 事業主とITマネージャー向けの包括的ガイド
- Design and Optimize Your Website: A Comprehensive Guide for Business Owners and IT Managers
- 音声の明瞭さを向上させる: ミュージシャンとサウンドエンジニアのためのガイド
- การเพิ่มความชัดเจนของเสียง: คู่มือสำหรับนักดนตรีและวิศวกรเสียง
- Unlocking Clarity in Audio: A Guide for Musicians and Sound Engineers
- AIツール(ChatGPT)の効果的な使い方
- วิธีทำงานกับ AI อย่างมีประสิทธิภาพ เช่น ChatGPT
- How to Work Effectively with AI Like ChatGPT
- データ駆動型インサイトで観光を向上させる方法:日本から学ぶ
- การใช้ข้อมูลเพื่อพัฒนาการท่องเที่ยว: เรียนรู้จากญี่ปุ่น
- How Data-Driven Insights Can Improve Tourism: Lessons from Japan
- 数字孪生:如何革新尖竹汶府的旅游业
- ดิจิทัลทวิน: การปฏิวัติการท่องเที่ยวจันทบุรี
- How Digital Twins Can Revolutionize Chanthaburi Tourism
Our Products
Related Posts
- CeleryとRabbitMQの連携方法: 総合的な概要
- วิธีการทำงานร่วมกันระหว่าง Celery และ RabbitMQ: ภาพรวมที่ครอบคลุม
- How Celery and RabbitMQ Work Together: A Comprehensive Overview
- วิธีเริ่มต้นโครงการ Django ด้วย Vim, Docker Compose, MySQL, และ Bootstrap
- How to Start a Django Project with Vim, Docker Compose, MySQL, and Bootstrap
- OCPPシステムをゼロから構築するための包括的ガイド
- ทำไมการเข้าใจ Design Pattern จึงสำคัญสำหรับโครงการขนาดใหญ่เช่น Odoo
- なぜOdooのような大規模プロジェクトでデザインパターンを理解する必要があるのか
- Why Understanding Design Patterns is Essential in Large Projects Like Odoo
- ระบบเฟอร์ทิเกชันอัตโนมัติในเกษตรกรรมสมัยใหม่
Articles
- CeleryとRabbitMQの連携方法: 総合的な概要
- วิธีการทำงานร่วมกันระหว่าง Celery และ RabbitMQ: ภาพรวมที่ครอบคลุม
- How Celery and RabbitMQ Work Together: A Comprehensive Overview
- วิธีเริ่มต้นโครงการ Django ด้วย Vim, Docker Compose, MySQL, และ Bootstrap
- How to Start a Django Project with Vim, Docker Compose, MySQL, and Bootstrap
- ออกแบบและปรับปรุงเว็บไซต์ให้มีประสิทธิภาพ: คู่มือสำหรับเจ้าของธุรกิจและผู้จัดการไอที
- ウェブサイトをデザインし最適化する: 事業主とITマネージャー向けの包括的ガイド
- Design and Optimize Your Website: A Comprehensive Guide for Business Owners and IT Managers
- 音声の明瞭さを向上させる: ミュージシャンとサウンドエンジニアのためのガイド
- การเพิ่มความชัดเจนของเสียง: คู่มือสำหรับนักดนตรีและวิศวกรเสียง
- Unlocking Clarity in Audio: A Guide for Musicians and Sound Engineers
- AIツール(ChatGPT)の効果的な使い方
- วิธีทำงานกับ AI อย่างมีประสิทธิภาพ เช่น ChatGPT
- How to Work Effectively with AI Like ChatGPT
- データ駆動型インサイトで観光を向上させる方法:日本から学ぶ
- การใช้ข้อมูลเพื่อพัฒนาการท่องเที่ยว: เรียนรู้จากญี่ปุ่น
- How Data-Driven Insights Can Improve Tourism: Lessons from Japan
- 数字孪生:如何革新尖竹汶府的旅游业
- ดิจิทัลทวิน: การปฏิวัติการท่องเที่ยวจันทบุรี
- How Digital Twins Can Revolutionize Chanthaburi Tourism