System.out.println() ในภาษา Java ถือว่าออกแบบผิดหลักการข้อใด?
.
อันนี้อ้างอิงตามตำรา
Head First Design Patterns (2008) หน้า 268 📗 📗
(ใครมีตำราก็ไปกางเปิดดูได้)
.
👧 คำตอบ การออกแบบคำสั่งชุดนี้ในภาษา Java
จะถือว่าผิดหลักการออกแบบโปรแกรมเรื่อง
"Principle of Least Knowledge"
แปลเป็นไทย "หลักการของความรู้น้อยที่สุด"
.
Principle of Least Knowledge
เป็นหลักการออกแบบ Object ให้รู้จักเพื่อนๆ ที่ใกล้ชิดไม่กี่คน 👩❤️💋👨
.
.
จากประโยคคำสั่ง System.out.println()
System กว่าจะรู้จัก println() ก็ต้องผ่าน out มันไกลเกินไปลูกพี่
ซึ่งข้อเสียมันทำให้โค้ดมีลักษณะยึดติดกันเกินไป
.
ศัพท์ทาง Object Oriented Programming โค้ดจะมีอาการเรียกว่า "coupling" โค้ดเป็นคู่สามีภรรยา เกี่ยวดองกันแนบแน่น
เช่น ถ้าเกิด out มีการแก้ไขก็จะกระเทือนต่อ println() และ System ไปด้วย (อันนี้แค่ยกตัวอย่างนะ ของจริงอาจไม่กระทบเลยก็ได้)
.
ในขณะที่ภาษาสมัยใหม่พวก Swift, Kotlin
จะเขียนสั้นๆ print(), println() ตามลำดับ
ไม่ต้องมาทำพิธีกรรมเรียกหลายชั้น หลายซ้อนแบบนี้
ก็เราแค่แสดงผลออกทางหน้าคอนโซลนี้น่า
มันจะทำอะไรให้มันวุ่นวายไปใย
.
จะขอยกตัวอย่างโค้ดในหนังสือเช่น
station.getThermometer().getTemperature();
เขียนแบบนี้ จะเห็นว่ามันยาวเหยียด
ถ้าเขียนครั้งเดียวพอทนได้
แต่ถ้าให้เขียนซ้ำๆ มันขี้เกียจเหมือนกันเนอะ
.
สำหรับวิธีแก้ไขปัญหาโค้ดที่ละเมิดหลัก
"Principle of Least Knowledge"
ไม่ยากเลย เราสามารถใช้หลักของดีไซน์แพทเทิร์นตัวหนึ่ง
นั้นก็คือ "เดอะเฟสไทยแลนด์"
...เฮยไม่ใช่แหละ 😜 😜
.
ใช้แพทเทิร์นที่เรียกว่า "The Facade"
เพื่อแก้ไขโค้ดลักษณะนี้
สนใจก็อย่าลืมไปทบทวน
ดีไซน์แพทร์นของ GOF นะ (ขอไม่ลงรายละเอียด)
.
แต่จะว่าไปมันก็เป็นแค่แนวคิดและหลักการเฉยๆ
แล้วแต่เราแหละ เขียนผิดหลักการยังไง
โค้ดก็รันได้ ปกติอยู่แล้ว
มันเป็นแนวคิด ไม่ใช้กฏหมายบังคับซะเมื่อไร
.
เพราะถ้าคนออกแบบเขาจะเอาแบบนี้
ชอบแบบนี้ ชอบที่เป็นแบบนี้ ชอบแววตาแบบนี้
ชอบรอยยิ้มแบบนี้ ก็ชอบคนนี้ ...โฮ้ว~~~
.
ถ้าทำแล้วโค้ดไร้บั๊ก ลูกค้าแฮปปี้พอใจ จ่ายเงินให้เรา ก็คือโอเคสองฝ่าย
ส่วนโปรแกรมเมอร์ที่มารับไม้ต่อ ไม่ชอบดีไซน์โค้ดแบบนี้
ก็จับ refactoring เอาเองแล้วกันเด้อ
.
อีกอย่างที่ยกตัวอย่างมาเป็นภาษา Java
ซึ่ง System.out.println() ใช้กันเป็นเรื่องปกติ
บิดา Java เขาจัดวาง println() ให้อยู่เป็นสัดเป็นส่วนอย่างนี้เอง
.
แต่เราต้องยอมรับว่า IDE ปัจจุบันมันฉลาดมาก
บางตัวแค่พิมพ์ S ก็แสนรู้
เดาใจเราออกว่าเราจะพิมพ์ System.out.println();
IDE สมัยนี้มันช่วยเราได้เยอะเลยทีเดียว
ไม่ต้องเสียเวลาพิมพ์ยาวเมื่อยมือ เสียเวลา
แต่ถ้ายังใช้ notepad อยู่ ก็ต้องทนเหนื่อยเอา
.
.
.
.
.
.
.
.
.
.
.
.
ทิ้งท้ายก่อนจากกันไป
<ประชาสัมพันธ์ขายของ>
หนังสือ "โปรแกรมเมอร์ก็รวยได้ ด้วยเส้นทางเอาท์ซอร์สสายดำ"
หนังสือที่จะเล่าเส้นทางสายเอาท์ซอร์สเงินดีรายได้งาม
✔ สำหรับตัวอย่างหนังสือ 👇
PDF: https://drive.google.com/file/d/1tAnMozeYd63dcbBGTQmT_ZrpSaamZS3e/edit
หรือดูจาก youtube: https://youtu.be/Ljf9iJhLcIs
.
รายละเอียดอ่านเพิ่มเติมได้ที่่ 👇
https://www.patanasongsivilai.com/blog/sale_book_rich_with_outsource/
.
✍ เขียนโดย โปรแกรมเมอร์ไทย thai programmer
เราจะผ่านโควิด-19 ไปกันนะทุกคคนนน
「gof pdf」的推薦目錄:
- 關於gof pdf 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
- 關於gof pdf 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
- 關於gof pdf 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的精選貼文
- 關於gof pdf 在 reading/GOF Design Patterns.pdf at master - GitHub 的評價
- 關於gof pdf 在 GoF Design Patterns - 的評價
- 關於gof pdf 在 Useful posters of the GoF patterns – Celinio's technical blog 的評價
- 關於gof pdf 在 YouTube Live documents | StatsMedic 的評價
gof pdf 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
ใครชอบการเขียนโปรแกรมเชิงวัตถุ (Object-oriented programming: OOP)
สรุป design pattern ของ GOF
สามารถดาวน์โหลดเป็น PDF ได้
http://www.mcdonaldland.info/files/designpatterns/designpatternscard.pdf
gof pdf 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的精選貼文
ใครกำลังเรียน หรือสนใจเรื่องดีไซน์แพทเทิร์น ( Design Patterns)
มีของ GOF 23 ตัว และแบบอื่นๆ เพิ่มมาอีก รวมทั้งสิ้น 34 แบบ
โค้ดตัวอย่างใช้ภาษา Java เน้นไปทางตัวอย่างโค้ด คำอธิบายไม่เยอะเท่าไร ออกแนวสรุปๆ ติวเตอร์
เป็น PDF ภาษาอังกฤษ ความหนา 167 หน้า
https://www.tutorialspoint.com/…/design_pattern_tutorial.pdf
gof pdf 在 GoF Design Patterns - 的推薦與評價
During the course the authors identified the lack of a quick-guide book to the basic GoF1 design patterns. A book that could be used as a bare bone reference as ... ... <看更多>
gof pdf 在 Useful posters of the GoF patterns – Celinio's technical blog 的推薦與評價
The 23 Gang of Four (GoF) patterns are generally considered the foundation ... UML Quick Reference Card2 | PDF | Computer Engineering | Computer Programming. ... <看更多>
gof pdf 在 reading/GOF Design Patterns.pdf at master - GitHub 的推薦與評價
A list of computer-science readings I recommend. Contribute to amilajack/reading development by creating an account on GitHub. ... <看更多>