【#Code4Fun】這次是用 Python 來重構那套運費的範例啦。
心有餘力之餘,就來週更一下 coding for fun 的影片。
影片這裡去:https://www.youtube.com/watch?v=gTEexJCpXcA&feature=youtu.be&ab_channel=JoeyChen
【感想】一看就知道不是寫 Python 出身的,滿滿的 Java/C# 影片。
PyCharm 沒支援 parameter object 就算了,跟 parameter 相關的,都因為其彈性的緣故,也幾乎都沒支援(除非是簡單的值),是一種「其實我可以做,但我怕重構的功能把你本來的東西弄壞了」
沒事,也不是第一次遇到弱型別的語言啦,就是得手動繞一下,多組合一些小細節而已。
啊...我突然發現,我少抽了 product.size() 那一段了,那一段也蠻有趣的,因為 PyCharm 也沒支援 Move method,怎麼繞過去比較省事,要不就留給大家自己摸索了。(我錄影片碰到最大的問題,竟然是硬碟空間不夠了!)
※ 想持續週更,一個是得有時間,另一個是得有人看啊。大家的訂閱就是我的動力啊。
#一起來極速開發
#一起來重構
#一起來kata
#一起來Code4Fun
同時也有15部Youtube影片,追蹤數超過2萬的網紅Untyped 對啊我是工程師,也在其Youtube影片中提到,關於程式語言 -入門該學哪個程式語言?工程師都用什麼程式語言?最強程式語言是?| Which Programming Language to Learn First (ft. 立秦、蝦蝦) - 學習程式設計,新手要學什麼程式語言?Python, Java, C++, JavaScript ... ...
「java for object」的推薦目錄:
- 關於java for object 在 91 敏捷開發之路 Facebook 的精選貼文
- 關於java for object 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
- 關於java for object 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
- 關於java for object 在 Untyped 對啊我是工程師 Youtube 的精選貼文
- 關於java for object 在 Untyped 對啊我是工程師 Youtube 的精選貼文
- 關於java for object 在 prasertcbs Youtube 的最讚貼文
- 關於java for object 在 for (Object object : list) [java] and index element - Stack Overflow 的評價
- 關於java for object 在 Java物件導向重觀念迅速教學(1) Class and Object - YouTube 的評價
- 關於java for object 在 Should we avoid object creation in Java? - Software ... 的評價
- 關於java for object 在 Java Object Layout (JOL) - GitHub 的評價
- 關於java for object 在 使用ObjectMapper 完成json 和Java Object 互相轉換 - Kucw's ... 的評價
java for object 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
https://github.com/…/java-design-patt…/blob/master/README.md
ลิงค์ที่แปะไว้เป็นลิงค์บน Gitbub
ที่เขารวบรวม design patterns
เอาไว้ใช้แก้โจทย์ปัญหาที่พบเจอบ่อยๆ
ในการเขียนโปรแกรม
โดยตัวอย่างโค้ดเขียนด้วยภาษา Java
พร้อมคำอธิบายแต่ละ pattern
ไว้อย่างครบถ้วน (ไลเซ่นเป็น MIT)
ที่สำคัญไม่ใช้มีแค่ design pattern ตระกูล GOF (Gang of Four) จำนวน 23 ตัวซะเมื่อไร มันมีมากกว่านั้นให้ศึกษาเยอะมากจริงๆ นับดูคร่าวๆ 90 กว่าตัวด้วยมั่ง (บางอันยังไม่รู้จักเลยครับ แฮๆๆ)
แต่ก่อนจะศึกษา Design pattern ไม่ว่าจะรูปแบบใด
ก็แนะนำให้อ่านหลักการออกแบบและพัฒนาซอฟต์แวร์ แนวคิดจะอิงกับวิธีเขียนโปรแกรมแบบ Object oriented (โปรแกรมเชิงวัตถุ) ก็ลองเข้าไปอ่านศึกษาดูลิงค์นี้นะครับ http://java-design-patterns.com/principles/
.
✍เขียนโดย โปรแกรมเมอร์ไทย thai programmer
https://github.com/iluwatar/java-design-patterns/blob/master/README.md
Links posted as links on Gitbub
Where he gathered the design pattern
It's for solving common problems.
In programming.
By example, code written in Java language
With a description of each pattern
Completely (Lysen is MIT)
The important thing is that I don't use. I have only design pattern of the GOF (Gang of Four) family. When it's more than that, I study a lot. I counted over 90 of them. (I don't know it yet. Haha. )
But before studying Design Pattern in any form.
It's recommended to read the design and software development principles. The concept is based on how to write Object oriented programming (Objective programming). Try to read this link. http://java-design-patterns.com/principles/
.
✍ Written by Thai programmer thai coderTranslated
java for object 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
Functional programming ชื่อไทยคือ “การโปรแกรมเชิงฟังก์ชั่น” ชื่อย่อ FP เป็นแนวคิดหนึ่งของการเขียนโปรแกรม (programming paradigm) ชื่อขึ้นต้นด้วย functional แต่ไม่ได้มีดีแค่ประกาศ function ปุ๊บเสร็จ แล้วเรียกใช้ มันมีเบื้องลึกมากกว่านั้นแน่ๆ
🤔 มันจะต่างจากการเขียนโปรแกรมทีละสเตป ตามลำดับก่อนหลัง มีการวนลูป ที่เน้นแก้ state ของโปรแกรมเป็นหลัก
แต่แนวทาง functional programming จะไม่แก้ state ของโปรแกรมเลย ไม่มีการวนลูบ (ใช้ recursion แทน)
ซึ่งแนวคิดก็ต้องเน้นสร้างฟังก์ชั่นนั่นแหละ แต่หลักสำคัญต้องออกแบบให้หลีกเลี่ยง side-effect (ผลข้างเคียง) ที่จะเกิดต่อ function ตัวเอง และตัวอื่น โดยมีหลักยึด 2 อย่างใหญ่คือ
👉 1) function ที่สร้างขึ้นมา เมื่อมีอินพุตค่าเดิมส่งไปหา (เป็นค่าอากิวเมนต์) ไม่ว่าจะกี่ครั้งก็ตาม function จะรีเทิร์นค่าออกมาเหมือนเดิมทุกครั้ง ...(ไอเดียมาจากฟังก์ชั่นในทางคณิตศาสตร์เลยครับ)
เช่น
func(1); // เรียกครั้งที่ 1 ก็จะได้ค่ารีเทิร์นออกมาเป็น 30
func(1); // เรียกครั้งที่ 2 ก็จะได้ค่ารีเทิร์นออกมาเป็น 30 เหมือนเดิม
func(1); // เรียกครั้งที่ 3 ก็จะได้ค่ารีเทิร์นออกมาเป็น 30 เหมือนเดิม
👉 2) function ต้องไม่ไปเปลี่ยนแปลงค่าของตัวแปรจำพวก global variable หรือ static variable หรือตัวแปรที่อยู่ข้างนอก function ...เพื่อไม่ให้ function อื่นได้รับผลกระทบ
ถ้า function ที่เราประกาศไว้ มีคุณสมบัติ 2 อย่างที่ว่านี้ ก็จะเรียกว่า pure function (ฟังก์ชั่นบริสุทธ์แท้ๆ) 👌
สำหรับอีกคุณลักษณะหนึ่งที่จะไม่กล่าวถึงไม่ได้เลยก็คือ
👉 3) First-class function และ Higher-order function
คำว่า first-class function มาจาก "first class citizen" ที่หมายถึง "พลเมืองชั้นหนึ่ง" ดังนั้น first-class function จะหมายถึง ฟังก์ชั่นเป็นพลเมืองชั้นหนึ่งจริงๆ เลยนะ
คุณสมบัตินี้ function จะถูกมองเป็นข้อมูลประเภทหนึ่ง ไม่ต่างจากข้อมูลตัวเลข สตริง บูลีน ด้วยเหตุนี้จึงสามารถนำ function ไปกำหนดค่าให้กับตัวแปรยังได้เลย เช่น
x = function(){ .....}
ส่วนคุณสมบัติ Higher-order function:
คุณสมบัตินี้หมายถึง เราสามารถใช้ function ส่งไปเป็นค่าอากิวเมนต์แก่ function ตัวอื่น หรือ function จะรีเทิร์นออกมาจาก function ตัวอื่นออกมาก็ได้ด้วย เช่น
- ส่ง function_A เป็นค่าอากิวเมนต์ไปให้ function_X(function_A);
- จากนั้น function_X() ก็จะสร้าง function_Y แล้วรีเทิร์นมันออกมาได้
😜 ===ประโยชน์ functional programming===
🔥 เอาไปเขียนโปรแกรมโดยไม่มีการวนลูป เช่น ไม่ต้องมานั่งเขียน for … หรือ while… วนลูป เพื่อเข้าถึงข้อมูลโครงสร้างพวก array , list ฯลฯ เป็นต้น
🔥 การทำ currying หมายถึงทำให้ฟังก์ชั่น จากเดิมที่มี parameter หลายตัวให้เหลือแค่ตัวเดียว ด้วยการส่งผลลัพธ์เป็น function ที่รับ Parameter ที่เหลือ ...ใช้เทคนิค closure
🔥 หรือจะทำ function Composition (เอาฟังก์ชั่นมาประกอบกัน)
🔥 หรือจะเอาไปใช้เขียนโปรแกรมแบบ parallel computing (โปรแกรมคู่ขนาน)
🔥 หรือจะเขียนโปรแกรมแบบ asynchronous โดยที่โค้ดหลักไม่ต้องรอการประมวลผลฝั่ง I/O ให้แล้วเสร็จ โค้ดหลักสามารถข้ามไปยังบรรทัดถัดไปก่อนได้เลย
🔥 Testability — ผลพลอยได้ก็คือ เอาแนวคิดนี้ไปใช้ทำ test function ได้ง่าย โดยแต่ละการ test จะเป็นอิสระต่อกัน เมื่อใช้วิธีการเดิมในการทดสอบ 10 ครั้ง ก็ควรได้ผลเหมือนเดิม 10 ครั้ง เป็นต้น
++++ 🤔 ++++++
เมื่อเปรียบเทียบกับแนวคิด OOP (โปรแกรมเชิงวัตถุ object-oriented programming)
ถ้าโจทย์ปัญหาเป็น parallel computing หรือ asynchronous การใช้แนวคิด functional programming ดูแล้วคล่องแคล่วปราดเปรียวไม่ยุ่งยาก
เนื่องจากแนวคิด functional programming ไม่มีอะไรซับซ้อนมากนัก เขียนโปรแกรมก็จะกระชับ ง่าย...ง๊าย เมื่อเทียบกับ OOP ที่โค้ดจะเยอะกว่า เพราะมี class มากมาย ยิ่งถ้า inheritance โดยให้มีการสืบทอดสมาชิกหลายชั้น ก็จะสับสนตาลาย มึนงงได้ คงต้องพึ่ง IDE ให้เป็นพี่เลี้ยงช่วยแนะนำว่ามีสมาชิกอะไรที่สืบทอดมา
แต่จุดเด่นเรื่อง OOP จะมีความเป็น Modularity ที่สูง โค้ดที่เขียนเป็นอ็อบเจ็กต์แต่ละตัวจะเป็นอิสระต่อกัน เนื่องจากข้อมูลหรือ state ซึ่งอยู่ภายในตัวอ็อบเจ็กต์เอง จะมีเป็นของใครของมัน ขณะเดียวกันแต่ละอ็อบเจ็กต์จะปฏิสัมพันธ์กันได้ สามารถเอาอ็อบเจ็กต์ที่มีอยู่แล้วมา reuse ใช้ได้ง่าย รวมทั้งถอดเข้าถอดออกขณะโปรแกรม run time
แล้วแต่สถานการณ์ว่าจะใช้แนวทางเขียนโปรแกรมแบบไหน
แต่ก็ยอมรับว่าบางทีเขียนแบบ functional programming ก็ยากต่อการทำความเข้าใจ เพราะโค้ดมันสั้นกระชับเกิ๊น
ยิ่งหลายภาษาโปรแกรมมิ่งสมัยใหม่ในปัจจุบันนี้ มีการแทรกแนวคิด functional programming เข้ามา นอกเหนือจากแนวคิด OOP เช่น JavaScript, Python, Java, C#, Swift, Kotlin แต่ก็อาจประยุกต์แนวคิดนี้ได้ไม่ 100% มากนัก
จะไม่เหมือนบ้างภาษาเช่น Haskell ที่มาพร้อมกับ immutable data structure หมายถึงข้อมูลที่ไม่สามารถแก้ไขค่าได้เลย จึงทำให้ function กลายเป็น functional programming แท้ๆ (pure function)
✍ สรุป แนวคิดนี้ไม่ได้เรื่องใหม่มีมานานก่อนบางคน ...อุ้แว ...อุ้แวเกิดเสียอีก แต่ตอนโน่นแนวคิดนี้ยังไม่ดังเปรี้ยงเหมือน OOP คนที่เขียนภาษา JavaScript รวมไปถึง Node.js ย่อมใช้หลักการนี้อย่างไม่รู้ตัว ยิ่งภาษาสมัยใหม่หลายตัวก็ยอมรับแนวคิด functional programming เข้ามาในภาษาเรียบร้อยแล้ว ไม่มีนี้ถือว่าแปลกมาก
--------
เขียนโดย โปรแกรมเมอร์ไทย thai programmer
java for object 在 Untyped 對啊我是工程師 Youtube 的精選貼文
關於程式語言 -入門該學哪個程式語言?工程師都用什麼程式語言?最強程式語言是?| Which Programming Language to Learn First
(ft. 立秦、蝦蝦)
-
學習程式設計,新手要學什麼程式語言?Python, Java, C++, JavaScript ... 程式語言種類那麼多,哪個程式語言最適合初學入門者?哪個程式語言最受歡迎最厲害最強大?工程師又都用什麼程式語言呢?對啊我是工程師是寫什麼程式語言的工程師?
對啊我是工程師很常被問到這類問題,所以,這次會分享我對程式語言的介紹與看法,以及初學者如何選擇並學習程式語言,並分享學習程式設計前,要有的程式語言基本概念。釐清一些大家對程式語言常有的誤會,或許能讓你在學習的路上少一點困惑。
這次更很榮幸的邀請到特別來賓,兩位厲害的工程師 一 立秦、蝦蝦,一起來跟大家分享他們對程式語言的喜好與看法。同樣是工程師,大家對程式語言的想法真的都不盡相同呢~
希望大家看完能夠收穫滿滿,一起迎接嶄新的一年。新年快樂!
-
歡迎留言告訴我你的想法,或是你想認識的程式語言唷!
每(隔週)週六晚上9點更新,請記得開啟YouTube🔔通知!
-
【上集連結】
程式語言入門須知-上集 | 新手該學哪個程式語言?工程師都用什麼程式語言?最強程式語言是? | What you should know about programming languages
[https://youtu.be/fcmXuZtsQ6Y]
【愛屋及烏】
Facebook 臉書粉專 [https://www.facebook.com/untyped/]
【相關連結】
Java 與 C++ 比較: [https://www.educba.com/c-plus-plus-vs-java/]
-
Untyped 對啊我是工程師 - There are so many data types in the world of computer science, so are the people who write the code. We aim to UNTYPE the stereotype of engineers and of how coding is only for a certain type of people.
一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的女工程師。
-
Music: [https://www.bensound.com](https://www.bensound.com/)
#codingforbeginners #programminglanguages #程式語言
java for object 在 Untyped 對啊我是工程師 Youtube 的精選貼文
關於程式語言 -入門該學哪個程式語言?工程師都用什麼程式語言?最強程式語言是?| Programming Languages for Beginners
-
學習程式設計,新手要學什麼程式語言?Python, Java, C++, JavaScript ... 程式語言種類那麼多,哪個程式語言最適合初學入門者?哪個程式語言最受歡迎最厲害最強大?工程師又都用什麼程式語言呢?對啊我是工程師是寫什麼程式語言的工程師?
對啊我是工程師很常被問到這類問題,所以,這次會分享我對程式語言的介紹與看法,以及初學者如何選擇並學習程式語言,並分享學習程式設計前,要有的程式語言基本概念。釐清一些大家對程式語言常有的誤會,或許能讓你在學習的路上少一點困惑。
-
歡迎留言告訴我你的想法,或是你想認識的程式語言唷!
每(隔週)週六晚上8點更新,請記得開啟YouTube🔔通知!
也幫我到Facebook粉專按讚唷!https://www.facebook.com/untyped
-
【下集】
程式語言入門須知-上集 | 新手該學哪個程式語言?工程師都用什麼程式語言?最強程式語言是? | What you should know about programming languages
https://youtu.be/fcmXuZtsQ6Y
【相關連結】
大學修的程式語言課程:[https://courses.cs.washington.edu/courses/cse341]
Java & JavaScript 差異: [https://www.thesoftwareguild.com/faq/difference-between-java-and-javascript/]
-
Untyped - There are so many data types in the world of computer science, so are the people who write the code. We aim to UNTYPE the stereotype of engineers and of how coding is only for a certain type of people.
對啊我是工程師:一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的女工程師。
#codingforbeginners #programminglanguages #程式語言
java for object 在 prasertcbs Youtube 的最讚貼文
ดาวน์โหลดไฟล์ตัวอย่างได้ที่ https://goo.gl/Qf7O6A
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่ ► https://www.youtube.com/subscription_center?add_user=prasertcbs
playlist สอนภาษา C เบื้องต้น ► https://www.youtube.com/watch?v=Z_u8Nh_Zlqc&list=PLoTScYm9O0GHHgz0S1tSyIl7vkG0y105z
playlist สอนภาษา C++ เบื้องต้น ► https://www.youtube.com/watch?v=_NHyJBIxc40&list=PLoTScYm9O0GEfZwqM2KyCBcPTVsc6cU_i
playlist สอนภาษา C# เบื้องต้น ► https://www.youtube.com/watch?v=hhl49jwOIZI&list=PLoTScYm9O0GE4trr-XPozJRwaY7V9hx8K
playlist สอนภาษาจาวา Java เบื้องต้น ► https://www.youtube.com/watch?v=O3rW9JvADfU&list=PLoTScYm9O0GF26yW0zVc2rzjkygafsILN
playlist สอนการทำ Unit Test ภาษาจาวา Java ► https://www.youtube.com/watch?v=R11yg8hKApU&list=PLoTScYm9O0GHiK3KNdH_PrNB0G3-kb1Bi
playlist สอนภาษาไพธอน Python เบื้องต้น ► https://www.youtube.com/watch?v=DI7eca5Kzdc&list=PLoTScYm9O0GH4YQs9t4tf2RIYolHt_YwW
playlist สอนภาษาไพธอน Python การเขียนโปรแกรมเชิงวัตถุ (OOP: Object-Oriented Programming) ► https://www.youtube.com/watch?v=4bVBSluxJNI&list=PLoTScYm9O0GF_wbU-7layLaSuHjzhIRc9
playlist สอนภาษา R เบื้องต้น ► https://www.youtube.com/watch?v=oy4qViQLXsI&list=PLoTScYm9O0GF6qjrRuZFSHdnBXD2KVICp
playlist สอนภาษา PHP เบื้องต้น ► https://www.youtube.com/watch?v=zlRDiXjYVo4&list=PLoTScYm9O0GH_6LARFxozL_viEsXV2wgO
java for object 在 Should we avoid object creation in Java? - Software ... 的推薦與評價
I was told by a colleague that in Java object creation is the most expensive operation you could perform. So I can only conclude to create as few objects as ... ... <看更多>
java for object 在 for (Object object : list) [java] and index element - Stack Overflow 的推薦與評價
... <看更多>