Software Architecture

dependency injection

มาทำความรู้จัก Dependency Injection และ Mocking กัน

Dependency Injection (DI) และ Mocking สองคำนี้หลายๆ ท่านอาจจะเคยได้ยินผ่านหูกันมาบ้างแล้ว แต่ก็อาจสงสัยว่ามันคืออะไรกันแน่ แล้วทำไมเมื่อมี Dependency Injection แล้วก็ต้องมีคำว่า Mocking ตามมา สองคำนี้มีดีอย่างไร? ลองมาดูกันครับ 😉 Dependency คำว่า Dependency นั้นตามความหมายก็คือ...

solid

SOLID หลักการพื้นฐานที่โปรแกรมเมอร์ควรรู้ (ตอนที่ 5 – DIP)

และก็มาถึงหลักการข้อสุดท้ายของ SOLID Principles ที่ชื่อว่า Dependency Inversion Principle (DIP) กันแล้ว มีหลายคนอาจจะสับสนกับอีกหลักการที่ชื่อว่า Dependency Injection ซึ่งจริงๆ แล้วสองหลักการนี้ไม่เหมือนกันนะครับ Dependency Inversion != Dependency Injection แต่ก็ยังมีความเกี่ยวเนื่องกันเพราะว่าการที่เราจะทำตามหลักการ...

solid

SOLID หลักการพื้นฐานที่โปรแกรมเมอร์ควรรู้ (ตอนที่ 4 – ISP)

สำหรับหลัก ISP ของ SOLID Principles ตอนนี้อาจจะเน้นหนักไปทาง Interface นิดนะครับ ดังนั้นถ้าท่านใดยังไม่ค่อยคุ้นกับ Interface แนะนำให้ลองอ่านลิงค์ตามด้านล่างก่อนเริ่มนะครับ PHP Interface Java Interface Why interface is useful? (Stackexchange)...

solid

SOLID หลักการพื้นฐานที่โปรแกรมเมอร์ควรรู้ (ตอนที่ 3 – LSP)

มาถึงหลักการข้อที่ 3 ของ SOLID Principles กันแล้วนะครับ และหลักการนี้มีชื่อว่า Liskov Substitution Principle (LSP) ซึ่งถูกตั้งตามชื่อของผู้ที่คิดหลักการนี้ขึ้นมาเป็นคนแรก Barbara Liskov [1] และในภายหลังก็ถูกนำมารวมอยู่ใน SOLID Principles ด้วย มาดูกันครับว่าหลักการนี้พูดถึงอะไรบ้าง...

solid

SOLID หลักการพื้นฐานที่โปรแกรมเมอร์ควรรู้ (ตอนที่ 2 – OCP)

หลังจากเราได้ทราบถึงหลักการแรกของ SOLID Principles กันไปแล้วนั่นก็คือ Single Responsibility (SRP) ซึ่งพูดถึงการกำหนดขอบเขตการทำงานและหน้าที่ของ Class ให้มีเพียงอย่างเดียว สำหรับบทความนี้เราจะมาดูหลักการที่ชื่อว่า Open Closed Principle (OCP) กันครับ สารบัญสำหรับตอนอื่นๆ ตอนที่ 1 –...

solid

SOLID หลักการพื้นฐานที่โปรแกรมเมอร์ควรรู้ (ตอนที่ 1 – SRP)

หลายๆ ครั้งระหว่างที่เขียนโค้ดอยู่นั้นเราอาจจะนึกถามตัวเองบ้างว่า “ทำไม Method นี้ยาวจัง สร้าง Method ใหม่ดีมั้ย?“,  “เอ๊ะ! หรือแยก 5 บรรทัดนี้ออกไปอยู่อีก Class ดี?” แต่เมื่อนั่งคิดไปมาอยู่ซักพักก็จบลงด้วยการปล่อยให้โค้ดเป็นไปตามเดิมเพราะไม่รู้ว่าควรจะเริ่มจากตรงไหนดี ในความเป็นจริงแล้วไม่มีโค้ดไหนที่ถูกต้องไปซะทั้งหมดหรือผิดโดยสิ้นเชิงถ้าหากโค้ดนั้นสามารถทำงานตามความต้องการ (Requirement) ได้อย่างถูกต้อง อย่างไรก็แล้วแต่การเขียนโค้ดให้มันทำงานได้ครั้งแรกมันช่างง่ายดายและรวดเร็ว แต่มันมักจะเป็นฝันร้ายของพวกเราชาวโปรแกรมเมอร์เสมอเมื่อต้องกลับมาแก้ไขหรือเพิ่มเติมสิ่งที่เราได้ทำลงไปแล้วหรือจะเป็นของคนอื่นก็ตาม ดังนั้นโค้ดที่เราเขียนออกมาตั้งแต่แรกนั้นควรจะเป็นอะไรที่เข้าใจและแก้ไขได้ง่ายทั้งต่อตัวเองและผู้อื่น...