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 ไปกันนะทุกคคนนน
「head first java」的推薦目錄:
- 關於head first java 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳貼文
- 關於head first java 在 เกมถูกบอกด้วย v.2 Facebook 的最讚貼文
- 關於head first java 在 เกมถูกบอกด้วย v.2 Facebook 的最佳解答
- 關於head first java 在 Code for Head First Java - GitHub 的評價
- 關於head first java 在 Head First Java - Class 01 - YouTube 的評價
- 關於head first java 在 Head First Java, 2Nd Edition in 2021 - Programming - Pinterest 的評價
- 關於head first java 在 Head First Java 2nd Ed- Page 44, Chaper 2 [closed] - Stack ... 的評價
- 關於head first java 在 Head First Java, 2nd Edition | - UCSB CS156 的評價
- 關於head first java 在 Head First Java 3rd Edition PDF Github - LunaticAI 的評價
head first java 在 เกมถูกบอกด้วย v.2 Facebook 的最讚貼文
https://www.humblebundle.com/books/programming-languages-oreilly-books?partner=ggcp
แพ็คใหม่จาก Humble นะครัช ครั้งนี้คือ HUMBLE BOOK BUNDLE: PROGRAMMING LANGUAGES BY O'REILLY รายละเอียดมีดังนี้
.
จ่าย $1 รับ
- 97 Things Every Java Programmer Should Know
- Think Julia
- Programming Scala - 2nd Edition
- Introducing Go
- Learning Perl - 7th Edition
.
จ่าย $8 รับเพิ่ม
- Learning SQL - 3rd Edition
- Programming PHP - 4th Edition
- R Cookbook - 2nd Edition
- Head First Kotlin
- Using Asyncio in Python
.
จ่าย $15 รับเพิ่ม
- Programming Rust
- C# 8.0 in a Nutshell
- Fluent Python
- Learning Java - 5th Edition
- Programming TypeScript
.
รายละเอียดเพิ่มเติมดูที่หน้าร้านค้า
https://www.humblebundle.com/books/programming-languages-oreilly-books?partner=ggcp
.
อนึ่ง eBook ภาษาอังกฤษ
.
อสอง ดีลนี้หมดเวลาในอีก 20 วันกว่าๆ
.
อสาม ก็ตามชื่อแพ็คคือรวมหนังสือเกี่ยวกับการเขียนโปรแกรมในภาษาต่างๆ ใครที่สนใจหรือทำงานด้านนี้อยู่ก็จัดกันไป
.
หนังสือดีราคาถูกแบบนี้
ไม่สอยได้ไงพี่น้องงงงง
https://www.humblebundle.com/books/programming-languages-oreilly-books?partner=ggcp
-------------------------------
แค่เติมเงินก็ได้ Steam Wallet แล้ว >> GetSteamWallet.com
-------------------------------
Call of Duty: Modern Warfare ลด 35% เหลือ $38.99 ประมาณ 1240 บาท (BattleNet) ดูที่นี่ - https://bit.ly/3aihnnK
head first java 在 เกมถูกบอกด้วย v.2 Facebook 的最佳解答
แพ็คใหม่จาก Humble นะครัช ครั้งนี้คือ HUMBLE BOOK BUNDLE: O'REILLY CLASSICS BY O'REILLY รายละเอียดมีดังนี้
.
จ่าย $1 รับ
- 97 Things Every Programmer Should Know
- JavaScript: The Good Parts
- Revolution in the Valley
- The Cathedral & the Bazaar
- Programming Perl - Fourth Edition
.
จ่าย $8 รับเพิ่ม
- Java in a Nutshell - Seventh Edition
- SSH: The Secure Shell The Definitive Guide - Second Edition
- Git Pocket Guide
- vi and Vim Editors Pocket Reference - Second Edition
- Hackers & Painters
.
จ่าย $15 รับเพิ่ม
- DNS and BIND - Fifth Edition
- Data Analysis with Open Source Tools
- Information Architecture - Foruth Edition
- Head First Java - Second Edition
.
รายละเอียดเพิ่มเติมดูที่หน้าร้านค้า
https://www.humblebundle.com/…/oreilly-classics-oreilly-boo…
.
อนึ่ง eBook
.
อสอง ดีลนี้หมดเวลาในอีก 20 วัน
.
อสาม แพ็ครวมหนังสือคลาสสิคของ O’Reilly ที่เป็นเนื้อหาเกี่ยวกับ Java บ้าง Perl บ้าง จิปาถะสำหรับสายโปรแกรมเมอร์บ้าง
.
หนังสือดีราคาถูกแบบนี้
ไม่สอยได้ไงพี่น้องงงงง
https://www.humblebundle.com/…/oreilly-classics-oreilly-boo…
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
Steam Wallet, Battle.net Code, PSN ซื้อง่าย ได้โค๊ดทันที >> GGKeyStore.com
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
Humble Choice ประจำเดือน ธ.ค. จ่าย $15 เลือกรับสตีมคีย์ Shadow of the Tomb Raider, Blasphemous, Ancestor Lagacy, Phantom Doctrine และอื่นๆ ดูที่นี่ - http://bit.ly/2KA2c0c
head first java 在 Head First Java, 2Nd Edition in 2021 - Programming - Pinterest 的推薦與評價
Jun 16, 2021 - Head First Java, 2nd Edition [Sierra, Kathy, Bates, Bert] on Amazon.com. *FREE* shipping on qualifying offers. Head First Java, 2nd Edition. ... <看更多>
head first java 在 Code for Head First Java - GitHub 的推薦與評價
Code for Head First Java. Contribute to bethrobson/Head-First-Java development by creating an account on GitHub. ... <看更多>